xref: /netbsd-src/sys/arch/hppa/include/types.h (revision d5c87358ce6ba419528e54e72c8bff7f7ecd11c8)
1 /*	$NetBSD: types.h,v 1.33 2024/04/28 10:57:34 skrll Exp $	*/
2 
3 /*	$OpenBSD: types.h,v 1.6 2001/08/11 01:58:34 art Exp $	*/
4 
5 /*-
6  * Copyright (c) 1990, 1993
7  *	The Regents of the University of California.  All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  * 3. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  *	@(#)types.h	8.3 (Berkeley) 1/5/94
34  */
35 
36 #ifndef	_HPPA_TYPES_H_
37 #define	_HPPA_TYPES_H_
38 
39 #include <sys/cdefs.h>
40 #include <sys/featuretest.h>
41 
42 #if defined(_KERNEL)
43 typedef struct label_t {
44 	int	lbl_rp;
45 	int	lbl_sp;
46 	int	lbl_s[17];
47 	int	lbl_ss[1];
48 	double	lbl_sf[10];	/* hp800:fr12-fr15, hp700:fr12-fr21 */
49 } label_t;
50 #endif
51 
52 typedef	unsigned long		__vaddr_t;
53 
54 #if defined(_KERNEL) || defined(_KMEMUSER) || defined(_KERNTYPES) || defined(_STANDALONE)
55 typedef	unsigned long		hppa_hpa_t;
56 typedef	unsigned long		hppa_spa_t;
57 typedef	unsigned int		pa_space_t;
58 typedef	__vaddr_t		vaddr_t;
59 typedef	unsigned long		vsize_t;
60 typedef	unsigned long		paddr_t;
61 typedef	unsigned long		psize_t;
62 #define	PRIxVADDR		"lx"
63 #define	PRIxVSIZE		"lx"
64 #define	PRIuVSIZE		"lu"
65 #define	PRIxPADDR		"lx"
66 #define	PRIxPSIZE		"lx"
67 #define	PRIuPSIZE		"lu"
68 
69 typedef int			register_t;
70 #define	PRIxREGISTER		"x"
71 #endif
72 
73 /*
74  * Semaphores must be aligned on 16-byte boundaries on the PA-RISC.
75  */
76 typedef struct {
77 	volatile unsigned long csl_lock[4];
78 } __cpu_simple_lock_nv_t;
79 
80 typedef int			__register_t;
81 
82 
83 #define	__SIMPLELOCK_LOCKED	{ { 0, 0, 0, 0 } }
84 #define	__SIMPLELOCK_UNLOCKED	{ { 1, 1, 1, 1 } }
85 
86 #define	__MACHINE_STACK_GROWS_UP	/* stack grows to higher addresses */
87 #define	__HAVE_FUNCTION_DESCRIPTORS	/* function ptrs may be descriptors */
88 #define	__HAVE_RAS
89 #define	__HAVE_SYSCALL_INTERN
90 
91 /*
92  * On hppa, declaring RAS labels as functions doesn't work, since the toolchain
93  * will construct PLABELs for them.  Make them "const char []" instead.
94  */
95 
96 #define	RAS_DECL(name)							\
97 extern const char __CONCAT(name,_ras_start[]), __CONCAT(name,_ras_end[])
98 
99 #define	__HAVE_CPU_LWP_SETPRIVATE
100 #define	__HAVE_COMMON___TLS_GET_ADDR
101 #define	__HAVE___LWP_GETPRIVATE_FAST
102 #define	__HAVE_TLS_VARIANT_I
103 #define	__HAVE_NEW_STYLE_BUS_H
104 #define	__HAVE_BUS_SPACE_8
105 
106 #define	__HAVE_MM_MD_DIRECT_MAPPED_PHYS
107 #define	__HAVE_MM_MD_KERNACC
108 
109 #endif	/* _HPPA_TYPES_H_ */
110