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