xref: /netbsd-src/sys/arch/ia64/include/md_var.h (revision 8ba91f15043d44d6212afd6c8368eeb052bcba60)
1*8ba91f15Sscole /*	$NetBSD: md_var.h,v 1.3 2018/11/14 21:10:59 scole Exp $	*/
2ba7cbe76Scherry 
3ba7cbe76Scherry /*-
4ba7cbe76Scherry  * Copyright (c) 1998 Doug Rabson
5ba7cbe76Scherry  * All rights reserved.
6ba7cbe76Scherry  *
7ba7cbe76Scherry  * Redistribution and use in source and binary forms, with or without
8ba7cbe76Scherry  * modification, are permitted provided that the following conditions
9ba7cbe76Scherry  * are met:
10ba7cbe76Scherry  * 1. Redistributions of source code must retain the above copyright
11ba7cbe76Scherry  *    notice, this list of conditions and the following disclaimer.
12ba7cbe76Scherry  * 2. Redistributions in binary form must reproduce the above copyright
13ba7cbe76Scherry  *    notice, this list of conditions and the following disclaimer in the
14ba7cbe76Scherry  *    documentation and/or other materials provided with the distribution.
15ba7cbe76Scherry  *
16ba7cbe76Scherry  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17ba7cbe76Scherry  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18ba7cbe76Scherry  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19ba7cbe76Scherry  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20ba7cbe76Scherry  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21ba7cbe76Scherry  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22ba7cbe76Scherry  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23ba7cbe76Scherry  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24ba7cbe76Scherry  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25ba7cbe76Scherry  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26ba7cbe76Scherry  * SUCH DAMAGE.
27ba7cbe76Scherry  *
28ba7cbe76Scherry  * $FreeBSD$
29ba7cbe76Scherry  */
30ba7cbe76Scherry 
31ba7cbe76Scherry #ifndef _IA64_MD_VAR_H_
32ba7cbe76Scherry #define	_IA64_MD_VAR_H_
33ba7cbe76Scherry 
34ba7cbe76Scherry /*
35ba7cbe76Scherry  * Miscellaneous machine-dependent declarations.
36ba7cbe76Scherry  */
37ba7cbe76Scherry 
38ba7cbe76Scherry struct ia64_fdesc {
39ba7cbe76Scherry 	uint64_t	func;
40ba7cbe76Scherry 	uint64_t	gp;
41ba7cbe76Scherry };
42ba7cbe76Scherry 
43ba7cbe76Scherry #define FDESC_FUNC(fn)  (((struct ia64_fdesc *) fn)->func)
44ba7cbe76Scherry #define FDESC_GP(fn)    (((struct ia64_fdesc *) fn)->gp)
45ba7cbe76Scherry 
46ba7cbe76Scherry /* Convenience macros to decompose CFM & ar.pfs. */
47ba7cbe76Scherry #define	IA64_CFM_SOF(x)		((x) & 0x7f)
48ba7cbe76Scherry #define	IA64_CFM_SOL(x)		(((x) >> 7) & 0x7f)
49ba7cbe76Scherry #define	IA64_CFM_SOR(x)		(((x) >> 14) & 0x0f)
50ba7cbe76Scherry #define	IA64_CFM_RRB_GR(x)	(((x) >> 18) & 0x7f)
51ba7cbe76Scherry #define	IA64_CFM_RRB_FR(x)	(((x) >> 25) & 0x7f)
52ba7cbe76Scherry #define	IA64_CFM_RRB_PR(x)	(((x) >> 32) & 0x3f)
53ba7cbe76Scherry 
54ba7cbe76Scherry #define IA64_RNATINDEX(x)	(((x) & 0x1f8) >> 3)
55ba7cbe76Scherry 
56ba7cbe76Scherry #ifdef _KERNEL
57ba7cbe76Scherry 
58ba7cbe76Scherry extern	char	sigcode[];
59ba7cbe76Scherry extern	char	esigcode[];
60ba7cbe76Scherry extern	int	szsigcode;
61ba7cbe76Scherry extern	long	Maxmem;
62ba7cbe76Scherry extern	vaddr_t kernstart, kernend;
63ba7cbe76Scherry 
64ba7cbe76Scherry 
65ba7cbe76Scherry struct _special;
66ba7cbe76Scherry struct fpreg;
67ba7cbe76Scherry struct reg;
68ba7cbe76Scherry struct thread;
69ba7cbe76Scherry struct trapframe;
70ba7cbe76Scherry 
71*8ba91f15Sscole /*
72*8ba91f15Sscole  * Return value from ia64_init. Describes stack to switch to.
73*8ba91f15Sscole  */
74*8ba91f15Sscole struct ia64_init_return {
75*8ba91f15Sscole         uint64_t        bspstore;
76*8ba91f15Sscole         uint64_t        sp;
77*8ba91f15Sscole };
78*8ba91f15Sscole 
79ba7cbe76Scherry void	busdma_swi(void);
80ba7cbe76Scherry int	copyout_regstack(struct thread *, uint64_t *, uint64_t *);
81ba7cbe76Scherry void	cpu_mp_add(u_int, u_int, u_int);
82ba7cbe76Scherry int	do_ast(struct trapframe *);
83ba7cbe76Scherry void	ia32_trap(int, struct trapframe *);
84ba7cbe76Scherry int	ia64_count_cpus(void);
85ba7cbe76Scherry void	ia64_flush_dirty(struct thread *, struct _special *);
86ba7cbe76Scherry uint64_t ia64_get_hcdp(void);
87ba7cbe76Scherry int	ia64_highfp_drop(struct thread *);
88ba7cbe76Scherry int	ia64_highfp_save(struct thread *);
89*8ba91f15Sscole struct ia64_init_return ia64_init(void);
90ba7cbe76Scherry void	ia64_probe_sapics(void);
91ba7cbe76Scherry int	interrupt(uint64_t, struct trapframe *);
92ba7cbe76Scherry void	map_gateway_page(void);
93ba7cbe76Scherry void	map_pal_code(void);
943901a7fbSscole void	map_vhpt(uintptr_t);
95ba7cbe76Scherry void	os_boot_rendez(void);
96ba7cbe76Scherry void	os_mca(void);
97ba7cbe76Scherry int	syscall(struct trapframe *);
98ba7cbe76Scherry void	trap(int, struct trapframe *);
99ba7cbe76Scherry void	trap_panic(int, struct trapframe *);
100ba7cbe76Scherry int	unaligned_fixup(struct trapframe *, struct thread *);
1013901a7fbSscole void	ia64_sync_icache(vaddr_t, vaddr_t);
102ba7cbe76Scherry #endif	/* _KERNEL */
103ba7cbe76Scherry 
104ba7cbe76Scherry #endif /* !_IA64_MD_VAR_H_ */
105