177957Sbenno/* $NetBSD: reg.h,v 1.4 2000/06/04 09:30:44 tsubai Exp $ */ 277957Sbenno/* $FreeBSD: releng/10.3/sys/powerpc/include/reg.h 283910 2015-06-02 14:54:53Z jhb $ */ 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 21132838Sssouhlal/* Must match pcb.pcb_fpu */ 2277957Sbennostruct fpreg { 2377957Sbenno double fpreg[32]; 2477957Sbenno double fpscr; 2577957Sbenno}; 2677957Sbenno 2777957Sbennostruct dbreg { 28209975Snwhitehorn unsigned int junk; 2977957Sbenno}; 3077957Sbenno 31283910Sjhb#ifdef __LP64__ 32209975Snwhitehorn/* Must match struct trapframe */ 33209975Snwhitehornstruct reg32 { 34209975Snwhitehorn int32_t fixreg[32]; 35209975Snwhitehorn int32_t lr; 36209975Snwhitehorn int32_t cr; 37209975Snwhitehorn int32_t xer; 38209975Snwhitehorn int32_t ctr; 39209975Snwhitehorn int32_t pc; 40209975Snwhitehorn}; 41209975Snwhitehorn 42209975Snwhitehornstruct fpreg32 { 43209975Snwhitehorn struct fpreg data; 44209975Snwhitehorn}; 45209975Snwhitehorn 46209975Snwhitehornstruct dbreg32 { 47209975Snwhitehorn struct dbreg data; 48209975Snwhitehorn}; 49283910Sjhb 50283910Sjhb#define __HAVE_REG32 51209975Snwhitehorn#endif 52209975Snwhitehorn 5385294Sdes#ifdef _KERNEL 5485294Sdes/* 5585294Sdes * XXX these interfaces are MI, so they should be declared in a MI place. 5685294Sdes */ 5792842Salfredint fill_regs(struct thread *, struct reg *); 5892842Salfredint set_regs(struct thread *, struct reg *); 5992842Salfredint fill_fpregs(struct thread *, struct fpreg *); 6092842Salfredint set_fpregs(struct thread *, struct fpreg *); 6192842Salfredint fill_dbregs(struct thread *, struct dbreg *); 6292842Salfredint set_dbregs(struct thread *, struct dbreg *); 63209975Snwhitehorn 64209975Snwhitehorn#ifdef COMPAT_FREEBSD32 65209975Snwhitehornstruct image_params; 66209975Snwhitehorn 67209975Snwhitehornint fill_regs32(struct thread *, struct reg32 *); 68209975Snwhitehornint set_regs32(struct thread *, struct reg32 *); 69209975Snwhitehornvoid ppc32_setregs(struct thread *, struct image_params *, u_long); 70209975Snwhitehorn 71209975Snwhitehorn#define fill_fpregs32(td, reg) fill_fpregs(td,(struct fpreg *)reg) 72209975Snwhitehorn#define set_fpregs32(td, reg) set_fpregs(td,(struct fpreg *)reg) 73209975Snwhitehorn#define fill_dbregs32(td, reg) fill_dbregs(td,(struct dbreg *)reg) 74209975Snwhitehorn#define set_dbregs32(td, reg) set_dbregs(td,(struct dbreg *)reg) 7585294Sdes#endif 7677957Sbenno 77209975Snwhitehorn#endif 78209975Snwhitehorn 7977957Sbenno#endif /* _POWERPC_REG_H_ */ 80