1 /* 2 * linux/asm-sparc/reg.h 3 * Layout of the registers as expected by gdb on the Sparc 4 * we should replace the user.h definitions with those in 5 * this file, we don't even use the other 6 * -miguel 7 * 8 * The names of the structures, constants and aliases in this file 9 * have the same names as the sunos ones, some programs rely on these 10 * names (gdb for example). 11 * 12 */ 13 14 #ifndef __SPARC_REG_H 15 #define __SPARC_REG_H 16 17 struct regs { 18 int r_psr; 19 #define r_ps r_psr 20 int r_pc; 21 int r_npc; 22 int r_y; 23 int r_g1; 24 int r_g2; 25 int r_g3; 26 int r_g4; 27 int r_g5; 28 int r_g6; 29 int r_g7; 30 int r_o0; 31 int r_o1; 32 int r_o2; 33 int r_o3; 34 int r_o4; 35 int r_o5; 36 int r_o6; 37 int r_o7; 38 }; 39 40 struct fpq { 41 unsigned long *addr; 42 unsigned long instr; 43 }; 44 45 struct fq { 46 union { 47 double whole; 48 struct fpq fpq; 49 } FQu; 50 }; 51 52 #define FPU_REGS_TYPE unsigned int 53 #define FPU_FSR_TYPE unsigned 54 55 struct fp_status { 56 union { 57 FPU_REGS_TYPE Fpu_regs[32]; 58 double Fpu_dregs[16]; 59 } fpu_fr; 60 FPU_FSR_TYPE Fpu_fsr; 61 unsigned Fpu_flags; 62 unsigned Fpu_extra; 63 unsigned Fpu_qcnt; 64 struct fq Fpu_q[16]; 65 }; 66 67 #define fpu_regs f_fpstatus.fpu_fr.Fpu_regs 68 #define fpu_dregs f_fpstatus.fpu_fr.Fpu_dregs 69 #define fpu_fsr f_fpstatus.Fpu_fsr 70 #define fpu_flags f_fpstatus.Fpu_flags 71 #define fpu_extra f_fpstatus.Fpu_extra 72 #define fpu_q f_fpstatus.Fpu_q 73 #define fpu_qcnt f_fpstatus.Fpu_qcnt 74 75 struct fpu { 76 struct fp_status f_fpstatus; 77 }; 78 79 #endif /* __SPARC_REG_H */ 80