1 1.1 christos /* Register test program. 2 1.1 christos 3 1.11 christos Copyright 2007-2024 Free Software Foundation, Inc. 4 1.1 christos 5 1.1 christos This file is part of GDB. 6 1.1 christos 7 1.1 christos This program is free software; you can redistribute it and/or modify 8 1.1 christos it under the terms of the GNU General Public License as published by 9 1.1 christos the Free Software Foundation; either version 3 of the License, or 10 1.1 christos (at your option) any later version. 11 1.1 christos 12 1.1 christos This program is distributed in the hope that it will be useful, 13 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 14 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 1.1 christos GNU General Public License for more details. 16 1.1 christos 17 1.1 christos You should have received a copy of the GNU General Public License 18 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 1.1 christos 20 1.1 christos void 21 1.1 christos read_regs (unsigned long long regs[16], unsigned long control_regs[6]) 22 1.1 christos { 23 1.1 christos asm volatile ("wstrd wR0, %0" : "=m" (regs[0])); 24 1.1 christos asm volatile ("wstrd wR1, %0" : "=m" (regs[1])); 25 1.1 christos asm volatile ("wstrd wR2, %0" : "=m" (regs[2])); 26 1.1 christos asm volatile ("wstrd wR3, %0" : "=m" (regs[3])); 27 1.1 christos asm volatile ("wstrd wR4, %0" : "=m" (regs[4])); 28 1.1 christos asm volatile ("wstrd wR5, %0" : "=m" (regs[5])); 29 1.1 christos asm volatile ("wstrd wR6, %0" : "=m" (regs[6])); 30 1.1 christos asm volatile ("wstrd wR7, %0" : "=m" (regs[7])); 31 1.1 christos asm volatile ("wstrd wR8, %0" : "=m" (regs[8])); 32 1.1 christos asm volatile ("wstrd wR9, %0" : "=m" (regs[9])); 33 1.1 christos asm volatile ("wstrd wR10, %0" : "=m" (regs[10])); 34 1.1 christos asm volatile ("wstrd wR11, %0" : "=m" (regs[11])); 35 1.1 christos asm volatile ("wstrd wR12, %0" : "=m" (regs[12])); 36 1.1 christos asm volatile ("wstrd wR13, %0" : "=m" (regs[13])); 37 1.1 christos asm volatile ("wstrd wR14, %0" : "=m" (regs[14])); 38 1.1 christos asm volatile ("wstrd wR15, %0" : "=m" (regs[15])); 39 1.1 christos 40 1.1 christos asm volatile ("wstrw wCSSF, %0" : "=m" (control_regs[0])); 41 1.1 christos asm volatile ("wstrw wCASF, %0" : "=m" (control_regs[1])); 42 1.1 christos asm volatile ("wstrw wCGR0, %0" : "=m" (control_regs[2])); 43 1.1 christos asm volatile ("wstrw wCGR1, %0" : "=m" (control_regs[3])); 44 1.1 christos asm volatile ("wstrw wCGR2, %0" : "=m" (control_regs[4])); 45 1.1 christos asm volatile ("wstrw wCGR3, %0" : "=m" (control_regs[5])); 46 1.1 christos } 47 1.1 christos 48 1.1 christos void 49 1.1 christos write_regs (unsigned long long regs[16], unsigned long control_regs[6]) 50 1.1 christos { 51 1.1 christos asm volatile ("wldrd wR0, %0" : : "m" (regs[0])); 52 1.1 christos asm volatile ("wldrd wR1, %0" : : "m" (regs[1])); 53 1.1 christos asm volatile ("wldrd wR2, %0" : : "m" (regs[2])); 54 1.1 christos asm volatile ("wldrd wR3, %0" : : "m" (regs[3])); 55 1.1 christos asm volatile ("wldrd wR4, %0" : : "m" (regs[4])); 56 1.1 christos asm volatile ("wldrd wR5, %0" : : "m" (regs[5])); 57 1.1 christos asm volatile ("wldrd wR6, %0" : : "m" (regs[6])); 58 1.1 christos asm volatile ("wldrd wR7, %0" : : "m" (regs[7])); 59 1.1 christos asm volatile ("wldrd wR8, %0" : : "m" (regs[8])); 60 1.1 christos asm volatile ("wldrd wR9, %0" : : "m" (regs[9])); 61 1.1 christos asm volatile ("wldrd wR10, %0" : : "m" (regs[10])); 62 1.1 christos asm volatile ("wldrd wR11, %0" : : "m" (regs[11])); 63 1.1 christos asm volatile ("wldrd wR12, %0" : : "m" (regs[12])); 64 1.1 christos asm volatile ("wldrd wR13, %0" : : "m" (regs[13])); 65 1.1 christos asm volatile ("wldrd wR14, %0" : : "m" (regs[14])); 66 1.1 christos asm volatile ("wldrd wR15, %0" : : "m" (regs[15])); 67 1.1 christos 68 1.1 christos asm volatile ("wldrw wCSSF, %0" : : "m" (control_regs[0])); 69 1.1 christos asm volatile ("wldrw wCASF, %0" : : "m" (control_regs[1])); 70 1.1 christos asm volatile ("wldrw wCGR0, %0" : : "m" (control_regs[2])); 71 1.1 christos asm volatile ("wldrw wCGR1, %0" : : "m" (control_regs[3])); 72 1.1 christos asm volatile ("wldrw wCGR2, %0" : : "m" (control_regs[4])); 73 1.1 christos asm volatile ("wldrw wCGR3, %0" : : "m" (control_regs[5])); 74 1.1 christos } 75 1.1 christos 76 1.1 christos int 77 1.1 christos main () 78 1.1 christos { 79 1.1 christos unsigned long long regs[16]; 80 1.1 christos unsigned long control_regs[6]; 81 1.1 christos 82 1.1 christos read_regs (regs, control_regs); 83 1.1 christos write_regs (regs, control_regs); 84 1.1 christos 85 1.1 christos return 0; 86 1.1 christos } 87