1 /* $NetBSD: reg.h,v 1.4 2000/06/04 09:30:44 tsubai Exp $ */ 2 3 #ifndef _POWERPC_REG_H_ 4 #define _POWERPC_REG_H_ 5 6 #include <sys/_types.h> 7 8 /* Must match struct trapframe */ 9 struct reg { 10 __register_t fixreg[32]; 11 __register_t lr; 12 __register_t cr; 13 __register_t xer; 14 __register_t ctr; 15 __register_t pc; 16 }; 17 18 struct fpreg { 19 double fpreg[32]; 20 double fpscr; 21 }; 22 23 /* Must match pcb.pcb_vec */ 24 struct vmxreg { 25 __uint32_t vr[32][4]; 26 __uint32_t pad[2]; 27 __uint32_t vrsave; 28 __uint32_t vscr; 29 }; 30 31 struct dbreg { 32 unsigned int junk; 33 }; 34 35 #ifdef __LP64__ 36 /* Must match struct trapframe */ 37 struct reg32 { 38 __int32_t fixreg[32]; 39 __int32_t lr; 40 __int32_t cr; 41 __int32_t xer; 42 __int32_t ctr; 43 __int32_t pc; 44 }; 45 46 struct fpreg32 { 47 struct fpreg data; 48 }; 49 50 struct vmxreg32 { 51 struct vmxreg data; 52 }; 53 54 struct dbreg32 { 55 struct dbreg data; 56 }; 57 58 #define __HAVE_REG32 59 #endif 60 61 #ifdef _KERNEL 62 /* 63 * XXX these interfaces are MI, so they should be declared in a MI place. 64 */ 65 int fill_regs(struct thread *, struct reg *); 66 int set_regs(struct thread *, struct reg *); 67 int fill_fpregs(struct thread *, struct fpreg *); 68 int set_fpregs(struct thread *, struct fpreg *); 69 int fill_dbregs(struct thread *, struct dbreg *); 70 int set_dbregs(struct thread *, struct dbreg *); 71 72 /* 73 * MD interfaces. 74 */ 75 void cpu_save_thread_regs(struct thread *); 76 77 #ifdef COMPAT_FREEBSD32 78 struct image_params; 79 80 int fill_regs32(struct thread *, struct reg32 *); 81 int set_regs32(struct thread *, struct reg32 *); 82 void ppc32_setregs(struct thread *, struct image_params *, uintptr_t); 83 84 #define fill_fpregs32(td, reg) fill_fpregs(td,(struct fpreg *)reg) 85 #define set_fpregs32(td, reg) set_fpregs(td,(struct fpreg *)reg) 86 #define fill_dbregs32(td, reg) fill_dbregs(td,(struct dbreg *)reg) 87 #define set_dbregs32(td, reg) set_dbregs(td,(struct dbreg *)reg) 88 #endif 89 90 #endif 91 92 #endif /* _POWERPC_REG_H_ */ 93