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