/* $Id: reg.h,v 1.2 1997/06/24 23:19:55 davem Exp $ * linux/asm-sparc64/reg.h * Layout of the registers as expected by gdb on the Sparc * we should replace the user.h definitions with those in * this file, we don't even use the other * -miguel * * The names of the structures, constants and aliases in this file * have the same names as the sunos ones, some programs rely on these * names (gdb for example). * */ #ifndef __SPARC64_REG_H #define __SPARC64_REG_H struct regs { int r_psr; #define r_ps r_psr int r_pc; int r_npc; int r_y; int r_g1; int r_g2; int r_g3; int r_g4; int r_g5; int r_g6; int r_g7; int r_o0; int r_o1; int r_o2; int r_o3; int r_o4; int r_o5; int r_o6; int r_o7; }; struct fpq { unsigned int *addr; unsigned ing instr; }; struct fq { union { double whole; struct fpq fpq; } FQu; }; #define FPU_REGS_TYPE unsigned int #define FPU_FSR_TYPE unsigned struct fp_status { union { FPU_REGS_TYPE Fpu_regs[32]; double Fpu_dregs[16]; } fpu_fr; FPU_FSR_TYPE Fpu_fsr; unsigned Fpu_flags; unsigned Fpu_extra; unsigned Fpu_qcnt; struct fq Fpu_q[16]; }; #define fpu_regs f_fpstatus.fpu_fr.Fpu_regs #define fpu_dregs f_fpstatus.fpu_fr.Fpu_dregs #define fpu_fsr f_fpstatus.Fpu_fsr #define fpu_flags f_fpstatus.Fpu_flags #define fpu_extra f_fpstatus.Fpu_extra #define fpu_q f_fpstatus.Fpu_q #define fpu_qcnt f_fpstatus.Fpu_qcnt struct fpu { struct fp_status f_fpstatus; }; struct regs64 { unsigned long r_g1; unsigned long r_g2; unsigned long r_g3; unsigned long r_g4; unsigned long r_g5; unsigned long r_g6; unsigned long r_g7; unsigned long r_o0; unsigned long r_o1; unsigned long r_o2; unsigned long r_o3; unsigned long r_o4; unsigned long r_o5; unsigned long r_o6; unsigned long r_o7; unsigned long tstate; unsigned long tpc; unsigned long tnpc; unsigned int y; unsigned int fprs; }; struct fp_status64 { unsigned long regs[32]; unsigned long fsr; }; #endif /* __SPARC64_REG_H */