177957Sbenno/* $NetBSD: reg.h,v 1.4 2000/06/04 09:30:44 tsubai Exp $ */ 277957Sbenno/* $FreeBSD$ */ 377957Sbenno 477957Sbenno#ifndef _POWERPC_REG_H_ 577957Sbenno#define _POWERPC_REG_H_ 677957Sbenno 7209975Snwhitehorn#if defined(_KERNEL) && !defined(KLD_MODULE) && !defined(_STANDALONE) 8209975Snwhitehorn#include "opt_compat.h" 9209975Snwhitehorn#endif 10209975Snwhitehorn 11132838Sssouhlal/* Must match struct trapframe */ 1277957Sbennostruct reg { 1377957Sbenno register_t fixreg[32]; 1477957Sbenno register_t lr; 15209975Snwhitehorn register_t cr; 16209975Snwhitehorn register_t xer; 1777957Sbenno register_t ctr; 1877957Sbenno register_t pc; 1977957Sbenno}; 2077957Sbenno 2177957Sbennostruct fpreg { 22295132Sjhb double fpreg[32]; 2377957Sbenno double fpscr; 2477957Sbenno}; 2577957Sbenno 26277166Sjhibbits/* Must match pcb.pcb_vec */ 27277166Sjhibbitsstruct vmxreg { 28277166Sjhibbits uint32_t vr[32][4]; 29277166Sjhibbits uint32_t pad[2]; 30277166Sjhibbits uint32_t vrsave; 31277166Sjhibbits uint32_t vscr; 32277166Sjhibbits}; 33277166Sjhibbits 3477957Sbennostruct dbreg { 35209975Snwhitehorn unsigned int junk; 3677957Sbenno}; 3777957Sbenno 38281266Sjhb#ifdef __LP64__ 39209975Snwhitehorn/* Must match struct trapframe */ 40209975Snwhitehornstruct reg32 { 41209975Snwhitehorn int32_t fixreg[32]; 42209975Snwhitehorn int32_t lr; 43209975Snwhitehorn int32_t cr; 44209975Snwhitehorn int32_t xer; 45209975Snwhitehorn int32_t ctr; 46209975Snwhitehorn int32_t pc; 47209975Snwhitehorn}; 48209975Snwhitehorn 49209975Snwhitehornstruct fpreg32 { 50209975Snwhitehorn struct fpreg data; 51209975Snwhitehorn}; 52209975Snwhitehorn 53277166Sjhibbitsstruct vmxreg32 { 54277166Sjhibbits struct vmxreg data; 55277166Sjhibbits}; 56277166Sjhibbits 57209975Snwhitehornstruct dbreg32 { 58209975Snwhitehorn struct dbreg data; 59209975Snwhitehorn}; 60281266Sjhb 61281266Sjhb#define __HAVE_REG32 62209975Snwhitehorn#endif 63209975Snwhitehorn 6485294Sdes#ifdef _KERNEL 6585294Sdes/* 6685294Sdes * XXX these interfaces are MI, so they should be declared in a MI place. 6785294Sdes */ 6892842Salfredint fill_regs(struct thread *, struct reg *); 6992842Salfredint set_regs(struct thread *, struct reg *); 7092842Salfredint fill_fpregs(struct thread *, struct fpreg *); 7192842Salfredint set_fpregs(struct thread *, struct fpreg *); 7292842Salfredint fill_dbregs(struct thread *, struct dbreg *); 7392842Salfredint set_dbregs(struct thread *, struct dbreg *); 74209975Snwhitehorn 75209975Snwhitehorn#ifdef COMPAT_FREEBSD32 76209975Snwhitehornstruct image_params; 77209975Snwhitehorn 78209975Snwhitehornint fill_regs32(struct thread *, struct reg32 *); 79209975Snwhitehornint set_regs32(struct thread *, struct reg32 *); 80209975Snwhitehornvoid ppc32_setregs(struct thread *, struct image_params *, u_long); 81209975Snwhitehorn 82209975Snwhitehorn#define fill_fpregs32(td, reg) fill_fpregs(td,(struct fpreg *)reg) 83209975Snwhitehorn#define set_fpregs32(td, reg) set_fpregs(td,(struct fpreg *)reg) 84209975Snwhitehorn#define fill_dbregs32(td, reg) fill_dbregs(td,(struct dbreg *)reg) 85209975Snwhitehorn#define set_dbregs32(td, reg) set_dbregs(td,(struct dbreg *)reg) 8685294Sdes#endif 8777957Sbenno 88209975Snwhitehorn#endif 89209975Snwhitehorn 9077957Sbenno#endif /* _POWERPC_REG_H_ */ 91