1f9bac91bSBenno Rice /* $NetBSD: reg.h,v 1.4 2000/06/04 09:30:44 tsubai Exp $ */ 2f9bac91bSBenno Rice /* $FreeBSD$ */ 3f9bac91bSBenno Rice 4f9bac91bSBenno Rice #ifndef _POWERPC_REG_H_ 5f9bac91bSBenno Rice #define _POWERPC_REG_H_ 6f9bac91bSBenno Rice 7*76d6bb6aSWarner Losh #include <sys/_types.h> 8*76d6bb6aSWarner Losh 9a6e340aaSSuleiman Souhlal /* Must match struct trapframe */ 10f9bac91bSBenno Rice struct reg { 11*76d6bb6aSWarner Losh __register_t fixreg[32]; 12*76d6bb6aSWarner Losh __register_t lr; 13*76d6bb6aSWarner Losh __register_t cr; 14*76d6bb6aSWarner Losh __register_t xer; 15*76d6bb6aSWarner Losh __register_t ctr; 16*76d6bb6aSWarner Losh __register_t pc; 17f9bac91bSBenno Rice }; 18f9bac91bSBenno Rice 19f9bac91bSBenno Rice struct fpreg { 2093312a91SJohn Baldwin double fpreg[32]; 21f9bac91bSBenno Rice double fpscr; 22f9bac91bSBenno Rice }; 23f9bac91bSBenno Rice 2464b83a05SJustin Hibbits /* Must match pcb.pcb_vec */ 2564b83a05SJustin Hibbits struct vmxreg { 26*76d6bb6aSWarner Losh __uint32_t vr[32][4]; 27*76d6bb6aSWarner Losh __uint32_t pad[2]; 28*76d6bb6aSWarner Losh __uint32_t vrsave; 29*76d6bb6aSWarner Losh __uint32_t vscr; 3064b83a05SJustin Hibbits }; 3164b83a05SJustin Hibbits 32f9bac91bSBenno Rice struct dbreg { 33c3e289e1SNathan Whitehorn unsigned int junk; 34f9bac91bSBenno Rice }; 35f9bac91bSBenno Rice 36dbee5c67SJohn Baldwin #ifdef __LP64__ 37c3e289e1SNathan Whitehorn /* Must match struct trapframe */ 38c3e289e1SNathan Whitehorn struct reg32 { 39*76d6bb6aSWarner Losh __int32_t fixreg[32]; 40*76d6bb6aSWarner Losh __int32_t lr; 41*76d6bb6aSWarner Losh __int32_t cr; 42*76d6bb6aSWarner Losh __int32_t xer; 43*76d6bb6aSWarner Losh __int32_t ctr; 44*76d6bb6aSWarner Losh __int32_t pc; 45c3e289e1SNathan Whitehorn }; 46c3e289e1SNathan Whitehorn 47c3e289e1SNathan Whitehorn struct fpreg32 { 48c3e289e1SNathan Whitehorn struct fpreg data; 49c3e289e1SNathan Whitehorn }; 50c3e289e1SNathan Whitehorn 5164b83a05SJustin Hibbits struct vmxreg32 { 5264b83a05SJustin Hibbits struct vmxreg data; 5364b83a05SJustin Hibbits }; 5464b83a05SJustin Hibbits 55c3e289e1SNathan Whitehorn struct dbreg32 { 56c3e289e1SNathan Whitehorn struct dbreg data; 57c3e289e1SNathan Whitehorn }; 58dbee5c67SJohn Baldwin 59dbee5c67SJohn Baldwin #define __HAVE_REG32 60c3e289e1SNathan Whitehorn #endif 61c3e289e1SNathan Whitehorn 621f042619SDag-Erling Smørgrav #ifdef _KERNEL 631f042619SDag-Erling Smørgrav /* 641f042619SDag-Erling Smørgrav * XXX these interfaces are MI, so they should be declared in a MI place. 651f042619SDag-Erling Smørgrav */ 66812344bcSAlfred Perlstein int fill_regs(struct thread *, struct reg *); 67812344bcSAlfred Perlstein int set_regs(struct thread *, struct reg *); 68812344bcSAlfred Perlstein int fill_fpregs(struct thread *, struct fpreg *); 69812344bcSAlfred Perlstein int set_fpregs(struct thread *, struct fpreg *); 70812344bcSAlfred Perlstein int fill_dbregs(struct thread *, struct dbreg *); 71812344bcSAlfred Perlstein int set_dbregs(struct thread *, struct dbreg *); 72c3e289e1SNathan Whitehorn 7335a1aa5fSBrandon Bergren /* 7435a1aa5fSBrandon Bergren * MD interfaces. 7535a1aa5fSBrandon Bergren */ 7635a1aa5fSBrandon Bergren void cpu_save_thread_regs(struct thread *); 7735a1aa5fSBrandon Bergren 78c3e289e1SNathan Whitehorn #ifdef COMPAT_FREEBSD32 79c3e289e1SNathan Whitehorn struct image_params; 80c3e289e1SNathan Whitehorn 81c3e289e1SNathan Whitehorn int fill_regs32(struct thread *, struct reg32 *); 82c3e289e1SNathan Whitehorn int set_regs32(struct thread *, struct reg32 *); 8331174518SJohn Baldwin void ppc32_setregs(struct thread *, struct image_params *, uintptr_t); 84c3e289e1SNathan Whitehorn 85c3e289e1SNathan Whitehorn #define fill_fpregs32(td, reg) fill_fpregs(td,(struct fpreg *)reg) 86c3e289e1SNathan Whitehorn #define set_fpregs32(td, reg) set_fpregs(td,(struct fpreg *)reg) 87c3e289e1SNathan Whitehorn #define fill_dbregs32(td, reg) fill_dbregs(td,(struct dbreg *)reg) 88c3e289e1SNathan Whitehorn #define set_dbregs32(td, reg) set_dbregs(td,(struct dbreg *)reg) 89c3e289e1SNathan Whitehorn #endif 90c3e289e1SNathan Whitehorn 911f042619SDag-Erling Smørgrav #endif 92f9bac91bSBenno Rice 93f9bac91bSBenno Rice #endif /* _POWERPC_REG_H_ */ 94