Commit 234630bb8d
Changed files (64)
lib
libc
include
arm-netbsd-eabi
machine
generic-netbsd
riscv
sys
powerpc-netbsd-eabi
sparc-netbsd-none
sparc64-netbsd-none
lib/libc/include/arm-netbsd-eabi/machine/byte_swap.h
@@ -1,121 +0,0 @@
-/* $NetBSD: byte_swap.h,v 1.16 2017/01/17 11:08:50 rin Exp $ */
-
-/*-
- * Copyright (c) 1997, 1999, 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Charles M. Hannum, Neil A. Carson, and Jason R. Thorpe.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _ARM_BYTE_SWAP_H_
-#define _ARM_BYTE_SWAP_H_
-
-#ifdef _LOCORE
-
-#if defined(_ARM_ARCH_6) || defined(_ARM_ARCH_7)
-
-#define BSWAP16(_src, _dst, _tmp) \
- rev16 _dst, _src
-#define BSWAP32(_src, _dst, _tmp) \
- rev _dst, _src
-
-#else
-
-#define BSWAP16(_src, _dst, _tmp) \
- mov _tmp, _src, ror #8 ;\
- orr _tmp, _tmp, _tmp, lsr #16 ;\
- bic _dst, _tmp, _tmp, lsl #16
-
-#define BSWAP32(_src, _dst, _tmp) \
- eor _tmp, _src, _src, ror #16 ;\
- bic _tmp, _tmp, #0x00FF0000 ;\
- mov _dst, _src, ror #8 ;\
- eor _dst, _dst, _tmp, lsr #8
-
-#endif
-
-
-#else
-
-#ifdef __GNUC__
-#include <sys/types.h>
-__BEGIN_DECLS
-
-#define __BYTE_SWAP_U32_VARIABLE __byte_swap_u32_variable
-static __inline uint32_t
-__byte_swap_u32_variable(uint32_t v)
-{
- uint32_t t1;
-
-#ifdef _ARM_ARCH_6
- if (!__builtin_constant_p(v)) {
- __asm("rev\t%0, %1" : "=r" (v) : "0" (v));
- return v;
- }
-#endif
-
- t1 = v ^ ((v << 16) | (v >> 16));
- t1 &= 0xff00ffffU;
- v = (v >> 8) | (v << 24);
- v ^= (t1 >> 8);
-
- return v;
-}
-
-#define __BYTE_SWAP_U16_VARIABLE __byte_swap_u16_variable
-static __inline uint16_t
-__byte_swap_u16_variable(uint16_t v)
-{
-
-#ifdef _ARM_ARCH_6
- if (!__builtin_constant_p(v)) {
- uint32_t v32 = v;
- __asm("rev16\t%0, %1" : "=r" (v32) : "0" (v32));
- return (uint16_t)v32;
- }
-#elif !defined(__thumb__) && 0 /* gcc produces decent code for this */
- if (!__builtin_constant_p(v)) {
- uint32_t v0 = v;
- __asm volatile(
- "mov %0, %1, ror #8\n"
- "orr %0, %0, %0, lsr #16\n"
- "bic %0, %0, %0, lsl #16"
- : "=&r" (v0)
- : "0" (v0));
- return (uint16_t)v0;
- }
-#endif
- v &= 0xffff;
- v = (uint16_t)((v >> 8) | (v << 8));
-
- return v;
-}
-
-__END_DECLS
-#endif
-
-#endif /* _LOCORE */
-
-#endif /* _ARM_BYTE_SWAP_H_ */
\ No newline at end of file
lib/libc/include/arm-netbsd-eabi/machine/sysarch.h
@@ -1,85 +0,0 @@
-/* $NetBSD: sysarch.h,v 1.15 2021/10/06 05:33:15 skrll Exp $ */
-
-/*
- * Copyright (c) 1996-1997 Mark Brinicombe.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Mark Brinicombe.
- * 4. The name of the company nor the name of the author may be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _ARM_SYSARCH_H_
-#define _ARM_SYSARCH_H_
-
-#include <sys/cdefs.h>
-
-/*
- * Pickup definition of size_t and uintptr_t
- */
-#include <machine/ansi.h>
-#include <sys/stdint.h>
-#ifndef _KERNEL
-#include <stdbool.h>
-#endif
-
-#ifdef _BSD_SIZE_T_
-typedef _BSD_SIZE_T_ size_t;
-#undef _BSD_SIZE_T_
-#endif
-
-/*
- * Architecture specific syscalls (arm)
- */
-
-#define ARM_SYNC_ICACHE 0
-#define ARM_DRAIN_WRITEBUF 1
-#define ARM_VFP_FPSCR 2
-#define ARM_FPU_USED 3
-
-struct arm_sync_icache_args {
- uintptr_t addr; /* Virtual start address */
- size_t len; /* Region size */
-};
-
-struct arm_vfp_fpscr_args {
- uint32_t fpscr_clear; /* bits to clear */
- uint32_t fpscr_set; /* bits to set */
-};
-
-struct arm_unaligned_faults_args {
- bool enabled; /* unaligned faults are enabled */
-};
-
-#ifndef _KERNEL
-__BEGIN_DECLS
-int arm_sync_icache(uintptr_t, size_t);
-int arm_drain_writebuf(void);
-int sysarch(int, void *);
-__END_DECLS
-#endif
-
-#endif /* !_ARM_SYSARCH_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/bswap.h
@@ -1,3 +1,8 @@
-/* $NetBSD: bswap.h,v 1.1 2002/12/09 12:15:58 scw Exp $ */
+/* $NetBSD: bswap.h,v 1.2 1999/08/21 05:39:55 simonb Exp $ */
-#include <powerpc/bswap.h>
\ No newline at end of file
+#ifndef _MACHINE_BSWAP_H_
+#define _MACHINE_BSWAP_H_
+
+#include <sys/bswap.h>
+
+#endif /* !_MACHINE_BSWAP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/byte_swap.h
@@ -1,11 +1,11 @@
-/* $NetBSD: byte_swap.h,v 1.5 2020/04/04 21:13:20 christos Exp $ */
+/* $NetBSD: byte_swap.h,v 1.16 2017/01/17 11:08:50 rin Exp $ */
/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997, 1999, 2002 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
+ * by Charles M. Hannum, Neil A. Carson, and Jason R. Thorpe.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,57 +29,57 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef _RISCV_BYTE_SWAP_H_
-#define _RISCV_BYTE_SWAP_H_
+#ifndef _ARM_BYTE_SWAP_H_
+#define _ARM_BYTE_SWAP_H_
#ifdef _LOCORE
-#define BSWAP16(_src, _dst, _tmp) \
- andi _dst, _src, 0xff ;\
- slli _dst, _dst, 8 ;\
- srli _tmp, _src, 8 ;\
- and _tmp, _tmp, 0xff ;\
- ori _dst, _dst, _tmp
-
-#define BSWAP32(_src, _dst, _tmp) \
- li v1, 0xff00 ;\
- slli _dst, _src, 24 ;\
- srli _tmp, _src, 24 ;\
- ori _dst, _dst, _tmp ;\
- and _tmp, _src, v1 ;\
- slli _tmp, _src, 8 ;\
- ori _dst, _dst, _tmp ;\
- srli _tmp, _src, 8 ;\
- and _tmp, _tmp, v1 ;\
- ori _dst, _dst, _tmp
+#if defined(_ARM_ARCH_6) || defined(_ARM_ARCH_7)
+
+#define BSWAP16(_src, _dst, _tmp) \
+ rev16 _dst, _src
+#define BSWAP32(_src, _dst, _tmp) \
+ rev _dst, _src
#else
-#include <sys/types.h>
-__BEGIN_DECLS
+#define BSWAP16(_src, _dst, _tmp) \
+ mov _tmp, _src, ror #8 ;\
+ orr _tmp, _tmp, _tmp, lsr #16 ;\
+ bic _dst, _tmp, _tmp, lsl #16
-#define __BYTE_SWAP_U64_VARIABLE __byte_swap_u64_variable
-static __inline uint64_t
-__byte_swap_u64_variable(uint64_t v)
-{
- const uint64_t m1 = 0x0000ffff0000ffffull;
- const uint64_t m0 = 0x00ff00ff00ff00ffull;
+#define BSWAP32(_src, _dst, _tmp) \
+ eor _tmp, _src, _src, ror #16 ;\
+ bic _tmp, _tmp, #0x00FF0000 ;\
+ mov _dst, _src, ror #8 ;\
+ eor _dst, _dst, _tmp, lsr #8
- v = (v >> 32) | (v << 32);
- v = ((v >> 16) & m1) | ((v & m1) << 16);
- v = ((v >> 8) & m0) | ((v & m0) << 8);
+#endif
- return v;
-}
+
+#else
+
+#ifdef __GNUC__
+#include <sys/types.h>
+__BEGIN_DECLS
#define __BYTE_SWAP_U32_VARIABLE __byte_swap_u32_variable
static __inline uint32_t
__byte_swap_u32_variable(uint32_t v)
{
- const uint32_t m = 0xff00ff;
+ uint32_t t1;
+
+#ifdef _ARM_ARCH_6
+ if (!__builtin_constant_p(v)) {
+ __asm("rev\t%0, %1" : "=r" (v) : "0" (v));
+ return v;
+ }
+#endif
- v = (v >> 16) | (v << 16);
- v = ((v >> 8) & m) | ((v & m) << 8);
+ t1 = v ^ ((v << 16) | (v >> 16));
+ t1 &= 0xff00ffffU;
+ v = (v >> 8) | (v << 24);
+ v ^= (t1 >> 8);
return v;
}
@@ -88,12 +88,34 @@ __byte_swap_u32_variable(uint32_t v)
static __inline uint16_t
__byte_swap_u16_variable(uint16_t v)
{
- /*LINTED*/
- return (uint16_t)((v >> 8) | (v << 8));
+
+#ifdef _ARM_ARCH_6
+ if (!__builtin_constant_p(v)) {
+ uint32_t v32 = v;
+ __asm("rev16\t%0, %1" : "=r" (v32) : "0" (v32));
+ return (uint16_t)v32;
+ }
+#elif !defined(__thumb__) && 0 /* gcc produces decent code for this */
+ if (!__builtin_constant_p(v)) {
+ uint32_t v0 = v;
+ __asm volatile(
+ "mov %0, %1, ror #8\n"
+ "orr %0, %0, %0, lsr #16\n"
+ "bic %0, %0, %0, lsl #16"
+ : "=&r" (v0)
+ : "0" (v0));
+ return (uint16_t)v0;
+ }
+#endif
+ v &= 0xffff;
+ v = (uint16_t)((v >> 8) | (v << 8));
+
+ return v;
}
__END_DECLS
+#endif
#endif /* _LOCORE */
-#endif /* _RISCV_BYTE_SWAP_H_ */
\ No newline at end of file
+#endif /* _ARM_BYTE_SWAP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/endian_machdep.h
@@ -1,3 +1,3 @@
-/* $NetBSD: endian_machdep.h,v 1.1 2002/12/09 12:16:02 scw Exp $ */
+/* $NetBSD: endian_machdep.h,v 1.1 2000/03/17 00:09:25 mycroft Exp $ */
-#include <powerpc/endian_machdep.h>
\ No newline at end of file
+#define _BYTE_ORDER _BIG_ENDIAN
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/rwlock.h
@@ -1,3 +1,1 @@
-/* $NetBSD: rwlock.h,v 1.2 2007/02/09 21:55:03 ad Exp $ */
-
-#include <powerpc/rwlock.h>
\ No newline at end of file
+/* $NetBSD: rwlock.h,v 1.6 2019/11/29 20:04:53 riastradh Exp $ */
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/sysarch.h
@@ -1,3 +1,85 @@
-/* $NetBSD: sysarch.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
+/* $NetBSD: sysarch.h,v 1.15 2021/10/06 05:33:15 skrll Exp $ */
-/* nothing */
\ No newline at end of file
+/*
+ * Copyright (c) 1996-1997 Mark Brinicombe.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mark Brinicombe.
+ * 4. The name of the company nor the name of the author may be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _ARM_SYSARCH_H_
+#define _ARM_SYSARCH_H_
+
+#include <sys/cdefs.h>
+
+/*
+ * Pickup definition of size_t and uintptr_t
+ */
+#include <machine/ansi.h>
+#include <sys/stdint.h>
+#ifndef _KERNEL
+#include <stdbool.h>
+#endif
+
+#ifdef _BSD_SIZE_T_
+typedef _BSD_SIZE_T_ size_t;
+#undef _BSD_SIZE_T_
+#endif
+
+/*
+ * Architecture specific syscalls (arm)
+ */
+
+#define ARM_SYNC_ICACHE 0
+#define ARM_DRAIN_WRITEBUF 1
+#define ARM_VFP_FPSCR 2
+#define ARM_FPU_USED 3
+
+struct arm_sync_icache_args {
+ uintptr_t addr; /* Virtual start address */
+ size_t len; /* Region size */
+};
+
+struct arm_vfp_fpscr_args {
+ uint32_t fpscr_clear; /* bits to clear */
+ uint32_t fpscr_set; /* bits to set */
+};
+
+struct arm_unaligned_faults_args {
+ bool enabled; /* unaligned faults are enabled */
+};
+
+#ifndef _KERNEL
+__BEGIN_DECLS
+int arm_sync_icache(uintptr_t, size_t);
+int arm_drain_writebuf(void);
+int sysarch(int, void *);
+__END_DECLS
+#endif
+
+#endif /* !_ARM_SYSARCH_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/machine/sysreg.h
@@ -1,337 +0,0 @@
-/* $NetBSD: sysreg.h,v 1.28 2022/12/03 11:09:59 skrll Exp $ */
-
-/*
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_SYSREG_H_
-#define _RISCV_SYSREG_H_
-
-#ifndef _KERNEL
-#include <sys/param.h>
-#endif
-
-#include <riscv/reg.h>
-
-#define FCSR_FMASK 0 // no exception bits
-#define FCSR_FRM __BITS(7, 5)
-#define FCSR_FRM_RNE 0b000 // Round Nearest, ties to Even
-#define FCSR_FRM_RTZ 0b001 // Round Towards Zero
-#define FCSR_FRM_RDN 0b010 // Round DowN (-infinity)
-#define FCSR_FRM_RUP 0b011 // Round UP (+infinity)
-#define FCSR_FRM_RMM 0b100 // Round to nearest, ties to Max Magnitude
-#define FCSR_FRM_DYN 0b111 // Dynamic rounding
-#define FCSR_FFLAGS __BITS(4, 0) // Sticky bits
-#define FCSR_NV __BIT(4) // iNValid operation
-#define FCSR_DZ __BIT(3) // Divide by Zero
-#define FCSR_OF __BIT(2) // OverFlow
-#define FCSR_UF __BIT(1) // UnderFlow
-#define FCSR_NX __BIT(0) // iNeXact
-
-static inline uint32_t
-riscvreg_fcsr_read(void)
-{
- uint32_t __fcsr;
- __asm("frcsr %0" : "=r"(__fcsr));
- return __fcsr;
-}
-
-
-static inline uint32_t
-riscvreg_fcsr_write(uint32_t __new)
-{
- uint32_t __old;
- __asm("fscsr %0, %1" : "=r"(__old) : "r"(__new));
- return __old;
-}
-
-static inline uint32_t
-riscvreg_fcsr_read_fflags(void)
-{
- uint32_t __old;
- __asm("frflags %0" : "=r"(__old));
- return __SHIFTOUT(__old, FCSR_FFLAGS);
-}
-
-static inline uint32_t
-riscvreg_fcsr_write_fflags(uint32_t __new)
-{
- uint32_t __old;
- __new = __SHIFTIN(__new, FCSR_FFLAGS);
- __asm("fsflags %0, %1" : "=r"(__old) : "r"(__new));
- return __SHIFTOUT(__old, FCSR_FFLAGS);
-}
-
-static inline uint32_t
-riscvreg_fcsr_read_frm(void)
-{
- uint32_t __old;
- __asm("frrm\t%0" : "=r"(__old));
- return __SHIFTOUT(__old, FCSR_FRM);
-}
-
-static inline uint32_t
-riscvreg_fcsr_write_frm(uint32_t __new)
-{
- uint32_t __old;
- __new = __SHIFTIN(__new, FCSR_FRM);
- __asm __volatile("fsrm\t%0, %1" : "=r"(__old) : "r"(__new));
- return __SHIFTOUT(__old, FCSR_FRM);
-}
-
-
-#define RISCVREG_READ_INLINE(regname) \
-static inline uintptr_t \
-csr_##regname##_read(void) \
-{ \
- uintptr_t __rv; \
- asm volatile("csrr %0, " #regname : "=r"(__rv) :: "memory"); \
- return __rv; \
-}
-
-#define RISCVREG_WRITE_INLINE(regname) \
-static inline void \
-csr_##regname##_write(uintptr_t __val) \
-{ \
- asm volatile("csrw " #regname ", %0" :: "r"(__val) : "memory"); \
-}
-
-#define RISCVREG_SET_INLINE(regname) \
-static inline void \
-csr_##regname##_set(uintptr_t __mask) \
-{ \
- if (__builtin_constant_p(__mask) && __mask < 0x20) { \
- asm volatile("csrsi " #regname ", %0" :: "i"(__mask) : \
- "memory"); \
- } else { \
- asm volatile("csrs " #regname ", %0" :: "r"(__mask) : \
- "memory"); \
- } \
-}
-
-#define RISCVREG_CLEAR_INLINE(regname) \
-static inline void \
-csr_##regname##_clear(uintptr_t __mask) \
-{ \
- if (__builtin_constant_p(__mask) && __mask < 0x20) { \
- asm volatile("csrci " #regname ", %0" :: "i"(__mask) : \
- "memory"); \
- } else { \
- asm volatile("csrc " #regname ", %0" :: "r"(__mask) : \
- "memory"); \
- } \
-}
-
-#define RISCVREG_READ_WRITE_INLINE(regname) \
-RISCVREG_READ_INLINE(regname) \
-RISCVREG_WRITE_INLINE(regname)
-#define RISCVREG_SET_CLEAR_INLINE(regname) \
-RISCVREG_SET_INLINE(regname) \
-RISCVREG_CLEAR_INLINE(regname)
-#define RISCVREG_READ_SET_CLEAR_INLINE(regname) \
-RISCVREG_READ_INLINE(regname) \
-RISCVREG_SET_CLEAR_INLINE(regname)
-#define RISCVREG_READ_WRITE_SET_CLEAR_INLINE(regname) \
-RISCVREG_READ_WRITE_INLINE(regname) \
-RISCVREG_SET_CLEAR_INLINE(regname)
-
-/* Supervisor Status Register */
-RISCVREG_READ_SET_CLEAR_INLINE(sstatus) // supervisor status register
-#ifdef _LP64
-#define SR_WPRI __BITS(62, 34) | __BITS(31, 20) | \
- __BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
- __BIT(0)
-#define SR_SD __BIT(63) // any of FS or VS or XS dirty
- /* Bits 62-34 are WPRI */
-#define SR_UXL __BITS(33, 32) // U-mode XLEN
-#define SR_UXL_32 1 // XLEN == 32
-#define SR_UXL_64 2 // XLEN == 64
-#define SR_UXL_128 3 // XLEN == 128
- /* Bits 31-20 are WPRI*/
-#else
-#define SR_WPRI __BITS(30, 20) | \
- __BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
- __BIT(0)
-#define SR_SD __BIT(31) // any of FS or VS or XS dirty
- /* Bits 30-20 are WPRI*/
-#endif /* _LP64 */
-
-/* Both RV32 and RV64 have the bottom 20 bits shared */
-#define SR_MXR __BIT(19) // Make eXecutable Readable
-#define SR_SUM __BIT(18) // permit Supervisor User Memory access
- /* Bit 17 is WPRI */
-#define SR_XS __BITS(16, 15) // Vector extension state
-#define SR_XS_OFF 0 // All off
-#define SR_XS_SOME_ON 1 // None dirty or clean, some on
-#define SR_XS_SOME_CLEAN 2 // None dirty, some clean
-#define SR_XS_SOME_DIRTY 3 // Some dirty
-#define SR_FS __BITS(14, 13) // Floating-point unit state
-#define SR_FS_OFF 0 // Off
-#define SR_FS_INITIAL 1 // Initial
-#define SR_FS_CLEAN 2 // Clean
-#define SR_FS_DIRTY 3 // Dirty
- /* Bits 12-11 are WPRI */
-#define SR_VS __BITS(10, 9) // User-mode extention state
-#define SR_VS_OFF SR_FS_OFF // Off
-#define SR_VS_INITIAL SR_FS_INITIAL // Initial
-#define SR_VS_CLEAN SR_FS_CLEAN // Clean
-#define SR_VS_DIRTY SR_FS_DIRTY // Dirty
-#define SR_SPP __BIT(8) // Priv level before supervisor mode
- /* Bit 7 is WPRI */
-#define SR_UBE __BIT(6) // User-mode endianness
-#define SR_SPIE __BIT(5) // S-Mode interrupts enabled before trap
- /* Bits 4-2 are WPRI */
-#define SR_SIE __BIT(1) // Supervisor mode interrupt enable
- /* Bit 0 is WPRI */
-
-/* Supervisor interrupt registers */
-/* ... interrupt pending register (sip) */
-RISCVREG_READ_SET_CLEAR_INLINE(sip) // supervisor interrupt pending
- /* Bit (XLEN-1) - 10 is WIRI */
-#define SIP_SEIP __BIT(9) // S-mode interrupt pending
- /* Bit 8-6 is WIRI */
-#define SIP_STIP __BIT(5) // S-mode timer interrupt pending
- /* Bit 4-2 is WIRI */
-#define SIP_SSIP __BIT(1) // S-mode software interrupt pending
- /* Bit 0 is WIRI */
-
-/* ... interrupt-enable register (sie) */
-RISCVREG_READ_SET_CLEAR_INLINE(sie) // supervisor interrupt enable
- /* Bit (XLEN-1) - 10 is WIRI */
-#define SIE_SEIE __BIT(9) // S-mode interrupt enable
- /* Bit 8-6 is WIRI */
-#define SIE_STIE __BIT(5) // S-mode timer interrupt enable
- /* Bit 4-2 is WIRI */
-#define SIE_SSIE __BIT(1) // S-mode software interrupt enable
- /* Bit 0 is WIRI */
-
-/* Mask for all interrupts */
-#define SIE_IM (SIE_SEI |SIE_STIE | SIE_SSIE)
-
-#ifdef _LP64
-#define SR_USER64 (SR_SPIE | SR_UXL_64) // 64-bit U-mode sstatus
-#define SR_USER32 (SR_SPIE | SR_UXL_32) // 32-bit U-mode sstatus
-#else
-#define SR_USER (SR_SPIE) // U-mode sstatus
-#endif
-
-// Cause register
-#define CAUSE_INTERRUPT_P(cause) ((cause) & __BIT(XLEN - 1))
-#define CAUSE_CODE(cause) ((cause) & __BITS(XLEN - 2, 0))
-
-// Cause register - exceptions
-#define CAUSE_FETCH_MISALIGNED 0
-#define CAUSE_FETCH_ACCESS 1
-#define CAUSE_ILLEGAL_INSTRUCTION 2
-#define CAUSE_BREAKPOINT 3
-#define CAUSE_LOAD_MISALIGNED 4
-#define CAUSE_LOAD_ACCESS 5
-#define CAUSE_STORE_MISALIGNED 6
-#define CAUSE_STORE_ACCESS 7
-#define CAUSE_USER_ECALL 8
-#define CAUSE_SYSCALL CAUSE_USER_ECALL /* convenience alias */
-#define CAUSE_SUPERVISOR_ECALL 9
-/* 10 is reserved */
-#define CAUSE_MACHINE_ECALL 11
-#define CAUSE_FETCH_PAGE_FAULT 12
-#define CAUSE_LOAD_PAGE_FAULT 13
-/* 14 is Reserved */
-#define CAUSE_STORE_PAGE_FAULT 15
-/* >= 16 is reserved/custom */
-
-// Cause register - interrupts
-#define IRQ_SUPERVISOR_SOFTWARE 1
-#define IRQ_MACHINE_SOFTWARE 3
-#define IRQ_SUPERVISOR_TIMER 5
-#define IRQ_MACHINE_TIMER 7
-#define IRQ_SUPERVISOR_EXTERNAL 9
-#define IRQ_MACHINE_EXTERNAL 11
-
-RISCVREG_READ_INLINE(time)
-#ifdef _LP64
-RISCVREG_READ_INLINE(cycle)
-#else /* !_LP64 */
-static inline uint64_t
-csr_cycle_read(void)
-{
- uint32_t __hi0, __hi1, __lo0;
- do {
- __asm __volatile(
- "csrr\t%[__hi0], cycleh"
- "\n\t" "csrr\t%[__lo0], cycle"
- "\n\t" "csrr\t%[__hi1], cycleh"
- : [__hi0] "=r"(__hi0),
- [__lo0] "=r"(__lo0),
- [__hi1] "=r"(__hi1));
- } while (__hi0 != __hi1);
- return
- __SHIFTIN(__hi0, __BITS(63, 32)) |
- __SHIFTIN(__lo0, __BITS(31, 0));
-}
-#endif /* !_LP64 */
-
-#ifdef _LP64
-#define SATP_MODE __BITS(63, 60) // Translation mode
-#define SATP_MODE_BARE 0 // No translation or protection
- /* modes 1-7 reserved for standard use */
-#define SATP_MODE_SV39 8 // Page-based 39-bit virt addr
-#define SATP_MODE_SV48 9 // Page-based 48-bit virt addr
-#define SATP_MODE_SV57 10 // Page-based 57-bit virt addr
-#define SATP_MODE_SV64 11 // Page-based 64-bit virt addr
- /* modes 12-13 reserved for standard use */
- /* modes 14-15 designated for custom use */
-#define SATP_ASID __BITS(59, 44) // Address Space Identifier
-#define SATP_PPN __BITS(43, 0) // Physical Page Number
-#else
-#define SATP_MODE __BIT(31) // Translation mode
-#define SATP_MODE_BARE 0 // No translation or protection
-#define SATP_MODE_SV32 1 // Page-based 32-bit virt addr
-#define SATP_ASID __BITS(30, 22) // Address Space Identifier
-#define SATP_PPN __BITS(21, 0) // Physical Page Number
-#endif
-
-RISCVREG_READ_WRITE_INLINE(satp)
-
-/* Fake "ASID" CSR (a field of SATP register) functions */
-static inline uint32_t
-csr_asid_read(void)
-{
- uintptr_t satp = csr_satp_read();
- return __SHIFTOUT(satp, SATP_ASID);
-}
-
-static inline void
-csr_asid_write(uint32_t asid)
-{
- uintptr_t satp = csr_satp_read();
- satp &= ~SATP_ASID;
- satp |= __SHIFTIN(asid, SATP_ASID);
- csr_satp_write(satp);
-}
-
-#endif /* _RISCV_SYSREG_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/ansi.h
@@ -1,3 +0,0 @@
-/* $NetBSD: ansi.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_ansi.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/aout_machdep.h
@@ -1,40 +0,0 @@
-/* $NetBSD: aout_machdep.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_AOUT_MACHDEP_H_
-#define _RISCV_AOUT_MACHDEP_H_
-
-#define cpu_exec_aout_makecmds(p, epp) ENOEXEC
-
-/* Size of a page in an object file. */
-#define AOUT_LDPGSZ 4096
-
-#endif /* !_RISCV_AOUT_MACHDEP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/asm.h
@@ -1,266 +0,0 @@
-/* $NetBSD: asm.h,v 1.6 2021/05/01 07:05:07 skrll Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_ASM_H
-#define _RISCV_ASM_H
-
-#define _C_LABEL(x) x
-
-#define __CONCAT(x,y) x ## y
-#define __STRING(x) #x
-
-#define ___CONCAT(x,y) __CONCAT(x,y)
-
-/*
- * Define -pg profile entry code.
- * Must always be noreorder, must never use a macro instruction
- * Final addiu to t9 must always equal the size of this _KERN_MCOUNT
- */
-#define _KERN_MCOUNT \
- .set push; \
- subi sp, sp, CALLFRAME_SIZE; \
- REG_S a0, CALLFRAME_S0(sp); \
- REG_S ra, CALLFRAME_RA(sp); \
- move a0, ra; \
- call _mcount \
- REG_L ra, CALLFRAME_RA(sp); \
- REG_L a0, CALLFRAME_S0(sp); \
- addi sp, sp, CALLFRAME_SIZ; \
- .set pop;
-
-#ifdef GPROF
-#define _PROF_PROLOGUE _KERN_MCOUNT
-#else
-#define _PROF_PROLOGUE
-#endif
-
-#ifdef __PIC__
-#define PLT(x) x##@plt
-#else
-#define PLT(x) x
-#endif
-
-/*
- * WEAK_ALIAS: create a weak alias.
- */
-#define WEAK_ALIAS(alias,sym) \
- .weak alias; \
- alias = sym
-/*
- * STRONG_ALIAS: create a strong alias.
- */
-#define STRONG_ALIAS(alias,sym) \
- .globl alias; \
- alias = sym
-
-/*
- * WARN_REFERENCES: create a warning if the specified symbol is referenced.
- */
-#define WARN_REFERENCES(sym,msg) \
- .pushsection __CONCAT(.gnu.warning.,sym); \
- .ascii msg; \
- .popsection
-
-#define _ENTRY(x) \
- .globl _C_LABEL(x); \
- .type _C_LABEL(x), @function; \
- _C_LABEL(x):
-
-#define ENTRY_NP(x) .text; .align 2; _ENTRY(x)
-#define ENTRY(x) ENTRY_NP(x); _PROF_PROLOGUE
-#define END(x) .size _C_LABEL(x), . - _C_LABEL(x)
-
-/*
- * Macros to panic and printf from assembly language.
- */
-#define PANIC(msg) \
- la a0, 9f; \
- call _C_LABEL(panic); \
- MSG(msg)
-
-#define PRINTF(msg) \
- la a0, 9f; \
- call _C_LABEL(printf); \
- MSG(msg)
-
-#define MSG(msg) \
- .pushsection .rodata.str1.8,"aMS",@progbits,1; \
-9: .asciiz msg; \
- .popsection
-
-#define ASMSTR(str) \
- .asciiz str; \
- .align 3
-
-#define __RCSID(x) .pushsection ".ident","MS",@progbits,1; \
- .asciz x; \
- .popsection
-#define RCSID(name) __RCSID(name)
-
-#if defined(_LP64)
-#define SZREG 8
-#else
-#define SZREG 4
-#endif
-
-#define ALSK 15 /* stack alignment */
-#define ALMASK -15 /* stack alignment */
-#define SZFPREG 8
-#define FP_L fld
-#define FP_S fsd
-
-/*
- * standard callframe {
- * register_t cf_sp; frame pointer
- * register_t cf_ra; return address
- * };
- */
-#define CALLFRAME_SIZ (SZREG * 4)
-#define CALLFRAME_S1 (CALLFRAME_SIZ - 4 * SZREG)
-#define CALLFRAME_S0 (CALLFRAME_SIZ - 3 * SZREG)
-#define CALLFRAME_SP (CALLFRAME_SIZ - 2 * SZREG)
-#define CALLFRAME_RA (CALLFRAME_SIZ - 1 * SZREG)
-
-/*
- * These macros hide the use of rv32 and rv64 instructions from the
- * assembler to prevent the assembler from generating 64-bit style
- * ABI calls.
- */
-#define PTR_ADD add
-#define PTR_ADDI addi
-#define PTR_SUB sub
-#define PTR_SUBI subi
-#define PTR_LA la
-#define PTR_SLLI slli
-#define PTR_SLL sll
-#define PTR_SRLI srli
-#define PTR_SRL srl
-#define PTR_SRAI srai
-#define PTR_SRA sra
-#if _LP64
-#define PTR_L ld
-#define PTR_S sd
-#define PTR_LR lr.d
-#define PTR_SC sc.d
-#define PTR_WORD .dword
-#define PTR_SCALESHIFT 3
-#else
-#define PTR_L lw
-#define PTR_S sw
-#define PTR_LR lr.w
-#define PTR_SC sc.w
-#define PTR_WORD .word
-#define PTR_SCALESHIFT 2
-#endif
-
-#define INT_L lw
-#define INT_LA la
-#define INT_S sw
-#define INT_LR lr.w
-#define INT_SC sc.w
-#define INT_WORD .word
-#define INT_SCALESHIFT 2
-#ifdef _LP64
-#define INT_ADD addw
-#define INT_ADDI addwi
-#define INT_SUB subw
-#define INT_SUBI subwi
-#define INT_SLL sllwi
-#define INT_SLLV sllw
-#define INT_SRL srlwi
-#define INT_SRLV srlw
-#define INT_SRA srawi
-#define INT_SRAV sraw
-#else
-#define INT_ADD add
-#define INT_ADDI addi
-#define INT_SUB sub
-#define INT_SUBI subi
-#define INT_SLLI slli
-#define INT_SLL sll
-#define INT_SRLI srli
-#define INT_SRL srl
-#define INT_SRAI srai
-#define INT_SRA sra
-#endif
-
-#define LONG_LA la
-#define LONG_ADD add
-#define LONG_ADDI addi
-#define LONG_SUB sub
-#define LONG_SUBI subi
-#define LONG_SLLI slli
-#define LONG_SLL sll
-#define LONG_SRLI srli
-#define LONG_SRL srl
-#define LONG_SRAI srai
-#define LONG_SRA sra
-#ifdef _LP64
-#define LONG_L ld
-#define LONG_S sd
-#define LONG_LR lr.d
-#define LONG_SC sc.d
-#define LONG_WORD .quad
-#define LONG_SCALESHIFT 3
-#else
-#define LONG_L lw
-#define LONG_S sw
-#define LONG_LR lr.w
-#define LONG_SC sc.w
-#define LONG_WORD .word
-#define LONG_SCALESHIFT 2
-#endif
-
-#define REG_LI li
-#define REG_ADD add
-#define REG_SLLI slli
-#define REG_SLL sll
-#define REG_SRLI srli
-#define REG_SRL srl
-#define REG_SRAI srai
-#define REG_SRA sra
-#if _LP64
-#define REG_L ld
-#define REG_S sd
-#define REG_LR lr.d
-#define REG_SC sc.d
-#define REG_SCALESHIFT 3
-#else
-#define REG_L lw
-#define REG_S sw
-#define REG_LR lr.w
-#define REG_SC sc.w
-#define REG_SCALESHIFT 2
-#endif
-
-#define CPUVAR(off) _C_LABEL(cpu_info_store)+__CONCAT(CPU_INFO_,off)
-
-#endif /* _RISCV_ASM_H */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/bswap.h
@@ -1,11 +0,0 @@
-/* $NetBSD: bswap.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#ifndef _RISCV_BSWAP_H_
-#define _RISCV_BSWAP_H_
-
-#include <riscv/byte_swap.h>
-
-#define __BSWAP_RENAME
-#include <sys/bswap.h>
-
-#endif /* _RISCV_BSWAP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/byte_swap.h
@@ -1,99 +0,0 @@
-/* $NetBSD: byte_swap.h,v 1.5 2020/04/04 21:13:20 christos Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_BYTE_SWAP_H_
-#define _RISCV_BYTE_SWAP_H_
-
-#ifdef _LOCORE
-
-#define BSWAP16(_src, _dst, _tmp) \
- andi _dst, _src, 0xff ;\
- slli _dst, _dst, 8 ;\
- srli _tmp, _src, 8 ;\
- and _tmp, _tmp, 0xff ;\
- ori _dst, _dst, _tmp
-
-#define BSWAP32(_src, _dst, _tmp) \
- li v1, 0xff00 ;\
- slli _dst, _src, 24 ;\
- srli _tmp, _src, 24 ;\
- ori _dst, _dst, _tmp ;\
- and _tmp, _src, v1 ;\
- slli _tmp, _src, 8 ;\
- ori _dst, _dst, _tmp ;\
- srli _tmp, _src, 8 ;\
- and _tmp, _tmp, v1 ;\
- ori _dst, _dst, _tmp
-
-#else
-
-#include <sys/types.h>
-__BEGIN_DECLS
-
-#define __BYTE_SWAP_U64_VARIABLE __byte_swap_u64_variable
-static __inline uint64_t
-__byte_swap_u64_variable(uint64_t v)
-{
- const uint64_t m1 = 0x0000ffff0000ffffull;
- const uint64_t m0 = 0x00ff00ff00ff00ffull;
-
- v = (v >> 32) | (v << 32);
- v = ((v >> 16) & m1) | ((v & m1) << 16);
- v = ((v >> 8) & m0) | ((v & m0) << 8);
-
- return v;
-}
-
-#define __BYTE_SWAP_U32_VARIABLE __byte_swap_u32_variable
-static __inline uint32_t
-__byte_swap_u32_variable(uint32_t v)
-{
- const uint32_t m = 0xff00ff;
-
- v = (v >> 16) | (v << 16);
- v = ((v >> 8) & m) | ((v & m) << 8);
-
- return v;
-}
-
-#define __BYTE_SWAP_U16_VARIABLE __byte_swap_u16_variable
-static __inline uint16_t
-__byte_swap_u16_variable(uint16_t v)
-{
- /*LINTED*/
- return (uint16_t)((v >> 8) | (v << 8));
-}
-
-__END_DECLS
-
-#endif /* _LOCORE */
-
-#endif /* _RISCV_BYTE_SWAP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/cdefs.h
@@ -1,8 +0,0 @@
-/* $NetBSD: cdefs.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#ifndef _RISCV_CDEFS_H_
-#define _RISCV_CDEFS_H_
-
-#define __ALIGNBYTES (__BIGGEST_ALIGNMENT__ - 1U)
-
-#endif /* _RISCV_CDEFS_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/cpu.h
@@ -1,153 +0,0 @@
-/* $NetBSD: cpu.h,v 1.9 2022/11/17 09:50:23 simonb Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_CPU_H_
-#define _RISCV_CPU_H_
-
-#if defined(_KERNEL) || defined(_KMEMUSER)
-
-struct clockframe {
- vaddr_t cf_epc;
- register_t cf_status;
- int cf_intr_depth;
-};
-
-#define CLKF_USERMODE(cf) (((cf)->cf_status & SR_SPP) == 0)
-#define CLKF_PC(cf) ((cf)->cf_epc)
-#define CLKF_INTR(cf) ((cf)->cf_intr_depth > 0)
-
-#include <sys/cpu_data.h>
-#include <sys/device_if.h>
-#include <sys/evcnt.h>
-#include <sys/intr.h>
-
-struct cpu_info {
- struct cpu_data ci_data;
- device_t ci_dev;
- cpuid_t ci_cpuid;
- struct lwp *ci_curlwp;
- struct lwp *ci_onproc; /* current user LWP / kthread */
- struct lwp *ci_softlwps[SOFTINT_COUNT];
- struct trapframe *ci_ddb_regs;
-
- uint64_t ci_lastintr;
-
- int ci_mtx_oldspl;
- int ci_mtx_count;
-
- int ci_want_resched;
- int ci_cpl;
- u_int ci_softints;
- volatile u_int ci_intr_depth;
-
- tlb_asid_t ci_pmap_asid_cur;
-
- union pmap_segtab *ci_pmap_user_segtab;
-#ifdef _LP64
- union pmap_segtab *ci_pmap_user_seg0tab;
-#endif
-
- struct evcnt ci_ev_fpu_saves;
- struct evcnt ci_ev_fpu_loads;
- struct evcnt ci_ev_fpu_reenables;
-#if defined(GPROF) && defined(MULTIPROCESSOR)
- struct gmonparam *ci_gmon; /* MI per-cpu GPROF */
-#endif
-};
-
-#endif /* _KERNEL || _KMEMUSER */
-
-#ifdef _KERNEL
-
-extern struct cpu_info cpu_info_store;
-
-// This is also in <sys/lwp.h>
-struct lwp;
-static inline struct cpu_info *lwp_getcpu(struct lwp *);
-
-register struct lwp *riscv_curlwp __asm("tp");
-#define curlwp riscv_curlwp
-#define curcpu() lwp_getcpu(curlwp)
-
-static inline cpuid_t
-cpu_number(void)
-{
-#ifdef MULTIPROCESSOR
- return curcpu()->ci_cpuid;
-#else
- return 0;
-#endif
-}
-
-void cpu_proc_fork(struct proc *, struct proc *);
-void cpu_signotify(struct lwp *);
-void cpu_need_proftick(struct lwp *l);
-void cpu_boot_secondary_processors(void);
-
-#define CPU_INFO_ITERATOR cpuid_t
-#ifdef MULTIPROCESSOR
-#define CPU_INFO_FOREACH(cii, ci) \
- (cii) = 0; ((ci) = cpu_infos[cii]) != NULL; (cii)++
-#else
-#define CPU_INFO_FOREACH(cii, ci) \
- (cii) = 0, (ci) = curcpu(); (cii) == 0; (cii)++
-#endif
-
-#define CPU_INFO_CURPMAP(ci) (curlwp->l_proc->p_vmspace->vm_map.pmap)
-
-static inline void
-cpu_dosoftints(void)
-{
- extern void dosoftints(void);
- struct cpu_info * const ci = curcpu();
- if (ci->ci_intr_depth == 0
- && (ci->ci_data.cpu_softints >> ci->ci_cpl) > 0)
- dosoftints();
-}
-
-static inline bool
-cpu_intr_p(void)
-{
- return curcpu()->ci_intr_depth > 0;
-}
-
-#define LWP_PC(l) cpu_lwp_pc(l)
-
-vaddr_t cpu_lwp_pc(struct lwp *);
-
-static inline void
-cpu_idle(void)
-{
-}
-
-#endif /* _KERNEL */
-
-#endif /* _RISCV_CPU_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/disklabel.h
@@ -1,68 +0,0 @@
-/* $NetBSD: disklabel.h,v 1.2 2022/05/24 19:37:39 andvar Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_DISKLABEL_H_
-#define _RISCV_DISKLABEL_H_
-
-#define LABELUSESMBR 1 /* use MBR partitionning */
-#define LABELSECTOR 1 /* sector containing label */
-#define LABELOFFSET 0 /* offset of label in sector */
-#define MAXPARTITIONS 16 /* number of partitions */
-#define RAW_PART 2 /* raw partition: XX?c */
-
-#if HAVE_NBTOOL_CONFIG_H
-#include <nbinclude/sys/dkbad.h>
-#include <nbinclude/sys/bootblock.h>
-#else
-#include <sys/dkbad.h>
-#include <sys/bootblock.h>
-#endif /* HAVE_NBTOOL_CONFIG_H */
-
-struct cpu_disklabel {
- struct mbr_partition mbrparts[MBR_PART_COUNT];
-#define __HAVE_DISKLABEL_DKBAD
- struct dkbad bad;
-};
-
-#ifdef _KERNEL
-struct buf;
-struct disklabel;
-
-/* for readdisklabel. rv != 0 -> matches, msg == NULL -> success */
-int mbr_label_read(dev_t, void (*)(struct buf *), struct disklabel *,
- struct cpu_disklabel *, const char **, int *, int *);
-
-/* for writedisklabel. rv == 0 -> doesn't match, rv > 0 -> success */
-int mbr_label_locate(dev_t, void (*)(struct buf *),
- struct disklabel *, struct cpu_disklabel *, int *, int *);
-#endif /* _KERNEL */
-
-#endif /* _RISCV_DISKLABEL_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/elf_machdep.h
@@ -1,144 +0,0 @@
-/* $NetBSD: elf_machdep.h,v 1.9 2022/12/03 08:54:38 skrll Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_ELF_MACHDEP_H_
-#define _RISCV_ELF_MACHDEP_H_
-
-#define ELF32_MACHDEP_ID EM_RISCV
-#define ELF64_MACHDEP_ID EM_RISCV
-
-#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB
-#define ELF64_MACHDEP_ENDIANNESS ELFDATA2LSB
-
-#define ELF32_MACHDEP_ID_CASES \
- case EM_RISCV: \
- break;
-
-#define ELF64_MACHDEP_ID_CASES \
- case EM_RISCV: \
- break;
-
-#ifdef _LP64
-#define KERN_ELFSIZE 64
-#define ARCH_ELFSIZE 64 /* MD native binary size */
-#else
-#define KERN_ELFSIZE 32
-#define ARCH_ELFSIZE 32 /* MD native binary size */
-#endif
-
-/* Processor specific flags for the ELF header e_flags field. */
-
-/* Processor specific relocation types */
-
-#define R_RISCV_NONE 0
-#define R_RISCV_32 1 // A
-#define R_RISCV_64 2
-#define R_RISCV_RELATIVE 3
-#define R_RISCV_COPY 4
-#define R_RISCV_JMP_SLOT 5
-#define R_RISCV_TLS_DTPMOD32 6
-#define R_RISCV_TLS_DTPMOD64 7
-#define R_RISCV_TLS_DTPREL32 8
-#define R_RISCV_TLS_DTPREL64 9
-#define R_RISCV_TLS_TPREL32 10
-#define R_RISCV_TLS_TPREL64 11
-
-/* The rest are not used by the dynamic linker */
-#define R_RISCV_BRANCH 16 // (A - P) & 0xffff
-#define R_RISCV_JAL 17 // A & 0xff
-#define R_RISCV_CALL 18 // (A - P) & 0xff
-#define R_RISCV_CALL_PLT 19
-#define R_RISCV_GOT_HI20 20
-#define R_RISCV_TLS_GOT_HI20 21
-#define R_RISCV_TLS_GD_HI20 22
-#define R_RISCV_PCREL_HI20 23
-#define R_RISCV_PCREL_LO12_I 24
-#define R_RISCV_PCREL_LO12_S 25
-#define R_RISCV_HI20 26 // A & 0xffff
-#define R_RISCV_LO12_I 27 // (A >> 16) & 0xffff
-#define R_RISCV_LO12_S 28 // (S + A - P) >> 2
-#define R_RISCV_TPREL_HI20 29
-#define R_RISCV_TPREL_LO12_I 30
-#define R_RISCV_TPREL_LO12_S 31
-#define R_RISCV_TPREL_ADD 32
-#define R_RISCV_ADD8 33
-#define R_RISCV_ADD16 34
-#define R_RISCV_ADD32 35
-#define R_RISCV_ADD64 36
-#define R_RISCV_SUB8 37
-#define R_RISCV_SUB16 38
-#define R_RISCV_SUB32 39
-#define R_RISCV_SUB64 40
-#define R_RISCV_GNU_VTINHERIT 41 // A & 0xffff
-#define R_RISCV_GNU_VTENTRY 42
-#define R_RISCV_ALIGN 43
-#define R_RISCV_RVC_BRANCH 44
-#define R_RISCV_RVC_JUMP 45
-#define R_RISCV_RVC_LUI 46
-#define R_RISCV_GPREL_I 47
-#define R_RISCV_GPREL_S 48
-#define R_RISCV_TPREL_I 49
-#define R_RISCV_TPREL_S 50
-#define R_RISCV_RELAX 51
-#define R_RISCV_SUB6 52
-#define R_RISCV_SET6 53
-#define R_RISCV_SET8 54
-#define R_RISCV_SET16 55
-#define R_RISCV_SET32 56
-#define R_RISCV_32_PCREL 57
-
-/* These are aliases we can use R_TYPESZ */
-#define R_RISCV_ADDR32 R_RISCV_32
-#define R_RISCV_ADDR64 R_RISCV_64
-
-#define R_TYPE(name) R_RISCV_ ## name
-#if ELFSIZE == 32
-#define R_TYPESZ(name) R_RISCV_ ## name ## 32
-#else
-#define R_TYPESZ(name) R_RISCV_ ## name ## 64
-#endif
-
-#ifdef _KERNEL
-#ifdef ELFSIZE
-#define ELF_MD_PROBE_FUNC ELFNAME2(cpu_netbsd,probe)
-#endif
-
-struct exec_package;
-
-int cpu_netbsd_elf32_probe(struct lwp *, struct exec_package *, void *, char *,
- vaddr_t *);
-
-int cpu_netbsd_elf64_probe(struct lwp *, struct exec_package *, void *, char *,
- vaddr_t *);
-
-#endif /* _KERNEL */
-
-#endif /* _RISCV_ELF_MACHDEP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/endian.h
@@ -1,3 +0,0 @@
-/* $NetBSD: endian.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/endian.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/endian_machdep.h
@@ -1,3 +0,0 @@
-/* $NetBSD: endian_machdep.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#define _BYTE_ORDER _LITTLE_ENDIAN
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/fenv.h
@@ -1,35 +0,0 @@
-/* $NetBSD: fenv.h,v 1.3 2020/03/14 16:12:16 skrll Exp $ */
-
-/*
- * Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
- * Public domain.
- */
-
-#ifndef _RISCV_FENV_H_
-#define _RISCV_FENV_H_
-
-typedef int fenv_t; /* FPSCR */
-typedef int fexcept_t;
-
-#define FE_INEXACT 0x00 /* Result inexact */
-#define FE_UNDERFLOW 0x02 /* Result underflowed */
-#define FE_OVERFLOW 0x04 /* Result overflowed */
-#define FE_DIVBYZERO 0x08 /* divide-by-zero */
-#define FE_INVALID 0x10 /* Result invalid */
-
-#define FE_ALL_EXCEPT 0x1f
-
-#define FE_TONEAREST 0 /* round to nearest representable number */
-#define FE_TOWARDZERO 1 /* round to zero (truncate) */
-#define FE_DOWNWARD 2 /* round toward negative infinity */
-#define FE_UPWARD 3 /* round toward positive infinity */
-
-__BEGIN_DECLS
-
-/* Default floating-point environment */
-extern const fenv_t __fe_dfl_env;
-#define FE_DFL_ENV (&__fe_dfl_env)
-
-__END_DECLS
-
-#endif /* _RISCV_FENV_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/float.h
@@ -1,58 +0,0 @@
-/* $NetBSD: float.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_FLOAT_H_
-#define _RISCV_FLOAT_H_
-
-#include <sys/cdefs.h>
-
-#define LDBL_MANT_DIG __LDBL_MANT_DIG__
-#define LDBL_DIG __LDBL_DIG__
-#define LDBL_MIN_EXP __LDBL_MIN_EXP__
-#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
-#define LDBL_MAX_EXP __LDBL_MAX_EXP__
-#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
-#define LDBL_EPSILON __LDBL_EPSILON__
-#define LDBL_MIN __LDBL_MIN__
-#define LDBL_MAX __LDBL_MAX__
-
-#include <sys/float_ieee754.h>
-
-#if (!defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) \
- && !defined(_XOPEN_SOURCE)) \
- || (__STDC_VERSION__ - 0) >= 199901L \
- || (_POSIX_C_SOURCE - 0) >= 200112L \
- || ((_XOPEN_SOURCE - 0) >= 600) \
- || defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE)
-#define DECIMAL_DIG __DECIMAL_DIG__
-#endif
-
-#endif /* !_RISCV_FLOAT_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/ieee.h
@@ -1,4 +0,0 @@
-/* $NetBSD: ieee.h,v 1.2 2019/04/13 15:57:31 maya Exp $ */
-
-#include <riscv/math.h> /* for #define __HAVE_LONG_DOUBLE 128 */
-#include <sys/ieee754.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/ieeefp.h
@@ -1,44 +0,0 @@
-/* $NetBSD: ieeefp.h,v 1.2 2020/03/14 16:12:16 skrll Exp $ */
-
-/*
- * Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
- * Public domain.
- */
-
-#ifndef _RISCV_IEEEFP_H_
-#define _RISCV_IEEEFP_H_
-
-#include <sys/featuretest.h>
-
-#if defined(_NETBSD_SOURCE) || defined(_ISOC99_SOURCE)
-
-#include <riscv/fenv.h>
-
-#if !defined(_ISOC99_SOURCE)
-
-/* Exception type (used by fpsetmask() et al.) */
-
-typedef int fp_except;
-
-/* Bit defines for fp_except */
-
-#define FP_X_INV FE_INVALID /* invalid operation exception */
-#define FP_X_DZ FE_DIVBYZERO /* divide-by-zero exception */
-#define FP_X_OFL FE_OVERFLOW /* overflow exception */
-#define FP_X_UFL FE_UNDERFLOW /* underflow exception */
-#define FP_X_IMP FE_INEXACT /* imprecise (prec. loss; "inexact") */
-
-/* Rounding modes */
-
-typedef enum {
- FP_RN=FE_TONEAREST, /* round to nearest representable number */
- FP_RP=FE_UPWARD, /* round toward positive infinity */
- FP_RM=FE_DOWNWARD, /* round toward negative infinity */
- FP_RZ=FE_TOWARDZERO /* round to zero (truncate) */
-} fp_rnd;
-
-#endif /* !_ISOC99_SOURCE */
-
-#endif /* _NETBSD_SOURCE || _ISOC99_SOURCE */
-
-#endif /* _RISCV_IEEEFP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/int_const.h
@@ -1,20 +0,0 @@
-/* $NetBSD: int_const.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#ifndef __INTMAX_C_SUFFIX__
-
-#define __INT8_C_SUFFIX__
-#define __INT16_C_SUFFIX__
-#define __INT32_C_SUFFIX__
-#define __INT64_C_SUFFIX__ LL
-
-#define __UINT8_C_SUFFIX__
-#define __UINT16_C_SUFFIX__
-#define __UINT32_C_SUFFIX__
-#define __UINT64_C_SUFFIX__ ULL
-
-#define __INTMAX_C_SUFFIX__ LL
-#define __UINTMAX_C_SUFFIX__ ULL
-
-#endif
-
-#include <sys/common_int_const.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/int_fmtio.h
@@ -1,381 +0,0 @@
-/* $NetBSD: int_fmtio.h,v 1.4 2019/04/17 11:01:19 mrg Exp $ */
-
-/*-
- * Copyright (c) 2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Klaus Klein.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_INT_FMTIO_H_
-#define _RISCV_INT_FMTIO_H_
-
-#ifdef __INTPTR_FMTd__
-#include <sys/common_int_fmtio.h>
-#else
-/*
- * 7.8.1 Macros for format specifiers
- */
-
-/* fprintf macros for signed integers */
-#define PRId8 "hhd" /* int8_t */
-#define PRId16 "hd" /* int16_t */
-#define PRId32 "d" /* int32_t */
-#ifdef _LP64
-#define PRId64 "ld" /* int64_t */
-#else
-#define PRId64 "lld" /* int64_t */
-#endif
-#define PRIdLEAST8 "hhd" /* int_least8_t */
-#define PRIdLEAST16 "hd" /* int_least16_t */
-#define PRIdLEAST32 "d" /* int_least32_t */
-#ifdef _LP64
-#define PRIdLEAST64 "ld" /* int_least64_t */
-#define PRIdFAST8 "d" /* int_fast8_t */
-#define PRIdFAST16 "d" /* int_fast16_t */
-#else
-#define PRIdLEAST64 "lld" /* int_least64_t */
-#define PRIdFAST8 "hhd" /* int_fast8_t */
-#define PRIdFAST16 "hd" /* int_fast16_t */
-#endif
-#define PRIdFAST32 "d" /* int_fast32_t */
-#ifdef _LP64
-#define PRIdFAST64 "ld" /* int_fast64_t */
-#define PRIdMAX "ld" /* intmax_t */
-#else
-#define PRIdFAST64 "lld" /* int_fast64_t */
-#define PRIdMAX "lld" /* intmax_t */
-#endif
-#define PRIdPTR "ld" /* intptr_t */
-
-#define PRIi8 "hhi" /* int8_t */
-#define PRIi16 "hi" /* int16_t */
-#define PRIi32 "i" /* int32_t */
-#ifdef _LP64
-#define PRIi64 "li" /* int64_t */
-#else
-#define PRIi64 "lli" /* int64_t */
-#endif
-#define PRIiLEAST8 "hhi" /* int_least8_t */
-#define PRIiLEAST16 "hi" /* int_least16_t */
-#define PRIiLEAST32 "i" /* int_least32_t */
-#ifdef _LP64
-#define PRIiLEAST64 "li" /* int_least64_t */
-#define PRIiFAST8 "i" /* int_fast8_t */
-#define PRIiFAST16 "i" /* int_fast16_t */
-#else
-#define PRIiLEAST64 "lli" /* int_least64_t */
-#define PRIiFAST8 "hhi" /* int_fast8_t */
-#define PRIiFAST16 "hi" /* int_fast16_t */
-#endif
-#define PRIiFAST32 "i" /* int_fast32_t */
-#ifdef _LP64
-#define PRIiFAST64 "li" /* int_fast64_t */
-#define PRIiMAX "li" /* intmax_t */
-#else
-#define PRIiFAST64 "lli" /* int_fast64_t */
-#define PRIiMAX "lli" /* intmax_t */
-#endif
-#define PRIiPTR "li" /* intptr_t */
-
-/* fprintf macros for unsigned integers */
-
-#define PRIo8 "hho" /* uint8_t */
-#define PRIo16 "ho" /* uint16_t */
-#define PRIo32 "o" /* uint32_t */
-#ifdef _LP64
-#define PRIo64 "lo" /* uint64_t */
-#else
-#define PRIo64 "llo" /* uint64_t */
-#endif
-#define PRIoLEAST8 "o" /* uint_least8_t */
-#define PRIoLEAST16 "hho" /* uint_least16_t */
-#define PRIoLEAST32 "ho" /* uint_least32_t */
-#ifdef _LP64
-#define PRIoLEAST64 "lo" /* uint_least64_t */
-#define PRIoFAST8 "o" /* uint_fast8_t */
-#define PRIoFAST16 "o" /* uint_fast16_t */
-#else
-#define PRIoLEAST64 "llo" /* uint_least64_t */
-#define PRIoFAST8 "hho" /* uint_fast8_t */
-#define PRIoFAST16 "ho" /* uint_fast16_t */
-#endif
-#define PRIoFAST32 "o" /* uint_fast32_t */
-#ifdef _LP64
-#define PRIoFAST64 "lo" /* uint_fast64_t */
-#define PRIoMAX "lo" /* uintmax_t */
-#else
-#define PRIoFAST64 "llo" /* uint_fast64_t */
-#define PRIoMAX "llo" /* uintmax_t */
-#endif
-#define PRIoPTR "lo" /* uintptr_t */
-
-#define PRIu8 "hhu" /* uint8_t */
-#define PRIu16 "hu" /* uint16_t */
-#define PRIu32 "u" /* uint32_t */
-#ifdef _LP64
-#define PRIu64 "lu" /* uint64_t */
-#else
-#define PRIu64 "llu" /* uint64_t */
-#endif
-#define PRIuLEAST8 "hhu" /* uint_least8_t */
-#define PRIuLEAST16 "hu" /* uint_least16_t */
-#define PRIuLEAST32 "u" /* uint_least32_t */
-#ifdef _LP64
-#define PRIuLEAST64 "lu" /* uint_least64_t */
-#define PRIuFAST8 "u" /* uint_fast8_t */
-#define PRIuFAST16 "u" /* uint_fast16_t */
-#else
-#define PRIuLEAST64 "llu" /* uint_least64_t */
-#define PRIuFAST8 "hhu" /* uint_fast8_t */
-#define PRIuFAST16 "hu" /* uint_fast16_t */
-#endif
-#define PRIuFAST32 "u" /* uint_fast32_t */
-#ifdef _LP64
-#define PRIuFAST64 "lu" /* uint_fast64_t */
-#define PRIuMAX "lu" /* uintmax_t */
-#else
-#define PRIuFAST64 "llu" /* uint_fast64_t */
-#define PRIuMAX "llu" /* uintmax_t */
-#endif
-#define PRIuPTR "lu" /* uintptr_t */
-
-#define PRIx8 "hhx" /* uint8_t */
-#define PRIx16 "hx" /* uint16_t */
-#define PRIx32 "x" /* uint32_t */
-#ifdef _LP64
-#define PRIx64 "lx" /* uint64_t */
-#else
-#define PRIx64 "llx" /* uint64_t */
-#endif
-#define PRIxLEAST8 "x" /* uint_least8_t */
-#define PRIxLEAST16 "x" /* uint_least16_t */
-#define PRIxLEAST32 "x" /* uint_least32_t */
-#ifdef _LP64
-#define PRIxLEAST64 "lx" /* uint_least64_t */
-#define PRIxFAST8 "x" /* uint_fast8_t */
-#define PRIxFAST16 "x" /* uint_fast16_t */
-#else
-#define PRIxLEAST64 "llx" /* uint_least64_t */
-#define PRIxFAST8 "hhx" /* uint_fast8_t */
-#define PRIxFAST16 "hx" /* uint_fast16_t */
-#endif
-#define PRIxFAST32 "x" /* uint_fast32_t */
-#ifdef _LP64
-#define PRIxFAST64 "lx" /* uint_fast64_t */
-#define PRIxMAX "lx" /* uintmax_t */
-#else
-#define PRIxFAST64 "llx" /* uint_fast64_t */
-#define PRIxMAX "llx" /* uintmax_t */
-#endif
-#define PRIxPTR "lx" /* uintptr_t */
-
-#define PRIX8 "hhX" /* uint8_t */
-#define PRIX16 "hX" /* uint16_t */
-#define PRIX32 "X" /* uint32_t */
-#ifdef _LP64
-#define PRIX64 "lX" /* uint64_t */
-#else
-#define PRIX64 "llX" /* uint64_t */
-#endif
-#define PRIXLEAST8 "X" /* uint_least8_t */
-#define PRIXLEAST16 "X" /* uint_least16_t */
-#define PRIXLEAST32 "X" /* uint_least32_t */
-#ifdef _LP64
-#define PRIXLEAST64 "lX" /* uint_least64_t */
-#define PRIXFAST8 "X" /* uint_fast8_t */
-#define PRIXFAST16 "X" /* uint_fast16_t */
-#else
-#define PRIXLEAST64 "llX" /* uint_least64_t */
-#define PRIXFAST8 "hhX" /* uint_fast8_t */
-#define PRIXFAST16 "hX" /* uint_fast16_t */
-#endif
-#define PRIXFAST32 "X" /* uint_fast32_t */
-#ifdef _LP64
-#define PRIXFAST64 "lX" /* uint_fast64_t */
-#define PRIXMAX "lX" /* uintmax_t */
-#else
-#define PRIXFAST64 "llX" /* uint_fast64_t */
-#define PRIXMAX "llX" /* uintmax_t */
-#endif
-#define PRIXPTR "lX" /* uintptr_t */
-
-/* fscanf macros for signed integers */
-
-#define SCNd8 "hhd" /* int8_t */
-#define SCNd16 "hd" /* int16_t */
-#define SCNd32 "d" /* int32_t */
-#ifdef _LP64
-#define SCNd64 "ld" /* int64_t */
-#else
-#define SCNd64 "lld" /* int64_t */
-#endif
-#define SCNdLEAST8 "hhd" /* int_least8_t */
-#define SCNdLEAST16 "hd" /* int_least16_t */
-#define SCNdLEAST32 "d" /* int_least32_t */
-#ifdef _LP64
-#define SCNdLEAST64 "ld" /* int_least64_t */
-#define SCNdFAST8 "d" /* int_fast8_t */
-#define SCNdFAST16 "d" /* int_fast16_t */
-#else
-#define SCNdLEAST64 "lld" /* int_least64_t */
-#define SCNdFAST8 "hhd" /* int_fast8_t */
-#define SCNdFAST16 "hd" /* int_fast16_t */
-#endif
-#define SCNdFAST32 "d" /* int_fast32_t */
-#ifdef _LP64
-#define SCNdFAST64 "ld" /* int_fast64_t */
-#define SCNdMAX "ld" /* intmax_t */
-#else
-#define SCNdFAST64 "lld" /* int_fast64_t */
-#define SCNdMAX "lld" /* intmax_t */
-#endif
-#define SCNdPTR "ld" /* intptr_t */
-
-#define SCNi8 "hhi" /* int8_t */
-#define SCNi16 "hi" /* int16_t */
-#define SCNi32 "i" /* int32_t */
-#ifdef _LP64
-#define SCNi64 "li" /* int64_t */
-#else
-#define SCNi64 "lli" /* int64_t */
-#endif
-#define SCNiLEAST8 "hhi" /* int_least8_t */
-#define SCNiLEAST16 "hi" /* int_least16_t */
-#define SCNiLEAST32 "i" /* int_least32_t */
-#ifdef _LP64
-#define SCNiLEAST64 "li" /* int_least64_t */
-#define SCNiFAST8 "i" /* int_fast8_t */
-#define SCNiFAST16 "i" /* int_fast16_t */
-#else
-#define SCNiLEAST64 "lli" /* int_least64_t */
-#define SCNiFAST8 "hhi" /* int_fast8_t */
-#define SCNiFAST16 "hi" /* int_fast16_t */
-#endif
-#define SCNiFAST32 "i" /* int_fast32_t */
-#ifdef _LP64
-#define SCNiFAST64 "li" /* int_fast64_t */
-#define SCNiMAX "li" /* intmax_t */
-#else
-#define SCNiFAST64 "lli" /* int_fast64_t */
-#define SCNiMAX "lli" /* intmax_t */
-#endif
-#define SCNiPTR "li" /* intptr_t */
-
-/* fscanf macros for unsigned integers */
-
-#define SCNo8 "hho" /* uint8_t */
-#define SCNo16 "ho" /* uint16_t */
-#define SCNo32 "o" /* uint32_t */
-#ifdef _LP64
-#define SCNo64 "lo" /* uint64_t */
-#else
-#define SCNo64 "llo" /* uint64_t */
-#endif
-#define SCNoLEAST8 "hho" /* uint_least8_t */
-#define SCNoLEAST16 "ho" /* uint_least16_t */
-#define SCNoLEAST32 "o" /* uint_least32_t */
-#ifdef _LP64
-#define SCNoLEAST64 "lo" /* uint_least64_t */
-#define SCNoFAST8 "o" /* uint_fast8_t */
-#define SCNoFAST16 "o" /* uint_fast16_t */
-#else
-#define SCNoLEAST64 "llo" /* uint_least64_t */
-#define SCNoFAST8 "hho" /* uint_fast8_t */
-#define SCNoFAST16 "ho" /* uint_fast16_t */
-#endif
-#define SCNoFAST32 "o" /* uint_fast32_t */
-#ifdef _LP64
-#define SCNoFAST64 "lo" /* uint_fast64_t */
-#define SCNoMAX "lo" /* uintmax_t */
-#else
-#define SCNoFAST64 "llo" /* uint_fast64_t */
-#define SCNoMAX "llo" /* uintmax_t */
-#endif
-#define SCNoPTR "lo" /* uintptr_t */
-
-#define SCNu8 "hhu" /* uint8_t */
-#define SCNu16 "hu" /* uint16_t */
-#define SCNu32 "u" /* uint32_t */
-#ifdef _LP64
-#define SCNu64 "lu" /* uint64_t */
-#else
-#define SCNu64 "llu" /* uint64_t */
-#endif
-#define SCNuLEAST8 "hhu" /* uint_least8_t */
-#define SCNuLEAST16 "hu" /* uint_least16_t */
-#define SCNuLEAST32 "u" /* uint_least32_t */
-#ifdef _LP64
-#define SCNuLEAST64 "lu" /* uint_least64_t */
-#define SCNuFAST8 "u" /* uint_fast8_t */
-#define SCNuFAST16 "u" /* uint_fast16_t */
-#else
-#define SCNuLEAST64 "llu" /* uint_least64_t */
-#define SCNuFAST8 "hhu" /* uint_fast8_t */
-#define SCNuFAST16 "hu" /* uint_fast16_t */
-#endif
-#define SCNuFAST32 "u" /* uint_fast32_t */
-#ifdef _LP64
-#define SCNuFAST64 "lu" /* uint_fast64_t */
-#define SCNuMAX "lu" /* uintmax_t */
-#else
-#define SCNuFAST64 "llu" /* uint_fast64_t */
-#define SCNuMAX "llu" /* uintmax_t */
-#endif
-#define SCNuPTR "lu" /* uintptr_t */
-
-#define SCNx8 "hhx" /* uint8_t */
-#define SCNx16 "hx" /* uint16_t */
-#define SCNx32 "x" /* uint32_t */
-#ifdef _LP64
-#define SCNx64 "lx" /* uint64_t */
-#else
-#define SCNx64 "llx" /* uint64_t */
-#endif
-#define SCNxLEAST8 "hhx" /* uint_least8_t */
-#define SCNxLEAST16 "hx" /* uint_least16_t */
-#define SCNxLEAST32 "x" /* uint_least32_t */
-#ifdef _LP64
-#define SCNxLEAST64 "lx" /* uint_least64_t */
-#define SCNxFAST8 "x" /* uint_fast8_t */
-#define SCNxFAST16 "x" /* uint_fast16_t */
-#else
-#define SCNxLEAST64 "llx" /* uint_least64_t */
-#define SCNxFAST8 "hhx" /* uint_fast8_t */
-#define SCNxFAST16 "hx" /* uint_fast16_t */
-#endif
-#define SCNxFAST32 "x" /* uint_fast32_t */
-#ifdef _LP64
-#define SCNxFAST64 "lx" /* uint_fast64_t */
-#define SCNxMAX "lx" /* uintmax_t */
-#else
-#define SCNxFAST64 "llx" /* uint_fast64_t */
-#define SCNxMAX "llx" /* uintmax_t */
-#endif
-#define SCNxPTR "lx" /* uintptr_t */
-
-#endif /* !__INTPTR_FMTd__ */
-
-#endif /* !_RISCV_INT_FMTIO_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/int_limits.h
@@ -1,3 +0,0 @@
-/* $NetBSD: int_limits.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_int_limits.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/int_mwgwtypes.h
@@ -1,3 +0,0 @@
-/* $NetBSD: int_mwgwtypes.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_int_mwgwtypes.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/int_types.h
@@ -1,3 +0,0 @@
-/* $NetBSD: int_types.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_int_types.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/kcore.h
@@ -1,40 +0,0 @@
-/* $NetBSD: kcore.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_KCORE_H_
-#define _RISCV_KCORE_H_
-
-typedef struct cpu_kcore_hdr {
- uint64_t kh_misc[8];
- phys_ram_seg_t kh_ramsegs[0];
-} cpu_kcore_hdr_t;
-
-#endif /* _RISCV_KCORE_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/limits.h
@@ -1,3 +0,0 @@
-/* $NetBSD: limits.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_limits.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/lock.h
@@ -1,3 +0,0 @@
-/* $NetBSD: lock.h,v 1.4 2015/06/26 14:27:35 matt Exp $ */
-
-#include <sys/common_lock.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/math.h
@@ -1,4 +0,0 @@
-/* $NetBSD: math.h,v 1.3 2019/04/16 07:40:02 maya Exp $ */
-
-#define __HAVE_NANF
-#define __HAVE_LONG_DOUBLE 128
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/mcontext.h
@@ -1,170 +0,0 @@
-/* $NetBSD: mcontext.h,v 1.6 2020/03/14 16:12:16 skrll Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _RISCV_MCONTEXT_H_
-#define _RISCV_MCONTEXT_H_
-
-/*
- */
-
-#define _NGREG 32 /* GR1-31 */
-#define _NFREG 33 /* F0-31, FCSR */
-
-/*
- * This fragment is common to <riscv/mcontext.h> and <riscv/reg.h>
- */
-#ifndef _BSD_FPREG_T_
-union __fpreg {
- __uint64_t u_u64;
- double u_d;
-};
-#define _BSD_FPREG_T_ union __fpreg
-#endif
-
-typedef __uint64_t __greg_t;
-typedef __greg_t __gregset_t[_NGREG];
-typedef __uint32_t __greg32_t;
-typedef __greg32_t __gregset32_t[_NGREG];
-typedef _BSD_FPREG_T_ __fregset_t[_NFREG];
-
-#define _REG_X1 0
-#define _REG_X2 1
-#define _REG_X3 2
-#define _REG_X4 3
-#define _REG_X5 4
-#define _REG_X6 5
-#define _REG_X7 6
-#define _REG_X8 7
-#define _REG_X9 8
-#define _REG_X10 9
-#define _REG_X11 10
-#define _REG_X12 11
-#define _REG_X13 12
-#define _REG_X14 13
-#define _REG_X15 14
-#define _REG_X16 15
-#define _REG_X17 16
-#define _REG_X18 17
-#define _REG_X19 18
-#define _REG_X20 19
-#define _REG_X21 20
-#define _REG_X22 21
-#define _REG_X23 22
-#define _REG_X24 23
-#define _REG_X25 24
-#define _REG_X26 25
-#define _REG_X27 26
-#define _REG_X28 27
-#define _REG_X29 28
-#define _REG_X30 29
-#define _REG_X31 30
-#define _REG_PC 31
-
-#define _REG_RA _REG_X1
-#define _REG_SP _REG_X2
-#define _REG_GP _REG_X3
-#define _REG_TP _REG_X4
-#define _REG_S0 _REG_X8
-#define _REG_RV _REG_X10
-#define _REG_A0 _REG_X10
-
-#define _REG_F0 0
-#define _REG_FPCSR 32
-
-typedef struct {
- __gregset_t __gregs; /* General Purpose Register set */
- __fregset_t __fregs; /* Floating Point Register set */
- __greg_t __private; /* copy of l_private */
- __greg_t __spare[8]; /* future proof */
-} mcontext_t;
-
-typedef struct {
- __gregset32_t __gregs; /* General Purpose Register set */
- __fregset_t __fregs; /* Floating Point Register set */
- __greg32_t __private; /* copy of l_private */
- __greg32_t __spare[8]; /* future proof */
-} mcontext32_t;
-
-/* Machine-dependent uc_flags */
-#define _UC_SETSTACK 0x00010000 /* see <sys/ucontext.h> */
-#define _UC_CLRSTACK 0x00020000 /* see <sys/ucontext.h> */
-#define _UC_TLSBASE 0x00080000 /* see <sys/ucontext.h> */
-
-#define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP])
-#define _UC_MACHINE_FP(uc) ((uc)->uc_mcontext.__gregs[_REG_S0])
-#define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC])
-#define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_RV])
-
-#define _UC_MACHINE_SET_PC(uc, pc) _UC_MACHINE_PC(uc) = (pc)
-
-#if defined(_RTLD_SOURCE) || defined(_LIBC_SOURCE) || defined(__LIBPTHREAD_SOURCE__)
-#include <sys/tls.h>
-
-/*
- * On RISCV, since displacements are signed 12-bit values, the TCB pointer is
- * not and points to the first static entry.
- */
-#define TLS_TP_OFFSET 0x0
-#define TLS_DTV_OFFSET 0x800
-__CTASSERT(TLS_TP_OFFSET + sizeof(struct tls_tcb) < 0x800);
-
-static __inline void *
-__lwp_getprivate_fast(void)
-{
- void *__tp;
- __asm("move %0,tp" : "=r"(__tp));
- return __tp;
-}
-
-static __inline void *
-__lwp_gettcb_fast(void)
-{
- void *__tcb;
-
- __asm __volatile(
- "addi %[__tcb],tp,%[__offset]"
- : [__tcb] "=r" (__tcb)
- : [__offset] "n" (-(TLS_TP_OFFSET + sizeof(struct tls_tcb))));
-
- return __tcb;
-}
-
-static __inline void
-__lwp_settcb(void *__tcb)
-{
- __asm __volatile(
- "addi tp,%[__tcb],%[__offset]"
- :
- : [__tcb] "r" (__tcb),
- [__offset] "n" (TLS_TP_OFFSET + sizeof(struct tls_tcb)));
-}
-#endif /* _RTLD_SOURCE || _LIBC_SOURCE || __LIBPTHREAD_SOURCE__ */
-
-#endif /* !_RISCV_MCONTEXT_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/mutex.h
@@ -1,124 +0,0 @@
-/* $NetBSD: mutex.h,v 1.4.4.1 2023/08/09 17:42:03 martin Exp $ */
-
-/*-
- * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Jason R. Thorpe and Andrew Doran.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_MUTEX_H_
-#define _RISCV_MUTEX_H_
-
-#include <sys/types.h>
-
-#ifndef __MUTEX_PRIVATE
-
-struct kmutex {
- uintptr_t mtx_pad1;
-};
-
-#else /* __MUTEX_PRIVATE */
-
-#include <sys/cdefs.h>
-
-#include <sys/param.h>
-
-#include <machine/intr.h>
-
-struct kmutex {
- volatile uintptr_t mtx_owner;
-};
-
-#ifdef _LP64
-#define MTX_ASMOP_SFX ".d" // doubleword atomic op
-#else
-#define MTX_ASMOP_SFX ".w" // word atomic op
-#endif
-
-#define MTX_LOCK __BIT(8) // just one bit
-#define MTX_IPL __BITS(7,4) // only need 4 bits
-
-#undef MUTEX_SPIN_IPL // override <sys/mutex.h>
-#define MUTEX_SPIN_IPL(a) riscv_mutex_spin_ipl(a)
-#define MUTEX_INITIALIZE_SPIN_IPL(a,b) riscv_mutex_initialize_spin_ipl(a,b)
-#define MUTEX_SPINBIT_LOCK_INIT(a) riscv_mutex_spinbit_lock_init(a)
-#define MUTEX_SPINBIT_LOCK_TRY(a) riscv_mutex_spinbit_lock_try(a)
-#define MUTEX_SPINBIT_LOCKED_P(a) riscv_mutex_spinbit_locked_p(a)
-#define MUTEX_SPINBIT_LOCK_UNLOCK(a) riscv_mutex_spinbit_lock_unlock(a)
-
-static inline ipl_cookie_t
-riscv_mutex_spin_ipl(kmutex_t *__mtx)
-{
- return (ipl_cookie_t){._spl = __SHIFTOUT(__mtx->mtx_owner, MTX_IPL)};
-}
-
-static inline void
-riscv_mutex_initialize_spin_ipl(kmutex_t *__mtx, int ipl)
-{
- __mtx->mtx_owner = (__mtx->mtx_owner & ~MTX_IPL)
- | __SHIFTIN(ipl, MTX_IPL);
-}
-
-static inline void
-riscv_mutex_spinbit_lock_init(kmutex_t *__mtx)
-{
- __mtx->mtx_owner &= ~MTX_LOCK;
-}
-
-static inline bool
-riscv_mutex_spinbit_locked_p(const kmutex_t *__mtx)
-{
- return (__mtx->mtx_owner & MTX_LOCK) != 0;
-}
-
-static inline bool
-riscv_mutex_spinbit_lock_try(kmutex_t *__mtx)
-{
- uintptr_t __old;
- __asm __volatile(
- "amoor" MTX_ASMOP_SFX ".aq\t%0, %1, (%2)"
- : "=r"(__old)
- : "r"(MTX_LOCK), "r"(__mtx));
- return (__old & MTX_LOCK) == 0;
-}
-
-static inline void
-riscv_mutex_spinbit_lock_unlock(kmutex_t *__mtx)
-{
- __asm __volatile(
- "amoand" MTX_ASMOP_SFX ".rl\tx0, %0, (%1)"
- :: "r"(~MTX_LOCK), "r"(__mtx));
-}
-
-#if 0
-#define __HAVE_MUTEX_STUBS 1
-#define __HAVE_SPIN_MUTEX_STUBS 1
-#endif
-#define __HAVE_SIMPLE_MUTEXES 1
-
-#endif /* __MUTEX_PRIVATE */
-
-#endif /* _RISCV_MUTEX_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/param.h
@@ -1,106 +0,0 @@
-/* $NetBSD: param.h,v 1.7 2022/10/12 07:50:00 simonb Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PARAM_H_
-#define _RISCV_PARAM_H_
-
-#ifdef _KERNEL_OPT
-#include "opt_param.h"
-#endif
-
-/*
- * Machine dependent constants for all OpenRISC processors
- */
-
-/*
- * For KERNEL code:
- * MACHINE must be defined by the individual port. This is so that
- * uname returns the correct thing, etc.
- *
- * For non-KERNEL code:
- * If ELF, MACHINE and MACHINE_ARCH are forced to "or1k/or1k".
- */
-
-#ifdef _LP64
-#define _MACHINE_ARCH riscv64
-#define MACHINE_ARCH "riscv64"
-#define _MACHINE_ARCH32 riscv32
-#define MACHINE_ARCH32 "riscv32"
-#else
-#define _MACHINE_ARCH riscv32
-#define MACHINE_ARCH "riscv32"
-#endif
-#define _MACHINE riscv
-#define MACHINE "riscv"
-
-#define MID_MACHINE MID_RISCV
-
-/* RISCV-specific macro to align a stack pointer (downwards). */
-#define STACK_ALIGNBYTES (__BIGGEST_ALIGNMENT__ - 1)
-#define ALIGNBYTES32 __BIGGEST_ALIGNMENT__
-
-#define NKMEMPAGES_MIN_DEFAULT ((128UL * 1024 * 1024) >> PAGE_SHIFT)
-#define NKMEMPAGES_MAX_UNLIMITED 1
-
-#define PGSHIFT 12
-#define NBPG (1 << PGSHIFT)
-#define PGOFSET (NBPG - 1)
-
-#define UPAGES 2
-#define USPACE (UPAGES << PGSHIFT)
-#define USPACE_ALIGN NBPG
-
-/*
- * Constants related to network buffer management.
- * MCLBYTES must be no larger than NBPG (the software page size), and
- * NBPG % MCLBYTES must be zero.
- */
-#define MSIZE 512 /* size of an mbuf */
-
-#ifndef MCLSHIFT
-#define MCLSHIFT 11 /* convert bytes to m_buf clusters */
- /* 2K cluster can hold Ether frame */
-#endif /* MCLSHIFT */
-
-#define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */
-
-#ifndef MSGBUFSIZE
-#define MSGBUFSIZE 65536 /* default message buffer size */
-#endif
-
-#define MAXCPUS 32
-
-#ifdef _KERNEL
-void delay(unsigned long);
-#define DELAY(x) delay(x)
-#endif
-
-#endif /* _RISCV_PARAM_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/pcb.h
@@ -1,46 +0,0 @@
-/* $NetBSD: pcb.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PCB_H_
-#define _RISCV_PCB_H_
-
-#include <riscv/reg.h>
-
-struct pcb {
- struct fpreg pcb_fpregs;
-};
-
-struct md_coredump {
- struct reg reg;
- struct fpreg fpreg;
-};
-
-#endif /* _RISCV_PCB_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/pmap.h
@@ -1,213 +0,0 @@
-/* $NetBSD: pmap.h,v 1.13 2022/10/20 07:18:11 skrll Exp $ */
-
-/*
- * Copyright (c) 2014, 2019, 2021 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas (of 3am Software Foundry), Maxime Villard, and
- * Nick Hudson.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PMAP_H_
-#define _RISCV_PMAP_H_
-
-#ifdef _KERNEL_OPT
-#include "opt_modular.h"
-#endif
-
-#if !defined(_MODULE)
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <sys/pool.h>
-#include <sys/evcnt.h>
-
-#include <uvm/uvm_physseg.h>
-#include <uvm/pmap/vmpagemd.h>
-
-#include <riscv/pte.h>
-#include <riscv/sysreg.h>
-
-#define PMAP_SEGTABSIZE NPTEPG
-#define PMAP_PDETABSIZE NPTEPG
-
-#ifdef _LP64
-#define PTPSHIFT 3
-/* This is SV48. */
-//#define SEGLENGTH + SEGSHIFT + SEGSHIFT */
-
-/* This is SV39. */
-#define XSEGSHIFT (SEGSHIFT + SEGLENGTH)
-#define NBXSEG (1ULL << XSEGSHIFT)
-#define XSEGOFSET (NBXSEG - 1) /* byte offset into xsegment */
-#define XSEGLENGTH (PGSHIFT - 3)
-#define NXSEGPG (1 << XSEGLENGTH)
-#else
-#define PTPSHIFT 2
-#define XSEGSHIFT SEGSHIFT
-#endif
-
-#define SEGLENGTH (PGSHIFT - PTPSHIFT)
-#define SEGSHIFT (SEGLENGTH + PGSHIFT)
-#define NBSEG (1 << SEGSHIFT) /* bytes/segment */
-#define SEGOFSET (NBSEG - 1) /* byte offset into segment */
-
-#define KERNEL_PID 0
-
-#define PMAP_HWPAGEWALKER 1
-#define PMAP_TLB_MAX 1
-#ifdef _LP64
-#define PMAP_INVALID_PDETAB_ADDRESS ((pmap_pdetab_t *)(VM_MIN_KERNEL_ADDRESS - PAGE_SIZE))
-#define PMAP_INVALID_SEGTAB_ADDRESS ((pmap_segtab_t *)(VM_MIN_KERNEL_ADDRESS - PAGE_SIZE))
-#else
-#define PMAP_INVALID_PDETAB_ADDRESS ((pmap_pdetab_t *)0xdeadbeef)
-#define PMAP_INVALID_SEGTAB_ADDRESS ((pmap_segtab_t *)0xdeadbeef)
-#endif
-#define PMAP_TLB_NUM_PIDS (__SHIFTOUT_MASK(SATP_ASID) + 1)
-#define PMAP_TLB_BITMAP_LENGTH PMAP_TLB_NUM_PIDS
-#define PMAP_TLB_FLUSH_ASID_ON_RESET false
-
-#define pmap_phys_address(x) (x)
-
-#ifndef __BSD_PTENTRY_T__
-#define __BSD_PTENTRY_T__
-#ifdef _LP64
-#define PRIxPTE PRIx64
-#else
-#define PRIxPTE PRIx32
-#endif
-#endif /* __BSD_PTENTRY_T__ */
-
-#define PMAP_NEED_PROCWR
-static inline void
-pmap_procwr(struct proc *p, vaddr_t va, vsize_t len)
-{
- __asm __volatile("fence\trw,rw; fence.i" ::: "memory");
-}
-
-#include <uvm/pmap/tlb.h>
-#include <uvm/pmap/pmap_tlb.h>
-
-#define PMAP_GROWKERNEL
-#define PMAP_STEAL_MEMORY
-
-#ifdef _KERNEL
-
-#define __HAVE_PMAP_MD
-struct pmap_md {
- paddr_t md_ppn;
- pd_entry_t *md_pdetab;
-};
-
-struct vm_page *
- pmap_md_alloc_poolpage(int flags);
-vaddr_t pmap_md_map_poolpage(paddr_t, vsize_t);
-void pmap_md_unmap_poolpage(vaddr_t, vsize_t);
-bool pmap_md_direct_mapped_vaddr_p(vaddr_t);
-bool pmap_md_io_vaddr_p(vaddr_t);
-paddr_t pmap_md_direct_mapped_vaddr_to_paddr(vaddr_t);
-vaddr_t pmap_md_direct_map_paddr(paddr_t);
-void pmap_md_init(void);
-
-void pmap_md_xtab_activate(struct pmap *, struct lwp *);
-void pmap_md_xtab_deactivate(struct pmap *);
-void pmap_md_pdetab_init(struct pmap *);
-bool pmap_md_ok_to_steal_p(const uvm_physseg_t, size_t);
-
-void pmap_bootstrap(vaddr_t kstart, vaddr_t kend);
-
-extern vaddr_t pmap_direct_base;
-extern vaddr_t pmap_direct_end;
-#define PMAP_DIRECT_MAP(pa) (pmap_direct_base + (pa))
-#define PMAP_DIRECT_UNMAP(va) ((paddr_t)(va) - pmap_direct_base)
-
-#define MEGAPAGE_TRUNC(x) ((x) & ~SEGOFSET)
-#define MEGAPAGE_ROUND(x) MEGAPAGE_TRUNC((x) + SEGOFSET)
-
-#ifdef __PMAP_PRIVATE
-
-static inline bool
-pmap_md_tlb_check_entry(void *ctx, vaddr_t va, tlb_asid_t asid, pt_entry_t pte)
-{
- // TLB not walked and so not called.
- return false;
-}
-
-static inline void
-pmap_md_page_syncicache(struct vm_page_md *mdpg, const kcpuset_t *kc)
-{
- __asm __volatile("fence\trw,rw; fence.i" ::: "memory");
-}
-
-/*
- * Virtual Cache Alias helper routines. Not a problem for RISCV CPUs.
- */
-static inline bool
-pmap_md_vca_add(struct vm_page_md *mdpg, vaddr_t va, pt_entry_t *nptep)
-{
- return false;
-}
-
-static inline void
-pmap_md_vca_remove(struct vm_page_md *mdpg, vaddr_t va)
-{
-}
-
-static inline void
-pmap_md_vca_clean(struct vm_page_md *mdpg, vaddr_t va, int op)
-{
-}
-
-static inline size_t
-pmap_md_tlb_asid_max(void)
-{
- return PMAP_TLB_NUM_PIDS - 1;
-}
-
-#endif /* __PMAP_PRIVATE */
-#endif /* _KERNEL */
-
-#include <uvm/pmap/pmap.h>
-
-#endif /* !_MODULE */
-
-#if defined(MODULAR) || defined(_MODULE)
-/*
- * Define a compatible vm_page_md so that struct vm_page is the same size
- * whether we are using modules or not.
- */
-#ifndef __HAVE_VM_PAGE_MD
-#define __HAVE_VM_PAGE_MD
-
-struct vm_page_md {
- uintptr_t mdpg_dummy[3];
-};
-__CTASSERT(sizeof(struct vm_page_md) == sizeof(uintptr_t)*3);
-
-#endif /* !__HAVE_VM_PAGE_MD */
-
-#endif /* MODULAR || _MODULE */
-
-#endif /* !_RISCV_PMAP_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/proc.h
@@ -1,71 +0,0 @@
-/* $NetBSD: proc.h,v 1.3 2015/03/31 06:47:47 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PROC_H_
-#define _RISCV_PROC_H_
-
-#include <sys/param.h>
-#include <riscv/vmparam.h>
-
-struct lwp;
-
-/*
- * Machine-dependent part of the lwp structure for RISCV
- */
-struct trapframe;
-
-struct mdlwp {
- struct trapframe *md_utf; /* trapframe from userspace */
- struct trapframe *md_ktf; /* trapframe from userspace */
- struct faultbuf *md_onfault; /* registers to store on fault */
- register_t md_usp; /* for locore.S */
- vaddr_t md_ss_addr; /* single step address for ptrace */
- int md_ss_instr; /* single step instruction for ptrace */
- volatile int md_astpending; /* AST pending on return to userland */
-#if 0
-#if USPACE > PAGE_SIZE
- int md_upte[USPACE/4096]; /* ptes for mapping u page */
-#else
- int md_dpte[USPACE/4096]; /* dummy ptes to keep the same */
-#endif
-#endif
-};
-
-struct mdproc {
- /* syscall entry for this process */
- void (*md_syscall)(struct trapframe *);
-};
-
-#ifdef _KERNEL
-#define LWP0_CPU_INFO &cpu_info_store /* staticly set in lwp0 */
-#endif /* _KERNEL */
-
-#endif /* _RISCV_PROC_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/profile.h
@@ -1,91 +0,0 @@
-/* $NetBSD: profile.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PROFILE_H_
-#define _RISCV_PROFILE_H_
-
-#define _MCOUNT_DECL void _mcount
-
-/*
- * Cannot implement mcount in C as GCC will trash the ip register when it
- * pushes a trapframe. Pity we cannot insert assembly before the function
- * prologue.
- */
-
-#define MCOUNT_ASM_NAME "__mcount"
-#define PLTSYM
-
-#if 0
-#define MCOUNT \
- __asm(".text"); \
- __asm(".align 0"); \
- __asm(".type " MCOUNT_ASM_NAME ",@function"); \
- __asm(".global " MCOUNT_ASM_NAME); \
- __asm(MCOUNT_ASM_NAME ":"); \
- /* \
- * Preserve registers that are trashed during mcount \
- */ \
- __asm("sub sp, sp, #80"); \
- __asm("stp x29, x30, [sp, #64]"); \
- __asm("add x29, sp, #64"); \
- __asm("stp x0, x1, [x29, #0]"); \
- __asm("stp x2, x3, [x29, #16]"); \
- __asm("stp x4, x5, [x29, #32]"); \
- __asm("stp x6, x7, [x29, #48]"); \
- /* \
- * find the return address for mcount, \
- * and the return address for mcount's caller. \
- * \
- * frompcindex = pc pushed by call into self. \
- */ \
- __asm("mov x0, x19"); \
- /* \
- * selfpc = pc pushed by mcount call \
- */ \
- __asm("mov x1, x30"); \
- /* \
- * Call the real mcount code \
- */ \
- __asm("bl " ___STRING(_C_LABEL(_mcount))); \
- /* \
- * Restore registers that were trashed during mcount \
- */ \
- __asm("ldp x0, x1, [x29, #0]"); \
- __asm("ldp x2, x3, [x29, #16]"); \
- __asm("ldp x4, x5, [x29, #32]"); \
- __asm("ldp x6, x7, [x29, #48]"); \
- __asm("ldp x29, x30, [x29, #64]"); \
- __asm("add sp, sp, #80"); \
- __asm("ret"); \
- __asm(".size " MCOUNT_ASM_NAME ", .-" MCOUNT_ASM_NAME);
-#endif
-
-#endif /* _RISCV_PROFILE_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/ptrace.h
@@ -1,57 +0,0 @@
-/* $NetBSD: ptrace.h,v 1.3 2019/06/18 21:18:12 kamil Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_PTRACE_H_
-#define _RISCV_PTRACE_H_
-
-/*
- * RISCV-dependent ptrace definitions.
- * Note that PT_STEP is _not_ supported.
- */
-#define PT_GETREGS (PT_FIRSTMACH + 0)
-#define PT_SETREGS (PT_FIRSTMACH + 1)
-#define PT_GETFPREGS (PT_FIRSTMACH + 2)
-#define PT_SETFPREGS (PT_FIRSTMACH + 3)
-
-#define PT_MACHDEP_STRINGS \
- "PT_GETREGS", \
- "PT_SETREGS", \
- "PT_GETFPREGS", \
- "PT_SETFPREGS"
-
-#include <machine/reg.h>
-#define PTRACE_REG_PC(r) (r)->r_pc
-#define PTRACE_REG_FP(r) (r)->r_reg[7]
-#define PTRACE_REG_SET_PC(r, v) (r)->r_pc = (v)
-#define PTRACE_REG_SP(r) (r)->r_reg[1]
-#define PTRACE_REG_INTRV(r) (r)->r_reg[9]
-
-#endif /* _RISCV_PTRACE_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/reg.h
@@ -1,125 +0,0 @@
-/* $NetBSD: reg.h,v 1.10 2022/12/13 22:25:08 skrll Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_REG_H_
-#define _RISCV_REG_H_
-
-// x0 = 0
-// x1 = ra (return address) Caller
-// x2 = sp (stack pointer) Callee
-// x3 = gp (global pointer)
-// x4 = tp (thread pointer)
-// x5 - x7 = t0 - t2 (temporary) Caller
-// x8 = s0/fp (saved register / frame pointer) Callee
-// x9 = s1 (saved register) Callee
-// x10 - x11 = a0 - a1 (arguments/return values) Caller
-// x12 - x17 = a2 - a7 (arguments) Caller
-// x18 - x27 = s2 - s11 (saved registers) Callee
-// x28 - x31 = t3 - t6 (temporaries) Caller
-
-struct reg { // synced with register_t in <riscv/types.h>
-#ifdef _LP64
- __uint64_t r_reg[31]; /* x0 is always 0 */
- __uint64_t r_pc;
-#else
- __uint32_t r_reg[31]; /* x0 is always 0 */
- __uint32_t r_pc;
-#endif
-};
-
-#ifdef _LP64
-struct reg32 { // synced with register_t in <riscv/types.h>
- __uint32_t r_reg[31]; /* x0 is always 0 */
- __uint32_t r_pc;
-};
-#endif
-
-#define _XREG(n) ((n) - 1)
-#define _X_RA _XREG(1)
-#define _X_SP _XREG(2)
-#define _X_GP _XREG(3)
-#define _X_TP _XREG(4)
-#define _X_T0 _XREG(5)
-#define _X_T1 _XREG(6)
-#define _X_T2 _XREG(7)
-#define _X_S0 _XREG(8)
-#define _X_S1 _XREG(9)
-#define _X_A0 _XREG(10)
-#define _X_A1 _XREG(11)
-#define _X_A2 _XREG(12)
-#define _X_A3 _XREG(13)
-#define _X_A4 _XREG(14)
-#define _X_A5 _XREG(15)
-#define _X_A6 _XREG(16)
-#define _X_A7 _XREG(17)
-#define _X_S2 _XREG(18)
-#define _X_S3 _XREG(19)
-#define _X_S4 _XREG(20)
-#define _X_S5 _XREG(21)
-#define _X_S6 _XREG(22)
-#define _X_S7 _XREG(23)
-#define _X_S8 _XREG(24)
-#define _X_S9 _XREG(25)
-#define _X_S10 _XREG(26)
-#define _X_S11 _XREG(27)
-#define _X_T3 _XREG(28)
-#define _X_T4 _XREG(29)
-#define _X_T5 _XREG(30)
-#define _X_T6 _XREG(31)
-
-// f0 - f7 = ft0 - ft7 (FP temporaries) Caller
-// following layout is similar to integer registers above
-// f8 - f9 = fs0 - fs1 (FP saved registers) Callee
-// f10 - f11 = fa0 - fa1 (FP arguments/return values) Caller
-// f12 - f17 = fa2 - fa7 (FP arguments) Caller
-// f18 - f27 = fs2 - fa11 (FP saved registers) Callee
-// f28 - f31 = ft8 - ft11 (FP temporaries) Caller
-
-/*
- * This fragment is common to <riscv/mcontext.h> and <riscv/reg.h>
- */
-#ifndef _BSD_FPREG_T_
-union __fpreg {
- __uint64_t u_u64;
- double u_d;
-};
-#define _BSD_FPREG_T_ union __fpreg
-#endif
-
-/*
- * 32 double precision floating point, 1 CSR
- */
-struct fpreg {
- _BSD_FPREG_T_ r_fpreg[33];
-};
-#define r_fcsr r_fpreg[32].u_u64
-
-#endif /* _RISCV_REG_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/rwlock.h
@@ -1,1 +0,0 @@
-/* $NetBSD: rwlock.h,v 1.2 2019/11/29 20:04:53 riastradh Exp $ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/setjmp.h
@@ -1,70 +0,0 @@
-/* $NetBSD: setjmp.h,v 1.2 2015/03/27 06:57:21 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
- /* magic + 16 reg + 1 fcsr + 12 fp + 4 sigmask + 8 spare */
-#define _JBLEN (_JB_SIGMASK + 4 + 8)
-#define _JB_MAGIC 0
-#define _JB_RA 1
-#define _JB_SP 2
-#define _JB_GP 3
-#define _JB_TP 4
-#define _JB_S0 5
-#define _JB_S1 6
-#define _JB_S2 7
-#define _JB_S3 8
-#define _JB_S4 9
-#define _JB_S5 10
-#define _JB_S6 11
-#define _JB_S7 12
-#define _JB_S8 13
-#define _JB_S9 14
-#define _JB_S10 15
-#define _JB_S11 16
-#define _JB_FCSR 17
-
-#define _JB_FS0 18
-#define _JB_FS1 (_JB_FS0 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS2 (_JB_FS1 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS3 (_JB_FS2 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS4 (_JB_FS3 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS5 (_JB_FS4 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS6 (_JB_FS5 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS7 (_JB_FS6 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS8 (_JB_FS7 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS9 (_JB_FS8 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS10 (_JB_FS9 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-#define _JB_FS11 (_JB_FS10 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-
-#define _JB_SIGMASK (_JB_FS11 + sizeof(double) / sizeof(_BSD_JBSLOT_T_))
-
-#ifndef _BSD_JBSLOT_T_
-#define _BSD_JBSLOT_T_ long long
-#endif
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/signal.h
@@ -1,39 +0,0 @@
-/* $NetBSD: signal.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_SIGNAL_H_
-#define _RISCV_SIGNAL_H_
-
-#ifndef _LOCORE
-typedef __SIG_ATOMIC_TYPE__ sig_atomic_t;
-#endif
-
-#endif /* _RISCV_SIGNAL_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/sysarch.h
@@ -1,3 +0,0 @@
-/* $NetBSD: sysarch.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-/* nothing */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/sysreg.h
@@ -1,337 +0,0 @@
-/* $NetBSD: sysreg.h,v 1.28 2022/12/03 11:09:59 skrll Exp $ */
-
-/*
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_SYSREG_H_
-#define _RISCV_SYSREG_H_
-
-#ifndef _KERNEL
-#include <sys/param.h>
-#endif
-
-#include <riscv/reg.h>
-
-#define FCSR_FMASK 0 // no exception bits
-#define FCSR_FRM __BITS(7, 5)
-#define FCSR_FRM_RNE 0b000 // Round Nearest, ties to Even
-#define FCSR_FRM_RTZ 0b001 // Round Towards Zero
-#define FCSR_FRM_RDN 0b010 // Round DowN (-infinity)
-#define FCSR_FRM_RUP 0b011 // Round UP (+infinity)
-#define FCSR_FRM_RMM 0b100 // Round to nearest, ties to Max Magnitude
-#define FCSR_FRM_DYN 0b111 // Dynamic rounding
-#define FCSR_FFLAGS __BITS(4, 0) // Sticky bits
-#define FCSR_NV __BIT(4) // iNValid operation
-#define FCSR_DZ __BIT(3) // Divide by Zero
-#define FCSR_OF __BIT(2) // OverFlow
-#define FCSR_UF __BIT(1) // UnderFlow
-#define FCSR_NX __BIT(0) // iNeXact
-
-static inline uint32_t
-riscvreg_fcsr_read(void)
-{
- uint32_t __fcsr;
- __asm("frcsr %0" : "=r"(__fcsr));
- return __fcsr;
-}
-
-
-static inline uint32_t
-riscvreg_fcsr_write(uint32_t __new)
-{
- uint32_t __old;
- __asm("fscsr %0, %1" : "=r"(__old) : "r"(__new));
- return __old;
-}
-
-static inline uint32_t
-riscvreg_fcsr_read_fflags(void)
-{
- uint32_t __old;
- __asm("frflags %0" : "=r"(__old));
- return __SHIFTOUT(__old, FCSR_FFLAGS);
-}
-
-static inline uint32_t
-riscvreg_fcsr_write_fflags(uint32_t __new)
-{
- uint32_t __old;
- __new = __SHIFTIN(__new, FCSR_FFLAGS);
- __asm("fsflags %0, %1" : "=r"(__old) : "r"(__new));
- return __SHIFTOUT(__old, FCSR_FFLAGS);
-}
-
-static inline uint32_t
-riscvreg_fcsr_read_frm(void)
-{
- uint32_t __old;
- __asm("frrm\t%0" : "=r"(__old));
- return __SHIFTOUT(__old, FCSR_FRM);
-}
-
-static inline uint32_t
-riscvreg_fcsr_write_frm(uint32_t __new)
-{
- uint32_t __old;
- __new = __SHIFTIN(__new, FCSR_FRM);
- __asm __volatile("fsrm\t%0, %1" : "=r"(__old) : "r"(__new));
- return __SHIFTOUT(__old, FCSR_FRM);
-}
-
-
-#define RISCVREG_READ_INLINE(regname) \
-static inline uintptr_t \
-csr_##regname##_read(void) \
-{ \
- uintptr_t __rv; \
- asm volatile("csrr %0, " #regname : "=r"(__rv) :: "memory"); \
- return __rv; \
-}
-
-#define RISCVREG_WRITE_INLINE(regname) \
-static inline void \
-csr_##regname##_write(uintptr_t __val) \
-{ \
- asm volatile("csrw " #regname ", %0" :: "r"(__val) : "memory"); \
-}
-
-#define RISCVREG_SET_INLINE(regname) \
-static inline void \
-csr_##regname##_set(uintptr_t __mask) \
-{ \
- if (__builtin_constant_p(__mask) && __mask < 0x20) { \
- asm volatile("csrsi " #regname ", %0" :: "i"(__mask) : \
- "memory"); \
- } else { \
- asm volatile("csrs " #regname ", %0" :: "r"(__mask) : \
- "memory"); \
- } \
-}
-
-#define RISCVREG_CLEAR_INLINE(regname) \
-static inline void \
-csr_##regname##_clear(uintptr_t __mask) \
-{ \
- if (__builtin_constant_p(__mask) && __mask < 0x20) { \
- asm volatile("csrci " #regname ", %0" :: "i"(__mask) : \
- "memory"); \
- } else { \
- asm volatile("csrc " #regname ", %0" :: "r"(__mask) : \
- "memory"); \
- } \
-}
-
-#define RISCVREG_READ_WRITE_INLINE(regname) \
-RISCVREG_READ_INLINE(regname) \
-RISCVREG_WRITE_INLINE(regname)
-#define RISCVREG_SET_CLEAR_INLINE(regname) \
-RISCVREG_SET_INLINE(regname) \
-RISCVREG_CLEAR_INLINE(regname)
-#define RISCVREG_READ_SET_CLEAR_INLINE(regname) \
-RISCVREG_READ_INLINE(regname) \
-RISCVREG_SET_CLEAR_INLINE(regname)
-#define RISCVREG_READ_WRITE_SET_CLEAR_INLINE(regname) \
-RISCVREG_READ_WRITE_INLINE(regname) \
-RISCVREG_SET_CLEAR_INLINE(regname)
-
-/* Supervisor Status Register */
-RISCVREG_READ_SET_CLEAR_INLINE(sstatus) // supervisor status register
-#ifdef _LP64
-#define SR_WPRI __BITS(62, 34) | __BITS(31, 20) | \
- __BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
- __BIT(0)
-#define SR_SD __BIT(63) // any of FS or VS or XS dirty
- /* Bits 62-34 are WPRI */
-#define SR_UXL __BITS(33, 32) // U-mode XLEN
-#define SR_UXL_32 1 // XLEN == 32
-#define SR_UXL_64 2 // XLEN == 64
-#define SR_UXL_128 3 // XLEN == 128
- /* Bits 31-20 are WPRI*/
-#else
-#define SR_WPRI __BITS(30, 20) | \
- __BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
- __BIT(0)
-#define SR_SD __BIT(31) // any of FS or VS or XS dirty
- /* Bits 30-20 are WPRI*/
-#endif /* _LP64 */
-
-/* Both RV32 and RV64 have the bottom 20 bits shared */
-#define SR_MXR __BIT(19) // Make eXecutable Readable
-#define SR_SUM __BIT(18) // permit Supervisor User Memory access
- /* Bit 17 is WPRI */
-#define SR_XS __BITS(16, 15) // Vector extension state
-#define SR_XS_OFF 0 // All off
-#define SR_XS_SOME_ON 1 // None dirty or clean, some on
-#define SR_XS_SOME_CLEAN 2 // None dirty, some clean
-#define SR_XS_SOME_DIRTY 3 // Some dirty
-#define SR_FS __BITS(14, 13) // Floating-point unit state
-#define SR_FS_OFF 0 // Off
-#define SR_FS_INITIAL 1 // Initial
-#define SR_FS_CLEAN 2 // Clean
-#define SR_FS_DIRTY 3 // Dirty
- /* Bits 12-11 are WPRI */
-#define SR_VS __BITS(10, 9) // User-mode extention state
-#define SR_VS_OFF SR_FS_OFF // Off
-#define SR_VS_INITIAL SR_FS_INITIAL // Initial
-#define SR_VS_CLEAN SR_FS_CLEAN // Clean
-#define SR_VS_DIRTY SR_FS_DIRTY // Dirty
-#define SR_SPP __BIT(8) // Priv level before supervisor mode
- /* Bit 7 is WPRI */
-#define SR_UBE __BIT(6) // User-mode endianness
-#define SR_SPIE __BIT(5) // S-Mode interrupts enabled before trap
- /* Bits 4-2 are WPRI */
-#define SR_SIE __BIT(1) // Supervisor mode interrupt enable
- /* Bit 0 is WPRI */
-
-/* Supervisor interrupt registers */
-/* ... interrupt pending register (sip) */
-RISCVREG_READ_SET_CLEAR_INLINE(sip) // supervisor interrupt pending
- /* Bit (XLEN-1) - 10 is WIRI */
-#define SIP_SEIP __BIT(9) // S-mode interrupt pending
- /* Bit 8-6 is WIRI */
-#define SIP_STIP __BIT(5) // S-mode timer interrupt pending
- /* Bit 4-2 is WIRI */
-#define SIP_SSIP __BIT(1) // S-mode software interrupt pending
- /* Bit 0 is WIRI */
-
-/* ... interrupt-enable register (sie) */
-RISCVREG_READ_SET_CLEAR_INLINE(sie) // supervisor interrupt enable
- /* Bit (XLEN-1) - 10 is WIRI */
-#define SIE_SEIE __BIT(9) // S-mode interrupt enable
- /* Bit 8-6 is WIRI */
-#define SIE_STIE __BIT(5) // S-mode timer interrupt enable
- /* Bit 4-2 is WIRI */
-#define SIE_SSIE __BIT(1) // S-mode software interrupt enable
- /* Bit 0 is WIRI */
-
-/* Mask for all interrupts */
-#define SIE_IM (SIE_SEI |SIE_STIE | SIE_SSIE)
-
-#ifdef _LP64
-#define SR_USER64 (SR_SPIE | SR_UXL_64) // 64-bit U-mode sstatus
-#define SR_USER32 (SR_SPIE | SR_UXL_32) // 32-bit U-mode sstatus
-#else
-#define SR_USER (SR_SPIE) // U-mode sstatus
-#endif
-
-// Cause register
-#define CAUSE_INTERRUPT_P(cause) ((cause) & __BIT(XLEN - 1))
-#define CAUSE_CODE(cause) ((cause) & __BITS(XLEN - 2, 0))
-
-// Cause register - exceptions
-#define CAUSE_FETCH_MISALIGNED 0
-#define CAUSE_FETCH_ACCESS 1
-#define CAUSE_ILLEGAL_INSTRUCTION 2
-#define CAUSE_BREAKPOINT 3
-#define CAUSE_LOAD_MISALIGNED 4
-#define CAUSE_LOAD_ACCESS 5
-#define CAUSE_STORE_MISALIGNED 6
-#define CAUSE_STORE_ACCESS 7
-#define CAUSE_USER_ECALL 8
-#define CAUSE_SYSCALL CAUSE_USER_ECALL /* convenience alias */
-#define CAUSE_SUPERVISOR_ECALL 9
-/* 10 is reserved */
-#define CAUSE_MACHINE_ECALL 11
-#define CAUSE_FETCH_PAGE_FAULT 12
-#define CAUSE_LOAD_PAGE_FAULT 13
-/* 14 is Reserved */
-#define CAUSE_STORE_PAGE_FAULT 15
-/* >= 16 is reserved/custom */
-
-// Cause register - interrupts
-#define IRQ_SUPERVISOR_SOFTWARE 1
-#define IRQ_MACHINE_SOFTWARE 3
-#define IRQ_SUPERVISOR_TIMER 5
-#define IRQ_MACHINE_TIMER 7
-#define IRQ_SUPERVISOR_EXTERNAL 9
-#define IRQ_MACHINE_EXTERNAL 11
-
-RISCVREG_READ_INLINE(time)
-#ifdef _LP64
-RISCVREG_READ_INLINE(cycle)
-#else /* !_LP64 */
-static inline uint64_t
-csr_cycle_read(void)
-{
- uint32_t __hi0, __hi1, __lo0;
- do {
- __asm __volatile(
- "csrr\t%[__hi0], cycleh"
- "\n\t" "csrr\t%[__lo0], cycle"
- "\n\t" "csrr\t%[__hi1], cycleh"
- : [__hi0] "=r"(__hi0),
- [__lo0] "=r"(__lo0),
- [__hi1] "=r"(__hi1));
- } while (__hi0 != __hi1);
- return
- __SHIFTIN(__hi0, __BITS(63, 32)) |
- __SHIFTIN(__lo0, __BITS(31, 0));
-}
-#endif /* !_LP64 */
-
-#ifdef _LP64
-#define SATP_MODE __BITS(63, 60) // Translation mode
-#define SATP_MODE_BARE 0 // No translation or protection
- /* modes 1-7 reserved for standard use */
-#define SATP_MODE_SV39 8 // Page-based 39-bit virt addr
-#define SATP_MODE_SV48 9 // Page-based 48-bit virt addr
-#define SATP_MODE_SV57 10 // Page-based 57-bit virt addr
-#define SATP_MODE_SV64 11 // Page-based 64-bit virt addr
- /* modes 12-13 reserved for standard use */
- /* modes 14-15 designated for custom use */
-#define SATP_ASID __BITS(59, 44) // Address Space Identifier
-#define SATP_PPN __BITS(43, 0) // Physical Page Number
-#else
-#define SATP_MODE __BIT(31) // Translation mode
-#define SATP_MODE_BARE 0 // No translation or protection
-#define SATP_MODE_SV32 1 // Page-based 32-bit virt addr
-#define SATP_ASID __BITS(30, 22) // Address Space Identifier
-#define SATP_PPN __BITS(21, 0) // Physical Page Number
-#endif
-
-RISCVREG_READ_WRITE_INLINE(satp)
-
-/* Fake "ASID" CSR (a field of SATP register) functions */
-static inline uint32_t
-csr_asid_read(void)
-{
- uintptr_t satp = csr_satp_read();
- return __SHIFTOUT(satp, SATP_ASID);
-}
-
-static inline void
-csr_asid_write(uint32_t asid)
-{
- uintptr_t satp = csr_satp_read();
- satp &= ~SATP_ASID;
- satp |= __SHIFTIN(asid, SATP_ASID);
- csr_satp_write(satp);
-}
-
-#endif /* _RISCV_SYSREG_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/types.h
@@ -1,116 +0,0 @@
-/* $NetBSD: types.h,v 1.15 2022/11/08 13:34:17 simonb Exp $ */
-
-/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_TYPES_H_
-#define _RISCV_TYPES_H_
-
-#include <sys/cdefs.h>
-#include <sys/featuretest.h>
-#include <riscv/int_types.h>
-
-#if defined(_KERNEL) || defined(_KMEMUSER) || defined(_KERNTYPES) || defined(_STANDALONE)
-
-/* XLEN is the native base integer ISA width */
-#define XLEN (sizeof(long) * NBBY)
-
-typedef __uint64_t paddr_t;
-typedef __uint64_t psize_t;
-#define PRIxPADDR PRIx64
-#define PRIxPSIZE PRIx64
-#define PRIuPSIZE PRIu64
-
-typedef __UINTPTR_TYPE__ vaddr_t;
-typedef __UINTPTR_TYPE__ vsize_t;
-#define PRIxVADDR PRIxPTR
-#define PRIxVSIZE PRIxPTR
-#define PRIuVSIZE PRIuPTR
-
-#ifdef _LP64 // match <riscv/reg.h>
-#define PRIxREGISTER PRIx64
-typedef __int64_t register_t;
-typedef __uint64_t uregister_t;
-#else
-#define PRIxREGISTER PRIx32
-typedef __int32_t register_t;
-typedef __uint32_t uregister_t;
-#endif
-typedef signed int register32_t;
-typedef unsigned int uregister32_t;
-#define PRIxREGISTER32 "x"
-
-typedef unsigned int tlb_asid_t;
-#endif
-
-#if defined(_KERNEL)
-typedef struct label_t { /* Used by setjmp & longjmp */
- register_t lb_reg[16]; /* */
- __uint32_t lb_sr;
-} label_t;
-#endif
-
-typedef unsigned int __cpu_simple_lock_nv_t;
-#ifdef _LP64
-typedef __int64_t __register_t;
-#else
-typedef __int32_t __register_t;
-#endif
-
-#define __SIMPLELOCK_LOCKED 1
-#define __SIMPLELOCK_UNLOCKED 0
-
-#define __HAVE_COMMON___TLS_GET_ADDR
-#define __HAVE_COMPAT_NETBSD32
-#define __HAVE_CPU_COUNTER
-#define __HAVE_CPU_DATA_FIRST
-#define __HAVE_FAST_SOFTINTS
-#define __HAVE_MM_MD_DIRECT_MAPPED_PHYS
-#define __HAVE_NEW_STYLE_BUS_H
-#define __HAVE_SYSCALL_INTERN
-#define __HAVE_TLS_VARIANT_I
-/* XXX temporary */
-#define __HAVE_UNLOCKED_PMAP
-#define __HAVE___LWP_GETPRIVATE_FAST
-
-#ifdef __LP64
-#define __HAVE_ATOMIC64_OPS
-#define __HAVE_CPU_UAREA_ROUTINES
-#endif
-
-//#if defined(_KERNEL)
-//#define __HAVE_RAS
-//#endif
-
-#if defined(_KERNEL) || defined(_KMEMUSER)
-#define PCU_FPU 0
-#define PCU_UNIT_COUNT 1
-#endif
-
-#endif /* _RISCV_TYPES_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/vmparam.h
@@ -1,203 +0,0 @@
-/* $NetBSD: vmparam.h,v 1.13 2022/10/16 06:14:53 skrll Exp $ */
-
-/*-
- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Matt Thomas of 3am Software Foundry, and Nick Hudson.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _RISCV_VMPARAM_H_
-#define _RISCV_VMPARAM_H_
-
-#include <riscv/param.h>
-
-#ifdef _KERNEL_OPT
-#include "opt_multiprocessor.h"
-#endif
-
-/*
- * Machine dependent VM constants for RISCV.
- */
-
-/*
- * We use a 4K page on both RV64 and RV32 systems.
- * Override PAGE_* definitions to compile-time constants.
- */
-#define PAGE_SHIFT PGSHIFT
-#define PAGE_SIZE (1 << PAGE_SHIFT)
-#define PAGE_MASK (PAGE_SIZE - 1)
-
-/*
- * USRSTACK is the top (end) of the user stack.
- *
- * USRSTACK needs to start a page below the maxuser address so that a memory
- * access with a maximum displacement (0x7ff) won't cross into the kernel's
- * address space. We use PAGE_SIZE instead of 0x800 since these need to be
- * page-aligned.
- */
-#define USRSTACK (VM_MAXUSER_ADDRESS-PAGE_SIZE) /* Start of user stack */
-#define USRSTACK32 ((uint32_t)VM_MAXUSER_ADDRESS32-PAGE_SIZE)
-
-/*
- * Virtual memory related constants, all in bytes
- */
-#ifndef MAXTSIZ
-#define MAXTSIZ (128*1024*1024) /* max text size */
-#endif
-#ifndef DFLDSIZ
-#define DFLDSIZ (256*1024*1024) /* initial data size limit */
-#endif
-#ifndef MAXDSIZ
-#define MAXDSIZ (1536*1024*1024) /* max data size */
-#endif
-#ifndef DFLSSIZ
-#define DFLSSIZ (4*1024*1024) /* initial stack size limit */
-#endif
-#ifndef MAXSSIZ
-#define MAXSSIZ (120*1024*1024) /* max stack size */
-#endif
-
-/*
- * Virtual memory related constants, all in bytes
- */
-#ifndef DFLDSIZ32
-#define DFLDSIZ32 DFLDSIZ /* initial data size limit */
-#endif
-#ifndef MAXDSIZ32
-#define MAXDSIZ32 MAXDSIZ /* max data size */
-#endif
-#ifndef DFLSSIZ32
-#define DFLSSIZ32 DFLTSIZ /* initial stack size limit */
-#endif
-#ifndef MAXSSIZ32
-#define MAXSSIZ32 MAXSSIZ /* max stack size */
-#endif
-
-/*
- * PTEs for mapping user space into the kernel for phyio operations.
- * The default PTE number is enough to cover 8 disks * MAXBSIZE.
- */
-#ifndef USRIOSIZE
-#define USRIOSIZE (MAXBSIZE/PAGE_SIZE * 8)
-#endif
-
-/*
- * User/kernel map constants.
- */
-#define VM_MIN_ADDRESS ((vaddr_t)0x00000000)
-#ifdef _LP64 /* Sv39 / Sv48 / Sv57 */
-/*
- * kernel virtual space layout:
- * 0xffff_ffc0_0000_0000 - 64GiB KERNEL VM Space (inc. text/data/bss)
- * (0xffff_ffc0_4000_0000 +1GiB) KERNEL VM start of KVA
- * (0xffff_ffd0_0000_0000 64GiB) reserved
- * 0xffff_ffe0_0000_0000 - 128GiB direct mapping
- */
-#define VM_MAXUSER_ADDRESS ((vaddr_t)0x0000004000000000 - 16 * PAGE_SIZE)
-#define VM_MIN_KERNEL_ADDRESS ((vaddr_t)0xffffffc000000000)
-#define VM_MAX_KERNEL_ADDRESS ((vaddr_t)0xffffffd000000000)
-
-#else /* Sv32 */
-#define VM_MAXUSER_ADDRESS ((vaddr_t)-0x7fffffff-1)/* 0xffffffff80000000 */
-#define VM_MIN_KERNEL_ADDRESS ((vaddr_t)-0x7fffffff-1)/* 0xffffffff80000000 */
-#define VM_MAX_KERNEL_ADDRESS ((vaddr_t)-0x40000000) /* 0xffffffffc0000000 */
-
-#endif
-#define VM_KERNEL_BASE VM_MIN_KERNEL_ADDRESS
-#define VM_KERNEL_SIZE 0x2000000 /* 32 MiB (8 / 16 megapages) */
-#define VM_KERNEL_DTB_BASE (VM_KERNEL_BASE + VM_KERNEL_SIZE)
-#define VM_KERNEL_DTB_SIZE 0x1000000 /* 16 MiB (4 / 8 megapages) */
-#define VM_KERNEL_IO_BASE (VM_KERNEL_DTB_BASE + VM_KERNEL_DTB_SIZE)
-#define VM_KERNEL_IO_SIZE 0x1000000 /* 16 MiB (4 / 8 megapages) */
-
-#define VM_KERNEL_RESERVED (VM_KERNEL_SIZE + VM_KERNEL_DTB_SIZE + VM_KERNEL_IO_SIZE)
-
-#define VM_KERNEL_VM_BASE (VM_MIN_KERNEL_ADDRESS + VM_KERNEL_RESERVED)
-#define VM_KERNEL_VM_SIZE (VM_MAX_KERNEL_ADDRESS - VM_KERNEL_VM_BASE)
-
-#define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS
-#define VM_MAXUSER_ADDRESS32 ((vaddr_t)(1UL << 31))/* 0x0000000080000000 */
-
-#ifdef _LP64
-/*
- * Since we have the address space, we map all of physical memory (RAM)
- * using gigapages on SV39, terapages on SV48 and petapages on SV57.
- */
-#define RISCV_DIRECTMAP_MASK ((vaddr_t) 0xffffffe000000000L)
-#define RISCV_DIRECTMAP_SIZE (-RISCV_DIRECTMAP_MASK - PAGE_SIZE) /* 128GiB */
-#define RISCV_DIRECTMAP_START RISCV_DIRECTMAP_MASK
-#define RISCV_DIRECTMAP_END (RISCV_DIRECTMAP_START + RISCV_DIRECTMAP_SIZE)
-#define RISCV_KVA_P(va) (((vaddr_t) (va) & RISCV_DIRECTMAP_MASK) != 0)
-#define RISCV_PA_TO_KVA(pa) ((vaddr_t) ((pa) | RISCV_DIRECTMAP_START))
-#define RISCV_KVA_TO_PA(va) ((paddr_t) ((va) & ~RISCV_DIRECTMAP_MASK))
-#endif
-
-/*
- * The address to which unspecified mapping requests default
- */
-#define __USE_TOPDOWN_VM
-
-#define VM_DEFAULT_ADDRESS_TOPDOWN(da, sz) \
- trunc_page(USRSTACK - MAXSSIZ - (sz) - user_stack_guard_size)
-#define VM_DEFAULT_ADDRESS_BOTTOMUP(da, sz) \
- round_page((vaddr_t)(da) + (vsize_t)maxdmap)
-
-#define VM_DEFAULT_ADDRESS32_TOPDOWN(da, sz) \
- trunc_page(USRSTACK32 - MAXSSIZ32 - (sz) - user_stack_guard_size)
-#define VM_DEFAULT_ADDRESS32_BOTTOMUP(da, sz) \
- round_page((vaddr_t)(da) + (vsize_t)MAXDSIZ32)
-
-/* virtual sizes (bytes) for various kernel submaps */
-#define VM_PHYS_SIZE (USRIOSIZE*PAGE_SIZE)
-
-/* VM_PHYSSEG_MAX defined by platform-dependent code. */
-#ifndef VM_PHYSSEG_MAX
-#define VM_PHYSSEG_MAX 16
-#endif
-#if VM_PHYSSEG_MAX == 1
-#define VM_PHYSSEG_STRAT VM_PSTRAT_BIGFIRST
-#else
-#define VM_PHYSSEG_STRAT VM_PSTRAT_BSEARCH
-#endif
-#define VM_PHYSSEG_NOADD /* can add RAM after vm_mem_init */
-
-#ifndef VM_NFREELIST
-#define VM_NFREELIST 2 /* 2 distinct memory segments */
-#define VM_FREELIST_DEFAULT 0
-#define VM_FREELIST_DIRECTMAP 1
-#endif
-
-#ifdef _KERNEL
-#define UVM_KM_VMFREELIST riscv_poolpage_vmfreelist
-extern int riscv_poolpage_vmfreelist;
-
-#ifdef _LP64
-void * cpu_uarea_alloc(bool);
-bool cpu_uarea_free(void *);
-#endif
-#endif
-
-#endif /* ! _RISCV_VMPARAM_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/riscv/wchar_limits.h
@@ -1,3 +0,0 @@
-/* $NetBSD: wchar_limits.h,v 1.1 2014/09/19 17:36:26 matt Exp $ */
-
-#include <sys/common_wchar_limits.h>
\ No newline at end of file
lib/libc/include/generic-netbsd/sys/soundcard.h
@@ -0,0 +1,664 @@
+/* $NetBSD: soundcard.h,v 1.34 2021/05/09 11:28:25 nia Exp $ */
+
+/*-
+ * Copyright (c) 1997, 2020 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Lennart Augustsson and Nia Alarie.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * WARNING! WARNING!
+ * This is an Open Sound System compatibility layer.
+ * Use the Native NetBSD API in <sys/audioio.h> for developing new code,
+ * and this only for compiling programs written for other operating systems.
+ */
+
+#ifndef _SOUNDCARD_H_
+#define _SOUNDCARD_H_
+
+#ifndef SOUND_VERSION
+#define SOUND_VERSION 0x030001
+#endif
+
+#define SNDCTL_DSP_RESET _IO ('P', 0)
+#define SNDCTL_DSP_SYNC _IO ('P', 1)
+#define SNDCTL_DSP_SPEED _IOWR('P', 2, int)
+#define SOUND_PCM_READ_RATE _IOR ('P', 2, int)
+#define SNDCTL_DSP_STEREO _IOWR('P', 3, int)
+#define SNDCTL_DSP_GETBLKSIZE _IOWR('P', 4, int)
+#define SNDCTL_DSP_SETFMT _IOWR('P', 5, int)
+#define AFMT_QUERY 0x00000000
+#define AFMT_MU_LAW 0x00000001
+#define AFMT_A_LAW 0x00000002
+#define AFMT_IMA_ADPCM 0x00000004
+#define AFMT_U8 0x00000008
+#define AFMT_S16_LE 0x00000010
+#define AFMT_S16_BE 0x00000020
+#define AFMT_S8 0x00000040
+#define AFMT_U16_LE 0x00000080
+#define AFMT_U16_BE 0x00000100
+#define AFMT_MPEG 0x00000200 /* Not supported */
+#define AFMT_AC3 0x00000400
+#define AFMT_S24_LE 0x00000800 /* Not supported */
+#define AFMT_S24_BE 0x00001000 /* Not supported */
+#define AFMT_S32_LE 0x00002000
+#define AFMT_S32_BE 0x00004000
+#define AFMT_FLOAT 0x00010000 /* Not supported */
+#define AFMT_SPDIF_RAW 0x00020000 /* Not supported */
+#define AFMT_S24_PACKED 0x00040000 /* Not supported */
+#define AFMT_VORBIS 0x00080000 /* Not supported */
+#define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
+#define SOUND_PCM_READ_BITS _IOR ('P', 5, int)
+#define SNDCTL_DSP_CHANNELS _IOWR('P', 6, int)
+#define SOUND_PCM_WRITE_CHANNELS SNDCTL_DSP_CHANNELS
+#define SOUND_PCM_READ_CHANNELS _IOR ('P', 6, int)
+#define SOUND_PCM_WRITE_FILTER _IOWR('P', 7, int)
+#define SOUND_PCM_READ_FILTER _IOR ('P', 7, int)
+#define SNDCTL_DSP_POST _IO ('P', 8)
+#define SNDCTL_DSP_SUBDIVIDE _IOWR('P', 9, int)
+#define SNDCTL_DSP_SETFRAGMENT _IOWR('P', 10, int)
+#define SNDCTL_DSP_GETFMTS _IOR ('P', 11, int)
+#define SNDCTL_DSP_GETOSPACE _IOR ('P',12, struct audio_buf_info)
+#define SNDCTL_DSP_GETISPACE _IOR ('P',13, struct audio_buf_info)
+#define SNDCTL_DSP_NONBLOCK _IO ('P',14)
+#define SNDCTL_DSP_GETCAPS _IOR ('P',15, int)
+/* PCM_CAP_* were known as DSP_CAP_ before OSS 4.0 */
+# define DSP_CAP_REVISION PCM_CAP_REVISION
+# define DSP_CAP_DUPLEX PCM_CAP_DUPLEX
+# define DSP_CAP_REALTIME PCM_CAP_REALTIME
+# define DSP_CAP_BATCH PCM_CAP_BATCH
+# define DSP_CAP_COPROC PCM_CAP_COPROC
+# define DSP_CAP_TRIGGER PCM_CAP_TRIGGER
+# define DSP_CAP_MMAP PCM_CAP_MMAP
+# define DSP_CAP_INPUT PCM_CAP_INPUT
+# define DSP_CAP_OUTPUT PCM_CAP_OUTPUT
+# define DSP_CAP_MODEM PCM_CAP_MODEM
+# define DSP_CAP_HIDDEN PCM_CAP_HIDDEN
+# define DSP_CAP_VIRTUAL PCM_CAP_VIRTUAL
+# define DSP_CAP_ANALOGOUT PCM_CAP_ANALOGOUT
+# define DSP_CAP_ANALOGIN PCM_CAP_ANALOGIN
+# define DSP_CAP_DIGITALOUT PCM_CAP_DIGITALOUT
+# define DSP_CAP_DIGITALIN PCM_CAP_DIGITALIN
+# define DSP_CAP_ADMASK PCM_CAP_ADMASK
+# define DSP_CAP_FREERATE PCM_CAP_FREERATE
+# define DSP_CAP_MULTI PCM_CAP_MULTI
+# define DSP_CAP_BIND PCM_CAP_BIND
+# define DSP_CAP_SHADOW PCM_CAP_SHADOW
+# define PCM_CAP_REVISION 0x000000ff /* Unused in NetBSD */
+# define PCM_CAP_DUPLEX 0x00000100 /* Full duplex */
+# define PCM_CAP_REALTIME 0x00000200 /* Unused in NetBSD */
+# define PCM_CAP_BATCH 0x00000400 /* Unused in NetBSD */
+# define PCM_CAP_COPROC 0x00000800 /* Unused in NetBSD */
+# define PCM_CAP_TRIGGER 0x00001000 /* Supports SETTRIGGER */
+# define PCM_CAP_MMAP 0x00002000 /* Supports mmap() */
+# define PCM_CAP_INPUT 0x00004000 /* Recording device */
+# define PCM_CAP_OUTPUT 0x00008000 /* Playback device */
+# define PCM_CAP_MODEM 0x00010000 /* Unused in NetBSD */
+# define PCM_CAP_HIDDEN 0x00020000 /* Unused in NetBSD */
+# define PCM_CAP_VIRTUAL 0x00040000 /* Unused in NetBSD */
+# define PCM_CAP_MULTI 0x00080000 /* Simultaneous open() */
+# define PCM_CAP_ANALOGOUT 0x00100000 /* Unused in NetBSD */
+# define PCM_CAP_ANALOGIN 0x00200000 /* Unused in NetBSD */
+# define PCM_CAP_DIGITALOUT 0x00400000 /* Unused in NetBSD */
+# define PCM_CAP_DIGITALIN 0x00800000 /* Unused in NetBSD */
+# define PCM_CAP_ADMASK 0x00f00000 /* Unused in NetBSD */
+# define PCM_CAP_SPECIAL 0x01000000 /* Unused in NetBSD */
+# define PCM_CAP_FREERATE 0x10000000 /* Freely set rate */
+# define PCM_CAP_SHADOW 0x40000000 /* Unused in NetBSD */
+# define PCM_CAP_BIND 0x80000000 /* Unused in NetBSD */
+# define DSP_CH_ANY 0x00000000 /* No preferred mode */
+# define DSP_CH_MONO 0x02000000
+# define DSP_CH_STEREO 0x04000000
+# define DSP_CH_MULTI 0x06000000
+# define DSP_CH_MASK 0x06000000
+#define SNDCTL_DSP_GETTRIGGER _IOR ('P', 16, int)
+#define SNDCTL_DSP_SETTRIGGER _IOW ('P', 16, int)
+# define PCM_ENABLE_INPUT 0x00000001
+# define PCM_ENABLE_OUTPUT 0x00000002
+#define SNDCTL_DSP_GETIPTR _IOR ('P', 17, struct count_info)
+#define SNDCTL_DSP_GETOPTR _IOR ('P', 18, struct count_info)
+#define SNDCTL_DSP_MAPINBUF _IOR ('P', 19, struct buffmem_desc)
+#define SNDCTL_DSP_MAPOUTBUF _IOR ('P', 20, struct buffmem_desc)
+#define SNDCTL_DSP_SETSYNCRO _IO ('P', 21)
+#define SNDCTL_DSP_SETDUPLEX _IO ('P', 22)
+#define SNDCTL_DSP_PROFILE _IOW ('P', 23, int)
+#define SNDCTL_DSP_GETODELAY _IOR ('P', 23, int)
+#define APF_NORMAL 0
+#define APF_NETWORK 1
+#define APF_CPUINTENS 2
+
+/* Need native 16 bit format which depends on byte order */
+#include <machine/endian_machdep.h>
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+#define AFMT_U16_NE AFMT_U16_LE
+#define AFMT_U16_OE AFMT_U16_BE
+#define AFMT_S16_NE AFMT_S16_LE
+#define AFMT_S16_OE AFMT_S16_BE
+#define AFMT_S24_NE AFMT_S24_LE
+#define AFMT_S24_OE AFMT_S24_BE
+#define AFMT_S32_NE AFMT_S32_LE
+#define AFMT_S32_OE AFMT_S32_BE
+#else
+#define AFMT_U16_NE AFMT_U16_BE
+#define AFMT_U16_OE AFMT_U16_LE
+#define AFMT_S16_NE AFMT_S16_BE
+#define AFMT_S16_OE AFMT_S16_LE
+#define AFMT_S24_NE AFMT_S24_BE
+#define AFMT_S24_OE AFMT_S24_LE
+#define AFMT_S32_NE AFMT_S32_BE
+#define AFMT_S32_OE AFMT_S32_LE
+#endif
+
+/* Aliases */
+#define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SETFMT
+#define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
+#define SOUND_PCM_POST SNDCTL_DSP_POST
+#define SOUND_PCM_RESET SNDCTL_DSP_RESET
+#define SOUND_PCM_SYNC SNDCTL_DSP_SYNC
+#define SOUND_PCM_SUBDIVIDE SNDCTL_DSP_SUBDIVIDE
+#define SOUND_PCM_SETFRAGMENT SNDCTL_DSP_SETFRAGMENT
+#define SOUND_PCM_GETFMTS SNDCTL_DSP_GETFMTS
+#define SOUND_PCM_SETFMT SNDCTL_DSP_SETFMT
+#define SOUND_PCM_GETOSPACE SNDCTL_DSP_GETOSPACE
+#define SOUND_PCM_GETISPACE SNDCTL_DSP_GETISPACE
+#define SOUND_PCM_NONBLOCK SNDCTL_DSP_NONBLOCK
+#define SOUND_PCM_GETCAPS SNDCTL_DSP_GETCAPS
+#define SOUND_PCM_GETTRIGGER SNDCTL_DSP_GETTRIGGER
+#define SOUND_PCM_SETTRIGGER SNDCTL_DSP_SETTRIGGER
+#define SOUND_PCM_SETSYNCRO SNDCTL_DSP_SETSYNCRO
+#define SOUND_PCM_GETIPTR SNDCTL_DSP_GETIPTR
+#define SOUND_PCM_GETOPTR SNDCTL_DSP_GETOPTR
+#define SOUND_PCM_MAPINBUF SNDCTL_DSP_MAPINBUF
+#define SOUND_PCM_MAPOUTBUF SNDCTL_DSP_MAPOUTBUF
+
+/* Mixer defines */
+#define SOUND_MIXER_FIRST 0
+#define SOUND_MIXER_NRDEVICES 25
+
+#define SOUND_MIXER_VOLUME 0
+#define SOUND_MIXER_BASS 1
+#define SOUND_MIXER_TREBLE 2
+#define SOUND_MIXER_SYNTH 3
+#define SOUND_MIXER_PCM 4
+#define SOUND_MIXER_SPEAKER 5
+#define SOUND_MIXER_LINE 6
+#define SOUND_MIXER_MIC 7
+#define SOUND_MIXER_CD 8
+#define SOUND_MIXER_IMIX 9
+#define SOUND_MIXER_ALTPCM 10
+#define SOUND_MIXER_RECLEV 11
+#define SOUND_MIXER_IGAIN 12
+#define SOUND_MIXER_OGAIN 13
+#define SOUND_MIXER_LINE1 14
+#define SOUND_MIXER_LINE2 15
+#define SOUND_MIXER_LINE3 16
+#define SOUND_MIXER_DIGITAL1 17
+#define SOUND_MIXER_DIGITAL2 18
+#define SOUND_MIXER_DIGITAL3 19
+#define SOUND_MIXER_PHONEIN 20
+#define SOUND_MIXER_PHONEOUT 21
+#define SOUND_MIXER_VIDEO 22
+#define SOUND_MIXER_RADIO 23
+#define SOUND_MIXER_MONITOR 24
+
+#define SOUND_ONOFF_MIN 28
+#define SOUND_ONOFF_MAX 30
+
+#define SOUND_MIXER_NONE 31
+
+#define SOUND_DEVICE_LABELS {"Vol ", "Bass ", "Trebl", "Synth", "Pcm ", "Spkr ", "Line ", \
+ "Mic ", "CD ", "Mix ", "Pcm2 ", "Rec ", "IGain", "OGain", \
+ "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", \
+ "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor"}
+
+#define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \
+ "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", \
+ "line1", "line2", "line3", "dig1", "dig2", "dig3", \
+ "phin", "phout", "video", "radio", "monitor"}
+
+#define SOUND_MIXER_RECSRC 0xff
+#define SOUND_MIXER_DEVMASK 0xfe
+#define SOUND_MIXER_RECMASK 0xfd
+#define SOUND_MIXER_CAPS 0xfc
+#define SOUND_CAP_EXCL_INPUT 1
+#define SOUND_MIXER_STEREODEVS 0xfb
+
+#define MIXER_READ(dev) _IOR('M', dev, int)
+
+#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
+#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
+#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
+#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
+#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
+
+#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
+#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
+#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
+#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
+#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
+#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
+
+#define MIXER_WRITE(dev) _IOW ('M', dev, int)
+#define MIXER_WRITE_R(dev) _IOWR('M', dev, int)
+
+#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
+#define SOUND_MIXER_WRITE_R_RECSRC MIXER_WRITE_R(SOUND_MIXER_RECSRC)
+
+#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
+#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
+#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
+#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
+#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
+#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
+
+#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
+#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
+#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
+#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
+#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
+#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
+#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
+#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
+#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
+#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
+#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
+#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
+#define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
+#define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
+#define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
+#define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
+#define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
+#define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
+#define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
+#define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
+#define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)
+#define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)
+#define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
+#define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
+#define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)
+
+typedef struct mixer_info {
+ char id[16];
+ char name[32];
+ int modify_counter;
+ int fillers[10];
+} mixer_info;
+
+typedef struct _old_mixer_info {
+ char id[16];
+ char name[32];
+} _old_mixer_info;
+
+#define SOUND_MIXER_INFO _IOR('M', 101, mixer_info)
+#define SOUND_OLD_MIXER_INFO _IOR('M', 101, _old_mixer_info)
+
+#define OSS_GETVERSION _IOR ('M', 118, int)
+
+typedef struct audio_buf_info {
+ int fragments;
+ int fragstotal;
+ int fragsize;
+ int bytes;
+} audio_buf_info;
+
+typedef struct count_info {
+ int bytes;
+ int blocks;
+ int ptr;
+} count_info;
+
+typedef struct buffmem_desc {
+ unsigned int *buffer;
+ int size;
+} buffmem_desc;
+
+/* Some OSSv4 calls. */
+
+/* Why is yet more duplication necessary? Sigh. */
+#define OSS_OPEN_READ PCM_ENABLE_INPUT
+#define OSS_OPEN_WRITE PCM_ENABLE_OUTPUT
+#define OSS_OPEN_READWRITE (OSS_OPEN_READ|OSS_OPEN_WRITE)
+
+#define OSS_DEVNODE_SIZE 32
+#define OSS_LABEL_SIZE 16
+#define OSS_LONGNAME_SIZE 64
+#define OSS_MAX_AUDIO_DEVS 64
+
+#define SNDCTL_DSP_GETPLAYVOL _IOR ('P',27, uint)
+#define SNDCTL_DSP_SETPLAYVOL _IOW ('P',28, uint)
+#define SNDCTL_DSP_GETRECVOL _IOR ('P',29, uint)
+#define SNDCTL_DSP_SETRECVOL _IOW ('P',30, uint)
+#define SNDCTL_DSP_SKIP _IO ('P',31)
+#define SNDCTL_DSP_SILENCE _IO ('P',32)
+#define SNDCTL_DSP_COOKEDMODE _IOW ('P',33, int)
+#define SNDCTL_DSP_GETERROR _IOR ('P',34, struct audio_errinfo)
+#define SNDCTL_DSP_CURRENT_IPTR _IOR ('P',35, oss_count_t)
+#define SNDCTL_DSP_CURRENT_OPTR _IOR ('P',36, oss_count_t)
+#define SNDCTL_DSP_GET_RECSRC_NAMES _IOR ('P',37, oss_mixer_enuminfo)
+#define SNDCTL_DSP_GET_RECSRC _IOR ('P',38, int)
+#define SNDCTL_DSP_SET_RECSRC _IOWR ('P',38, int)
+#define SNDCTL_DSP_GET_PLAYTGT_NAMES _IOR ('P',39, oss_mixer_enuminfo)
+#define SNDCTL_DSP_GET_PLAYTGT _IOR ('P',40, int)
+#define SNDCTL_DSP_SET_PLAYTGT _IOWR ('P',40, int)
+
+#define SNDCTL_DSP_GET_CHNORDER _IOR ('P',42, unsigned long long)
+#define SNDCTL_DSP_SET_CHNORDER _IOWR ('P',42, unsigned long long)
+
+#define SNDCTL_DSP_HALT_OUTPUT _IO ('P',70)
+#define SNDCTL_DSP_RESET_OUTPUT SNDCTL_DSP_HALT_OUTPUT /* Old name */
+#define SNDCTL_DSP_HALT_INPUT _IO ('P',71)
+#define SNDCTL_DSP_RESET_INPUT SNDCTL_DSP_HALT_INPUT /* Old name */
+
+#define CHID_UNDEF 0
+#define CHID_L 1
+#define CHID_R 2
+#define CHID_C 3
+#define CHID_LFE 4
+#define CHID_LS 5
+#define CHID_RS 6
+#define CHID_LR 7
+#define CHID_RR 8
+#define CHNORDER_UNDEF 0x0000000000000000ULL
+#define CHNORDER_NORMAL 0x0000000087654321ULL
+
+typedef struct {
+ long long samples;
+ int fifo_samples;
+ int filler[32]; /* "Future use" */
+} oss_count_t;
+
+typedef struct audio_errinfo {
+ int play_underruns;
+ int rec_overruns;
+ unsigned int play_ptradjust; /* Obsolete */
+ unsigned int rec_ptradjust; /* Obsolete */
+ int play_errorcount; /* Unused */
+ int rec_errorcount; /* Unused */
+ int play_lasterror; /* Unused */
+ int rec_lasterror; /* Unused */
+ int play_errorparm; /* Unused */
+ int rec_errorparm; /* Unused */
+ int filler[16]; /* Unused */
+} audio_errinfo;
+
+typedef struct oss_sysinfo {
+ char product[32];
+ char version[32];
+ int versionnum;
+ char options[128]; /* Future use */
+ int numaudios;
+ int openedaudio[8]; /* Obsolete */
+ int numsynths; /* Obsolete */
+ int nummidis;
+ int numtimers;
+ int nummixers;
+ int openedmidi[8];
+ int numcards;
+ int numaudioengines;
+ char license[16];
+ char revision_info[256]; /* Internal Use */
+ int filler[172]; /* For expansion */
+} oss_sysinfo;
+
+typedef struct oss_audioinfo {
+ int dev; /* Set by caller */
+ char name[OSS_LONGNAME_SIZE];
+ int busy;
+ int pid;
+ int caps;
+ int iformats;
+ int oformats;
+ int magic; /* Unused */
+ char cmd[OSS_LONGNAME_SIZE];
+ int card_number;
+ int port_number;
+ int mixer_dev;
+ int legacy_device; /* Obsolete */
+ int enabled;
+ int flags; /* Reserved */
+ int min_rate;
+ int max_rate;
+ int min_channels;
+ int max_channels;
+ int binding; /* Reserved */
+ int rate_source;
+ char handle[32];
+#define OSS_MAX_SAMPLE_RATES 20
+ int nrates;
+ int rates[OSS_MAX_SAMPLE_RATES];
+ char song_name[OSS_LONGNAME_SIZE];
+ char label[OSS_LABEL_SIZE];
+ int latency; /* In usecs -1 = unknown */
+ char devnode[OSS_DEVNODE_SIZE];
+ int next_play_engine;
+ int next_rec_engine;
+ int filler[184]; /* For expansion */
+} oss_audioinfo;
+
+typedef struct oss_card_info {
+ int card;
+ char shortname[16];
+ char longname[128];
+ int flags;
+ char hw_info[400];
+ int intr_count;
+ int ack_count;
+ int filler[154];
+} oss_card_info;
+
+#define SNDCTL_SYSINFO _IOR ('X', 1, oss_sysinfo)
+#define OSS_SYSINFO SNDCTL_SYSINFO /* Old name */
+#define SNDCTL_MIX_NRMIX _IOR ('X',2, int)
+#define SNDCTL_MIX_NREXT _IOWR ('X',3, int)
+#define SNDCTL_MIX_EXTINFO _IOWR ('X',4, oss_mixext)
+#define SNDCTL_MIX_READ _IOWR ('X',5, oss_mixer_value)
+#define SNDCTL_MIX_WRITE _IOWR ('X',6, oss_mixer_value)
+#define SNDCTL_AUDIOINFO _IOWR ('X',7, oss_audioinfo)
+#define SNDCTL_MIX_ENUMINFO _IOWR ('X',8, oss_mixer_enuminfo)
+#define SNDCTL_MIXERINFO _IOWR ('X',10, oss_mixerinfo)
+#define SNDCTL_CARDINFO _IOWR ('X',11, oss_card_info)
+#define SNDCTL_ENGINEINFO _IOWR ('X',12, oss_audioinfo)
+#define SNDCTL_AUDIOINFO_EX _IOWR ('X',13, oss_audioinfo)
+#define SNDCTL_MIX_DESCRIPTION _IOWR ('X',14, oss_mixer_enuminfo)
+
+#define MIXT_DEVROOT 0 /* Used for default classes */
+#define MIXT_GROUP 1 /* Used for classes */
+#define MIXT_ONOFF 2 /* Used for mute controls */
+#define MIXT_ENUM 3 /* Used for enum controls */
+#define MIXT_MONOSLIDER 4 /* Used for mono and surround controls */
+#define MIXT_STEREOSLIDER 5 /* Used for stereo controls */
+#define MIXT_MESSAGE 6 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOVU 7 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOVU 8 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOPEAK 9 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOPEAK 10 /* OSS compat, unused on NetBSD */
+#define MIXT_RADIOGROUP 11 /* OSS compat, unused on NetBSD */
+#define MIXT_MARKER 12 /* OSS compat, unused on NetBSD */
+#define MIXT_VALUE 13 /* OSS compat, unused on NetBSD */
+#define MIXT_HEXVALUE 14 /* OSS compat, unused on NetBSD */
+#define MIXT_MONODB 15 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREODB 16 /* OSS compat, unused on NetBSD */
+#define MIXT_SLIDER 17 /* OSS compat, unused on NetBSD */
+#define MIXT_3D 18 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOSLIDER16 19 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOSLIDER16 20 /* OSS compat, unused on NetBSD */
+#define MIXT_MUTE 21 /* OSS compat, unused on NetBSD */
+/*
+ * Should be used for Set controls.
+ * In practice nothing uses this because it's "reserved for Sun's
+ * implementation".
+ */
+#define MIXT_ENUM_MULTI 22
+
+#define MIXF_READABLE 0x00000001 /* Value is readable: always true */
+#define MIXF_WRITEABLE 0x00000002 /* Value is writable: always true */
+#define MIXF_POLL 0x00000004 /* Can change between reads: always true */
+#define MIXF_HZ 0x00000008 /* OSS compat, unused on NetBSD */
+#define MIXF_STRING 0x00000010 /* OSS compat, unused on NetBSD */
+#define MIXF_DYNAMIC 0x00000010 /* OSS compat, unused on NetBSD */
+#define MIXF_OKFAIL 0x00000020 /* OSS compat, unused on NetBSD */
+#define MIXF_FLAT 0x00000040 /* OSS compat, unused on NetBSD */
+#define MIXF_LEGACY 0x00000080 /* OSS compat, unused on NetBSD */
+#define MIXF_CENTIBEL 0x00000100 /* OSS compat, unused on NetBSD */
+#define MIXF_DECIBEL 0x00000200 /* OSS compat, unused on NetBSD */
+#define MIXF_MAINVOL 0x00000400 /* OSS compat, unused on NetBSD */
+#define MIXF_PCMVOL 0x00000800 /* OSS compat, unused on NetBSD */
+#define MIXF_RECVOL 0x00001000 /* OSS compat, unused on NetBSD */
+#define MIXF_MONVOL 0x00002000 /* OSS compat, unused on NetBSD */
+#define MIXF_WIDE 0x00004000 /* OSS compat, unused on NetBSD */
+#define MIXF_DESCR 0x00008000 /* OSS compat, unused on NetBSD */
+#define MIXF_DISABLED 0x00010000 /* OSS compat, unused on NetBSD */
+
+/* None of the mixer capabilities are set on NetBSD. */
+#define MIXER_CAP_VIRTUAL 0x00000001 /* Virtual device */
+#define MIXER_CAP_LAYOUT_B 0x00000002 /* "Internal use only" */
+#define MIXER_CAP_NARROW 0x00000004 /* "Conserve screen space" */
+
+#define OSS_ID_SIZE 16
+typedef char oss_id_t[OSS_ID_SIZE];
+#define OSS_DEVNODE_SIZE 32
+typedef char oss_devnode_t[OSS_DEVNODE_SIZE];
+#define OSS_HANDLE_SIZE 32
+typedef char oss_handle_t[OSS_HANDLE_SIZE];
+#define OSS_LONGNAME_SIZE 64
+typedef char oss_longname_t[OSS_LONGNAME_SIZE];
+#define OSS_LABEL_SIZE 16
+typedef char oss_label_t[OSS_LABEL_SIZE];
+
+typedef struct oss_mixext_root {
+ oss_id_t id;
+ char name[48];
+} oss_mixext_root;
+
+typedef struct oss_mixerinfo {
+ int dev;
+ oss_id_t id;
+ char name[32];
+ int modify_counter;
+ int card_number;
+ int port_number;
+ oss_handle_t handle;
+ int magic; /* "Reserved for internal use" */
+ int enabled;
+ int caps;
+ int flags; /* "Reserved for internal use" */
+ int nrext;
+ int priority;
+ oss_devnode_t devnode;
+ int legacy_device;
+ int filler[245];
+} oss_mixerinfo;
+
+typedef struct oss_mixer_value {
+ int dev; /* Set by caller */
+ int ctrl; /* Set by caller */
+ int value;
+ int flags; /* Reserved for "future use" */
+ int timestamp;
+ int filler[8]; /* Reserved for "future use" */
+} oss_mixer_value;
+
+#define OSS_ENUM_MAXVALUE 255
+#define OSS_ENUM_STRINGSIZE 3000
+
+typedef struct oss_mixer_enuminfo {
+ int dev; /* Set by caller */
+ int ctrl; /* Set by caller */
+ int nvalues;
+ int version;
+ short strindex[OSS_ENUM_MAXVALUE];
+ char strings[OSS_ENUM_STRINGSIZE];
+} oss_mixer_enuminfo;
+
+typedef struct oss_mixext {
+ int dev;
+ int ctrl;
+ int type;
+ int maxvalue;
+ int minvalue;
+ int flags;
+ oss_id_t id;
+ int parent;
+ int dummy;
+ int timestamp;
+ char data[64];
+ unsigned char enum_present[32];
+ int control_no;
+ unsigned int desc;
+ char extname[32];
+ int update_counter;
+ int rgbcolor;
+ int filler[6];
+} oss_mixext;
+
+
+/*
+ * These are no-ops on FreeBSD, NetBSD, and Solaris,
+ * but are defined for compatibility with OSSv4.
+ */
+#define SNDCTL_SETSONG _IOW ('Y',2, oss_longname_t)
+#define SNDCTL_GETSONG _IOR ('Y',2, oss_longname_t)
+#define SNDCTL_SETNAME _IOW ('Y',3, oss_longname_t)
+#define SNDCTL_SETLABEL _IOW ('Y',4, oss_label_t)
+#define SNDCTL_GETLABEL _IOR ('Y',4, oss_label_t)
+
+#define ioctl _oss_ioctl
+/*
+ * If we already included <sys/ioctl.h>, then we define our own prototype,
+ * else we depend on <sys/ioctl.h> to do it for us. We do it this way, so
+ * that we don't define the prototype twice.
+ */
+#ifndef _SYS_IOCTL_H_
+#include <sys/ioctl.h>
+#else
+__BEGIN_DECLS
+int _oss_ioctl(int, unsigned long, ...);
+__END_DECLS
+#endif
+
+#endif /* !_SOUNDCARD_H_ */
\ No newline at end of file
lib/libc/include/generic-netbsd/lauxlib.h
@@ -0,0 +1,319 @@
+/* $NetBSD: lauxlib.h,v 1.8.10.1 2023/08/11 16:22:06 martin Exp $ */
+
+/*
+** Id: lauxlib.h
+** Auxiliary functions for building Lua libraries
+** See Copyright Notice in lua.h
+*/
+
+
+#ifndef lauxlib_h
+#define lauxlib_h
+
+
+#ifndef _KERNEL
+#include <stddef.h>
+#include <stdio.h>
+#endif /* _KERNEL */
+
+#include "luaconf.h"
+#include "lua.h"
+
+
+/* global table */
+#define LUA_GNAME "_G"
+
+
+typedef struct luaL_Buffer luaL_Buffer;
+
+
+/* extra error code for 'luaL_loadfilex' */
+#define LUA_ERRFILE (LUA_ERRERR+1)
+
+
+/* key, in the registry, for table of loaded modules */
+#define LUA_LOADED_TABLE "_LOADED"
+
+
+/* key, in the registry, for table of preloaded loaders */
+#define LUA_PRELOAD_TABLE "_PRELOAD"
+
+
+typedef struct luaL_Reg {
+ const char *name;
+ lua_CFunction func;
+} luaL_Reg;
+
+
+#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number))
+
+LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);
+#define luaL_checkversion(L) \
+ luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)
+
+LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
+LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);
+LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len);
+LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg);
+LUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname);
+LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg,
+ size_t *l);
+LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg,
+ const char *def, size_t *l);
+LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg);
+LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def);
+
+#ifndef _KERNEL
+LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg);
+LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg,
+ lua_Integer def);
+#else /* _KERNEL */
+#define luaL_checkinteger luaL_checknumber
+#define luaL_optinteger(L,a,d) luaL_optnumber(L, (a), (lua_Number)(d))
+#endif /* _KERNEL */
+
+LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
+LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t);
+LUALIB_API void (luaL_checkany) (lua_State *L, int arg);
+
+LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname);
+LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname);
+LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname);
+LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
+
+LUALIB_API void (luaL_where) (lua_State *L, int lvl);
+LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
+
+LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def,
+ const char *const lst[]);
+
+#ifndef _KERNEL
+LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);
+LUALIB_API int (luaL_execresult) (lua_State *L, int stat);
+#endif /* _KERNEL */
+
+
+/* predefined references */
+#define LUA_NOREF (-2)
+#define LUA_REFNIL (-1)
+
+LUALIB_API int (luaL_ref) (lua_State *L, int t);
+LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);
+
+#ifndef _KERNEL
+LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename,
+ const char *mode);
+
+#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL)
+#endif /* _KERNEL */
+
+LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
+ const char *name, const char *mode);
+LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
+
+LUALIB_API lua_State *(luaL_newstate) (void);
+
+LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);
+
+LUALIB_API void (luaL_addgsub) (luaL_Buffer *b, const char *s,
+ const char *p, const char *r);
+LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s,
+ const char *p, const char *r);
+
+LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
+
+LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname);
+
+LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1,
+ const char *msg, int level);
+
+LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,
+ lua_CFunction openf, int glb);
+
+/*
+** ===============================================================
+** some useful macros
+** ===============================================================
+*/
+
+
+#define luaL_newlibtable(L,l) \
+ lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)
+
+#define luaL_newlib(L,l) \
+ (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
+
+#define luaL_argcheck(L, cond,arg,extramsg) \
+ ((void)(luai_likely(cond) || luaL_argerror(L, (arg), (extramsg))))
+
+#define luaL_argexpected(L,cond,arg,tname) \
+ ((void)(luai_likely(cond) || luaL_typeerror(L, (arg), (tname))))
+
+#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL))
+#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL))
+
+#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i)))
+
+#ifndef _KERNEL
+#define luaL_dofile(L, fn) \
+ (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
+#endif /* _KERNEL */
+
+#define luaL_dostring(L, s) \
+ (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
+
+#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
+
+#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
+
+#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL)
+
+
+/*
+** Perform arithmetic operations on lua_Integer values with wrap-around
+** semantics, as the Lua core does.
+*/
+#define luaL_intop(op,v1,v2) \
+ ((lua_Integer)((lua_Unsigned)(v1) op (lua_Unsigned)(v2)))
+
+
+/* push the value used to represent failure/error */
+#define luaL_pushfail(L) lua_pushnil(L)
+
+
+/*
+** Internal assertions for in-house debugging
+*/
+#if !defined(lua_assert)
+
+#if defined LUAI_ASSERT
+ #include <assert.h>
+ #define lua_assert(c) assert(c)
+#else
+ #define lua_assert(c) ((void)0)
+#endif
+
+#endif
+
+
+
+/*
+** {======================================================
+** Generic Buffer manipulation
+** =======================================================
+*/
+
+struct luaL_Buffer {
+ char *b; /* buffer address */
+ size_t size; /* buffer size */
+ size_t n; /* number of characters in buffer */
+ lua_State *L;
+ union {
+ LUAI_MAXALIGN; /* ensure maximum alignment for buffer */
+ char b[LUAL_BUFFERSIZE]; /* initial buffer */
+ } init;
+};
+
+
+#define luaL_bufflen(bf) ((bf)->n)
+#define luaL_buffaddr(bf) ((bf)->b)
+
+
+#define luaL_addchar(B,c) \
+ ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \
+ ((B)->b[(B)->n++] = (c)))
+
+#define luaL_addsize(B,s) ((B)->n += (s))
+
+#define luaL_buffsub(B,s) ((B)->n -= (s))
+
+LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
+LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
+LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
+LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);
+LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
+LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
+LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz);
+LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz);
+
+#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE)
+
+/* }====================================================== */
+
+
+
+#ifndef _KERNEL
+/*
+** {======================================================
+** File handles for IO library
+** =======================================================
+*/
+
+/*
+** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and
+** initial structure 'luaL_Stream' (it may contain other fields
+** after that initial structure).
+*/
+
+#define LUA_FILEHANDLE "FILE*"
+
+
+typedef struct luaL_Stream {
+ FILE *f; /* stream (NULL for incompletely created streams) */
+ lua_CFunction closef; /* to close stream (NULL for closed streams) */
+} luaL_Stream;
+
+/* }====================================================== */
+#endif /* _KERNEL */
+
+
+#ifndef _KERNEL
+/*
+** {==================================================================
+** "Abstraction Layer" for basic report of messages and errors
+** ===================================================================
+*/
+
+/* print a string */
+#if !defined(lua_writestring)
+#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout)
+#endif
+
+/* print a newline and flush the output */
+#if !defined(lua_writeline)
+#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout))
+#endif
+
+/* print an error message */
+#if !defined(lua_writestringerror)
+#define lua_writestringerror(s,p) \
+ (fprintf(stderr, (s), (p)), fflush(stderr))
+#endif
+
+/* }================================================================== */
+#endif /* _KERNEL */
+
+
+/*
+** {============================================================
+** Compatibility with deprecated conversions
+** =============================================================
+*/
+#if defined(LUA_COMPAT_APIINTCASTS)
+
+#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a))
+#define luaL_optunsigned(L,a,d) \
+ ((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d)))
+
+#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n)))
+#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d)))
+
+#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n)))
+#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d)))
+
+#endif
+/* }============================================================ */
+
+
+
+#endif
\ No newline at end of file
lib/libc/include/generic-netbsd/lua.h
@@ -0,0 +1,549 @@
+/* $NetBSD: lua.h,v 1.11.10.1 2023/08/11 16:22:07 martin Exp $ */
+
+/*
+** Id: lua.h
+** Lua - A Scripting Language
+** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
+** See Copyright Notice at the end of this file
+*/
+
+
+#ifndef lua_h
+#define lua_h
+
+#include <stdarg.h>
+#ifndef _KERNEL
+#include <stddef.h>
+#endif /* _KERNEL */
+
+
+#include "luaconf.h"
+
+
+#define LUA_VERSION_MAJOR "5"
+#define LUA_VERSION_MINOR "4"
+#define LUA_VERSION_RELEASE "6"
+
+#define LUA_VERSION_NUM 504
+#define LUA_VERSION_RELEASE_NUM (LUA_VERSION_NUM * 100 + 6)
+
+#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
+#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
+#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2023 Lua.org, PUC-Rio"
+#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
+
+
+/* mark for precompiled code ('<esc>Lua') */
+#define LUA_SIGNATURE "\x1bLua"
+
+/* option for multiple returns in 'lua_pcall' and 'lua_call' */
+#define LUA_MULTRET (-1)
+
+
+/*
+** Pseudo-indices
+** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty
+** space after that to help overflow detection)
+*/
+#define LUA_REGISTRYINDEX (-LUAI_MAXSTACK - 1000)
+#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i))
+
+
+/* thread status */
+#define LUA_OK 0
+#define LUA_YIELD 1
+#define LUA_ERRRUN 2
+#define LUA_ERRSYNTAX 3
+#define LUA_ERRMEM 4
+#define LUA_ERRERR 5
+
+
+typedef struct lua_State lua_State;
+
+
+/*
+** basic types
+*/
+#define LUA_TNONE (-1)
+
+#define LUA_TNIL 0
+#define LUA_TBOOLEAN 1
+#define LUA_TLIGHTUSERDATA 2
+#define LUA_TNUMBER 3
+#define LUA_TSTRING 4
+#define LUA_TTABLE 5
+#define LUA_TFUNCTION 6
+#define LUA_TUSERDATA 7
+#define LUA_TTHREAD 8
+
+#define LUA_NUMTYPES 9
+
+
+
+/* minimum Lua stack available to a C function */
+#define LUA_MINSTACK 20
+
+
+/* predefined values in the registry */
+#define LUA_RIDX_MAINTHREAD 1
+#define LUA_RIDX_GLOBALS 2
+#define LUA_RIDX_LAST LUA_RIDX_GLOBALS
+
+
+/* type of numbers in Lua */
+typedef LUA_NUMBER lua_Number;
+
+
+/* type for integer functions */
+typedef LUA_INTEGER lua_Integer;
+
+/* unsigned integer type */
+typedef LUA_UNSIGNED lua_Unsigned;
+
+/* type for continuation-function contexts */
+typedef LUA_KCONTEXT lua_KContext;
+
+
+/*
+** Type for C functions registered with Lua
+*/
+typedef int (*lua_CFunction) (lua_State *L);
+
+/*
+** Type for continuation functions
+*/
+typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);
+
+
+/*
+** Type for functions that read/write blocks when loading/dumping Lua chunks
+*/
+typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
+
+typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud);
+
+
+/*
+** Type for memory-allocation functions
+*/
+typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
+
+
+/*
+** Type for warning functions
+*/
+typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);
+
+
+/*
+** Type used by the debug API to collect debug information
+*/
+typedef struct lua_Debug lua_Debug;
+
+
+/*
+** Functions to be called by the debugger in specific events
+*/
+typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
+
+
+/*
+** generic extra include file
+*/
+#if defined(LUA_USER_H)
+#include LUA_USER_H
+#endif
+
+
+/*
+** RCS ident string
+*/
+extern const char lua_ident[];
+
+
+/*
+** state manipulation
+*/
+LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
+LUA_API void (lua_close) (lua_State *L);
+LUA_API lua_State *(lua_newthread) (lua_State *L);
+LUA_API int (lua_closethread) (lua_State *L, lua_State *from);
+LUA_API int (lua_resetthread) (lua_State *L); /* Deprecated! */
+
+LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
+
+
+LUA_API lua_Number (lua_version) (lua_State *L);
+
+
+/*
+** basic stack manipulation
+*/
+LUA_API int (lua_absindex) (lua_State *L, int idx);
+LUA_API int (lua_gettop) (lua_State *L);
+LUA_API void (lua_settop) (lua_State *L, int idx);
+LUA_API void (lua_pushvalue) (lua_State *L, int idx);
+LUA_API void (lua_rotate) (lua_State *L, int idx, int n);
+LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx);
+LUA_API int (lua_checkstack) (lua_State *L, int n);
+
+LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n);
+
+
+/*
+** access functions (stack -> C)
+*/
+
+LUA_API int (lua_isnumber) (lua_State *L, int idx);
+LUA_API int (lua_isstring) (lua_State *L, int idx);
+LUA_API int (lua_iscfunction) (lua_State *L, int idx);
+LUA_API int (lua_isinteger) (lua_State *L, int idx);
+LUA_API int (lua_isuserdata) (lua_State *L, int idx);
+LUA_API int (lua_type) (lua_State *L, int idx);
+LUA_API const char *(lua_typename) (lua_State *L, int tp);
+
+#ifndef _KERNEL
+LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum);
+#else /* _KERNEL */
+#define lua_tonumberx (lua_Integer) lua_tointegerx
+#endif /* _KERNEL */
+LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum);
+LUA_API int (lua_toboolean) (lua_State *L, int idx);
+LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len);
+LUA_API lua_Unsigned (lua_rawlen) (lua_State *L, int idx);
+LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx);
+LUA_API void *(lua_touserdata) (lua_State *L, int idx);
+LUA_API lua_State *(lua_tothread) (lua_State *L, int idx);
+LUA_API const void *(lua_topointer) (lua_State *L, int idx);
+
+
+/*
+** Comparison and arithmetic functions
+*/
+
+#define LUA_OPADD 0 /* ORDER TM, ORDER OP */
+#define LUA_OPSUB 1
+#define LUA_OPMUL 2
+#define LUA_OPMOD 3
+#ifndef _KERNEL
+#define LUA_OPPOW 4
+#define LUA_OPDIV 5
+#define LUA_OPIDIV 6
+#define LUA_OPBAND 7
+#define LUA_OPBOR 8
+#define LUA_OPBXOR 9
+#define LUA_OPSHL 10
+#define LUA_OPSHR 11
+#define LUA_OPUNM 12
+#define LUA_OPBNOT 13
+#else /* _KERNEL */
+#define LUA_OPIDIV 4
+#define LUA_OPBAND 5
+#define LUA_OPBOR 6
+#define LUA_OPBXOR 7
+#define LUA_OPSHL 8
+#define LUA_OPSHR 9
+#define LUA_OPUNM 10
+#define LUA_OPBNOT 11
+#endif /* _KERNEL */
+
+LUA_API void (lua_arith) (lua_State *L, int op);
+
+#define LUA_OPEQ 0
+#define LUA_OPLT 1
+#define LUA_OPLE 2
+
+LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2);
+LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op);
+
+
+/*
+** push functions (C -> stack)
+*/
+LUA_API void (lua_pushnil) (lua_State *L);
+#ifndef _KERNEL
+LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n);
+#else /* _KERNEL */
+#define lua_pushnumber(L, n) lua_pushinteger(L, (lua_Integer)(n))
+#endif /* _KERNEL */
+LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n);
+LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len);
+LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
+LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
+ va_list argp);
+LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
+LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
+LUA_API void (lua_pushboolean) (lua_State *L, int b);
+LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p);
+LUA_API int (lua_pushthread) (lua_State *L);
+
+
+/*
+** get functions (Lua -> stack)
+*/
+LUA_API int (lua_getglobal) (lua_State *L, const char *name);
+LUA_API int (lua_gettable) (lua_State *L, int idx);
+LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k);
+LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n);
+LUA_API int (lua_rawget) (lua_State *L, int idx);
+LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n);
+LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p);
+
+LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec);
+LUA_API void *(lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue);
+LUA_API int (lua_getmetatable) (lua_State *L, int objindex);
+LUA_API int (lua_getiuservalue) (lua_State *L, int idx, int n);
+
+
+/*
+** set functions (stack -> Lua)
+*/
+LUA_API void (lua_setglobal) (lua_State *L, const char *name);
+LUA_API void (lua_settable) (lua_State *L, int idx);
+LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k);
+LUA_API void (lua_seti) (lua_State *L, int idx, lua_Integer n);
+LUA_API void (lua_rawset) (lua_State *L, int idx);
+LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n);
+LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p);
+LUA_API int (lua_setmetatable) (lua_State *L, int objindex);
+LUA_API int (lua_setiuservalue) (lua_State *L, int idx, int n);
+
+
+/*
+** 'load' and 'call' functions (load and run Lua code)
+*/
+LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults,
+ lua_KContext ctx, lua_KFunction k);
+#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL)
+
+LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
+ lua_KContext ctx, lua_KFunction k);
+#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL)
+
+LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt,
+ const char *chunkname, const char *mode);
+
+LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);
+
+
+/*
+** coroutine functions
+*/
+LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx,
+ lua_KFunction k);
+LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg,
+ int *nres);
+LUA_API int (lua_status) (lua_State *L);
+LUA_API int (lua_isyieldable) (lua_State *L);
+
+#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL)
+
+
+/*
+** Warning-related functions
+*/
+LUA_API void (lua_setwarnf) (lua_State *L, lua_WarnFunction f, void *ud);
+LUA_API void (lua_warning) (lua_State *L, const char *msg, int tocont);
+
+
+/*
+** garbage-collection function and options
+*/
+
+#define LUA_GCSTOP 0
+#define LUA_GCRESTART 1
+#define LUA_GCCOLLECT 2
+#define LUA_GCCOUNT 3
+#define LUA_GCCOUNTB 4
+#define LUA_GCSTEP 5
+#define LUA_GCSETPAUSE 6
+#define LUA_GCSETSTEPMUL 7
+#define LUA_GCISRUNNING 9
+#define LUA_GCGEN 10
+#define LUA_GCINC 11
+
+LUA_API int (lua_gc) (lua_State *L, int what, ...);
+
+
+/*
+** miscellaneous functions
+*/
+
+LUA_API int (lua_error) (lua_State *L);
+
+LUA_API int (lua_next) (lua_State *L, int idx);
+
+LUA_API void (lua_concat) (lua_State *L, int n);
+LUA_API void (lua_len) (lua_State *L, int idx);
+
+LUA_API size_t (lua_stringtonumber) (lua_State *L, const char *s);
+
+LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
+LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
+
+LUA_API void (lua_toclose) (lua_State *L, int idx);
+LUA_API void (lua_closeslot) (lua_State *L, int idx);
+
+
+/*
+** {==============================================================
+** some useful macros
+** ===============================================================
+*/
+
+#define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE))
+
+#define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL)
+#define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL)
+
+#define lua_pop(L,n) lua_settop(L, -(n)-1)
+
+#define lua_newtable(L) lua_createtable(L, 0, 0)
+
+#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
+
+#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0)
+
+#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
+#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE)
+#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
+#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL)
+#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN)
+#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD)
+#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE)
+#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0)
+
+#define lua_pushliteral(L, s) lua_pushstring(L, "" s)
+
+#define lua_pushglobaltable(L) \
+ ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS))
+
+#define lua_tostring(L,i) lua_tolstring(L, (i), NULL)
+
+
+#define lua_insert(L,idx) lua_rotate(L, (idx), 1)
+
+#define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1))
+
+#define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1))
+
+/* }============================================================== */
+
+
+/*
+** {==============================================================
+** compatibility macros
+** ===============================================================
+*/
+#if defined(LUA_COMPAT_APIINTCASTS)
+
+#define lua_pushunsigned(L,n) lua_pushinteger(L, (lua_Integer)(n))
+#define lua_tounsignedx(L,i,is) ((lua_Unsigned)lua_tointegerx(L,i,is))
+#define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL)
+
+#endif
+
+#define lua_newuserdata(L,s) lua_newuserdatauv(L,s,1)
+#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1)
+#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1)
+
+#define LUA_NUMTAGS LUA_NUMTYPES
+
+/* }============================================================== */
+
+/*
+** {======================================================================
+** Debug API
+** =======================================================================
+*/
+
+
+/*
+** Event codes
+*/
+#define LUA_HOOKCALL 0
+#define LUA_HOOKRET 1
+#define LUA_HOOKLINE 2
+#define LUA_HOOKCOUNT 3
+#define LUA_HOOKTAILCALL 4
+
+
+/*
+** Event masks
+*/
+#define LUA_MASKCALL (1 << LUA_HOOKCALL)
+#define LUA_MASKRET (1 << LUA_HOOKRET)
+#define LUA_MASKLINE (1 << LUA_HOOKLINE)
+#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT)
+
+
+LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
+LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
+LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
+LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
+LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
+LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
+
+LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
+LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
+ int fidx2, int n2);
+
+LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
+LUA_API lua_Hook (lua_gethook) (lua_State *L);
+LUA_API int (lua_gethookmask) (lua_State *L);
+LUA_API int (lua_gethookcount) (lua_State *L);
+
+LUA_API int (lua_setcstacklimit) (lua_State *L, unsigned int limit);
+
+struct lua_Debug {
+ int event;
+ const char *name; /* (n) */
+ const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
+ const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */
+ const char *source; /* (S) */
+ size_t srclen; /* (S) */
+ int currentline; /* (l) */
+ int linedefined; /* (S) */
+ int lastlinedefined; /* (S) */
+ unsigned char nups; /* (u) number of upvalues */
+ unsigned char nparams;/* (u) number of parameters */
+ char isvararg; /* (u) */
+ char istailcall; /* (t) */
+ unsigned short ftransfer; /* (r) index of first value transferred */
+ unsigned short ntransfer; /* (r) number of transferred values */
+ char short_src[LUA_IDSIZE]; /* (S) */
+ /* private part */
+ struct CallInfo *i_ci; /* active function */
+};
+
+/* }====================================================================== */
+
+
+/******************************************************************************
+#ifdef _KERNEL
+* Copyright (c) 2016-2017, Lourival Vieira Neto <lneto@NetBSD.org>.
+#endif
+* Copyright (C) 1994-2023 Lua.org, PUC-Rio.
+*
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* "Software"), to deal in the Software without restriction, including
+* without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to
+* permit persons to whom the Software is furnished to do so, subject to
+* the following conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+******************************************************************************/
+
+
+#endif
\ No newline at end of file
lib/libc/include/generic-netbsd/luaconf.h
@@ -0,0 +1,873 @@
+/* $NetBSD: luaconf.h,v 1.23.10.1 2023/08/11 16:22:07 martin Exp $ */
+
+/*
+** Id: luaconf.h
+** Configuration file for Lua
+** See Copyright Notice in lua.h
+*/
+
+
+#ifndef luaconf_h
+#define luaconf_h
+
+#ifndef _KERNEL
+#include <limits.h>
+#include <stddef.h>
+#else /* _KERNEL */
+#include <machine/limits.h>
+#include <sys/systm.h>
+#endif /* _KERNEL */
+
+
+/*
+** ===================================================================
+** General Configuration File for Lua
+**
+** Some definitions here can be changed externally, through the compiler
+** (e.g., with '-D' options): They are commented out or protected
+** by '#if !defined' guards. However, several other definitions
+** should be changed directly here, either because they affect the
+** Lua ABI (by making the changes here, you ensure that all software
+** connected to Lua, such as C libraries, will be compiled with the same
+** configuration); or because they are seldom changed.
+**
+** Search for "@@" to find all configurable definitions.
+** ===================================================================
+*/
+
+
+/*
+** {====================================================================
+** System Configuration: macros to adapt (if needed) Lua to some
+** particular platform, for instance restricting it to C89.
+** =====================================================================
+*/
+
+/*
+@@ LUA_USE_C89 controls the use of non-ISO-C89 features.
+** Define it if you want Lua to avoid the use of a few C99 features
+** or Windows-specific features on Windows.
+*/
+/* #define LUA_USE_C89 */
+
+
+/*
+** By default, Lua on Windows use (some) specific Windows features
+*/
+#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)
+#define LUA_USE_WINDOWS /* enable goodies for regular Windows */
+#endif
+
+
+#if defined(LUA_USE_WINDOWS)
+#define LUA_DL_DLL /* enable support for DLL */
+#define LUA_USE_C89 /* broadly, Windows is C89 */
+#endif
+
+
+#if defined(LUA_USE_LINUX)
+#define LUA_USE_POSIX
+#define LUA_USE_DLOPEN /* needs an extra library: -ldl */
+#endif
+
+
+#if defined(LUA_USE_MACOSX)
+#define LUA_USE_POSIX
+#define LUA_USE_DLOPEN /* MacOS does not need -ldl */
+#endif
+
+
+#if defined(LUA_USE_IOS)
+#define LUA_USE_POSIX
+#define LUA_USE_DLOPEN
+#endif
+
+
+/*
+@@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits.
+*/
+#define LUAI_IS32INT ((UINT_MAX >> 30) >= 3)
+
+/* }================================================================== */
+
+
+
+/*
+** {==================================================================
+** Configuration for Number types. These options should not be
+** set externally, because any other code connected to Lua must
+** use the same configuration.
+** ===================================================================
+*/
+
+/*
+@@ LUA_INT_TYPE defines the type for Lua integers.
+@@ LUA_FLOAT_TYPE defines the type for Lua floats.
+** Lua should work fine with any mix of these options supported
+** by your C compiler. The usual configurations are 64-bit integers
+** and 'double' (the default), 32-bit integers and 'float' (for
+** restricted platforms), and 'long'/'double' (for C compilers not
+** compliant with C99, which may not have support for 'long long').
+*/
+
+/* predefined options for LUA_INT_TYPE */
+#define LUA_INT_INT 1
+#define LUA_INT_LONG 2
+#define LUA_INT_LONGLONG 3
+
+/* predefined options for LUA_FLOAT_TYPE */
+#define LUA_FLOAT_FLOAT 1
+#define LUA_FLOAT_DOUBLE 2
+#define LUA_FLOAT_LONGDOUBLE 3
+
+
+/* Default configuration ('long long' and 'double', for 64-bit Lua) */
+#define LUA_INT_DEFAULT LUA_INT_LONGLONG
+#define LUA_FLOAT_DEFAULT LUA_FLOAT_DOUBLE
+
+
+/*
+@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats.
+*/
+#define LUA_32BITS 0
+
+
+/*
+@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for
+** C89 ('long' and 'double'); Windows always has '__int64', so it does
+** not need to use this case.
+*/
+#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)
+#define LUA_C89_NUMBERS 1
+#else
+#define LUA_C89_NUMBERS 0
+#endif
+
+
+#if LUA_32BITS /* { */
+/*
+** 32-bit integers and 'float'
+*/
+#if LUAI_IS32INT /* use 'int' if big enough */
+#define LUA_INT_TYPE LUA_INT_INT
+#else /* otherwise use 'long' */
+#define LUA_INT_TYPE LUA_INT_LONG
+#endif
+#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT
+
+#elif LUA_C89_NUMBERS /* }{ */
+/*
+** largest types available for C89 ('long' and 'double')
+*/
+#define LUA_INT_TYPE LUA_INT_LONG
+#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
+
+#else /* }{ */
+/* use defaults */
+
+#define LUA_INT_TYPE LUA_INT_DEFAULT
+#define LUA_FLOAT_TYPE LUA_FLOAT_DEFAULT
+
+#endif /* } */
+
+
+/* }================================================================== */
+
+
+
+/*
+** {==================================================================
+** Configuration for Paths.
+** ===================================================================
+*/
+
+/*
+** LUA_PATH_SEP is the character that separates templates in a path.
+** LUA_PATH_MARK is the string that marks the substitution points in a
+** template.
+** LUA_EXEC_DIR in a Windows path is replaced by the executable's
+** directory.
+*/
+#define LUA_PATH_SEP ";"
+#define LUA_PATH_MARK "?"
+#define LUA_EXEC_DIR "!"
+
+
+/*
+@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for
+** Lua libraries.
+@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for
+** C libraries.
+** CHANGE them if your machine has a non-conventional directory
+** hierarchy or if you want to install your libraries in
+** non-conventional directories.
+*/
+
+#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
+#if defined(_WIN32) /* { */
+/*
+** In Windows, any exclamation mark ('!') in the path is replaced by the
+** path of the directory of the executable file of the current process.
+*/
+#define LUA_LDIR "!\\lua\\"
+#define LUA_CDIR "!\\"
+#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\"
+
+#if !defined(LUA_PATH_DEFAULT)
+#define LUA_PATH_DEFAULT \
+ LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \
+ LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \
+ LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
+ ".\\?.lua;" ".\\?\\init.lua"
+#endif
+
+#if !defined(LUA_CPATH_DEFAULT)
+#define LUA_CPATH_DEFAULT \
+ LUA_CDIR"?.dll;" \
+ LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
+ LUA_CDIR"loadall.dll;" ".\\?.dll"
+#endif
+
+#else /* }{ */
+
+#define LUA_ROOT "/usr/local/"
+#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
+#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
+
+#if !defined(LUA_PATH_DEFAULT)
+#define LUA_PATH_DEFAULT \
+ LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
+ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
+ "./?.lua;" "./?/init.lua"
+#endif
+
+#if !defined(LUA_CPATH_DEFAULT)
+#define LUA_CPATH_DEFAULT \
+ LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so"
+#endif
+
+#endif /* } */
+
+
+/*
+@@ LUA_DIRSEP is the directory separator (for submodules).
+** CHANGE it if your machine does not use "/" as the directory separator
+** and is not Windows. (On Windows Lua automatically uses "\".)
+*/
+#if !defined(LUA_DIRSEP)
+
+#if defined(_WIN32)
+#define LUA_DIRSEP "\\"
+#else
+#define LUA_DIRSEP "/"
+#endif
+
+#endif
+
+/* }================================================================== */
+
+
+/*
+** {==================================================================
+** Marks for exported symbols in the C code
+** ===================================================================
+*/
+
+/*
+@@ LUA_API is a mark for all core API functions.
+@@ LUALIB_API is a mark for all auxiliary library functions.
+@@ LUAMOD_API is a mark for all standard library opening functions.
+** CHANGE them if you need to define those functions in some special way.
+** For instance, if you want to create one Windows DLL with the core and
+** the libraries, you may want to use the following definition (define
+** LUA_BUILD_AS_DLL to get it).
+*/
+#if defined(LUA_BUILD_AS_DLL) /* { */
+
+#if defined(LUA_CORE) || defined(LUA_LIB) /* { */
+#define LUA_API __declspec(dllexport)
+#else /* }{ */
+#define LUA_API __declspec(dllimport)
+#endif /* } */
+
+#else /* }{ */
+
+#define LUA_API extern
+
+#endif /* } */
+
+
+/*
+** More often than not the libs go together with the core.
+*/
+#define LUALIB_API LUA_API
+#define LUAMOD_API LUA_API
+
+
+/*
+@@ LUAI_FUNC is a mark for all extern functions that are not to be
+** exported to outside modules.
+@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables,
+** none of which to be exported to outside modules (LUAI_DDEF for
+** definitions and LUAI_DDEC for declarations).
+** CHANGE them if you need to mark them in some special way. Elf/gcc
+** (versions 3.2 and later) mark them as "hidden" to optimize access
+** when Lua is compiled as a shared library. Not all elf targets support
+** this attribute. Unfortunately, gcc does not offer a way to check
+** whether the target offers that support, and those without support
+** give a warning about it. To avoid these warnings, change to the
+** default definition.
+*/
+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
+ defined(__ELF__) /* { */
+#define LUAI_FUNC __attribute__((visibility("internal"))) extern
+#else /* }{ */
+#define LUAI_FUNC extern
+#endif /* } */
+
+#define LUAI_DDEC(dec) LUAI_FUNC dec
+#define LUAI_DDEF /* empty */
+
+/* }================================================================== */
+
+
+/*
+** {==================================================================
+** Compatibility with previous versions
+** ===================================================================
+*/
+
+/*
+@@ LUA_COMPAT_5_3 controls other macros for compatibility with Lua 5.3.
+** You can define it to get all options, or change specific options
+** to fit your specific needs.
+*/
+#if defined(LUA_COMPAT_5_3) /* { */
+
+/*
+@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated
+** functions in the mathematical library.
+** (These functions were already officially removed in 5.3;
+** nevertheless they are still available here.)
+*/
+#define LUA_COMPAT_MATHLIB
+
+/*
+@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for
+** manipulating other integer types (lua_pushunsigned, lua_tounsigned,
+** luaL_checkint, luaL_checklong, etc.)
+** (These macros were also officially removed in 5.3, but they are still
+** available here.)
+*/
+#define LUA_COMPAT_APIINTCASTS
+
+
+/*
+@@ LUA_COMPAT_LT_LE controls the emulation of the '__le' metamethod
+** using '__lt'.
+*/
+#define LUA_COMPAT_LT_LE
+
+
+/*
+@@ The following macros supply trivial compatibility for some
+** changes in the API. The macros themselves document how to
+** change your code to avoid using them.
+** (Once more, these macros were officially removed in 5.3, but they are
+** still available here.)
+*/
+#define lua_strlen(L,i) lua_rawlen(L, (i))
+
+#define lua_objlen(L,i) lua_rawlen(L, (i))
+
+#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ)
+#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT)
+
+#endif /* } */
+
+/* }================================================================== */
+
+
+
+/*
+** {==================================================================
+** Configuration for Numbers (low-level part).
+** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_*
+** satisfy your needs.
+** ===================================================================
+*/
+
+#ifndef _KERNEL
+/*
+@@ LUAI_UACNUMBER is the result of a 'default argument promotion'
+@@ over a floating number.
+@@ l_floatatt(x) corrects float attribute 'x' to the proper float type
+** by prefixing it with one of FLT/DBL/LDBL.
+@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
+@@ LUA_NUMBER_FMT is the format for writing floats.
+@@ lua_number2str converts a float to a string.
+@@ l_mathop allows the addition of an 'l' or 'f' to all math operations.
+@@ l_floor takes the floor of a float.
+@@ lua_str2number converts a decimal numeral to a number.
+*/
+
+
+/* The following definitions are good for most cases here */
+
+#define l_floor(x) (l_mathop(floor)(x))
+
+#define lua_number2str(s,sz,n) \
+ l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n))
+
+/*
+@@ lua_numbertointeger converts a float number with an integral value
+** to an integer, or returns 0 if float is not within the range of
+** a lua_Integer. (The range comparisons are tricky because of
+** rounding. The tests here assume a two-complement representation,
+** where MININTEGER always has an exact representation as a float;
+** MAXINTEGER may not have one, and therefore its conversion to float
+** may have an ill-defined value.)
+*/
+#define lua_numbertointeger(n,p) \
+ ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
+ (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
+ (*(p) = (LUA_INTEGER)(n), 1))
+
+
+/* now the variable definitions */
+
+#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT /* { single float */
+
+#define LUA_NUMBER float
+
+#define l_floatatt(n) (FLT_##n)
+
+#define LUAI_UACNUMBER double
+
+#define LUA_NUMBER_FRMLEN ""
+#define LUA_NUMBER_FMT "%.7g"
+
+#define l_mathop(op) op##f
+
+#define lua_str2number(s,p) strtof((s), (p))
+
+
+#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE /* }{ long double */
+
+#define LUA_NUMBER long double
+
+#define l_floatatt(n) (LDBL_##n)
+
+#define LUAI_UACNUMBER long double
+
+#define LUA_NUMBER_FRMLEN "L"
+#define LUA_NUMBER_FMT "%.19Lg"
+
+#define l_mathop(op) op##l
+
+#define lua_str2number(s,p) strtold((s), (p))
+
+#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE /* }{ double */
+
+#define LUA_NUMBER double
+
+#define l_floatatt(n) (DBL_##n)
+
+#define LUAI_UACNUMBER double
+
+#define LUA_NUMBER_FRMLEN ""
+#define LUA_NUMBER_FMT "%.14g"
+
+#define l_mathop(op) op
+
+#define lua_str2number(s,p) strtod((s), (p))
+
+#else /* }{ */
+
+#error "numeric float type not defined"
+
+#endif /* } */
+#endif /*_KERNEL */
+
+
+
+/*
+@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
+@@ LUAI_UACINT is the result of a 'default argument promotion'
+@@ over a LUA_INTEGER.
+@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
+@@ LUA_INTEGER_FMT is the format for writing integers.
+@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
+@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
+@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED.
+@@ lua_integer2str converts an integer to a string.
+*/
+
+
+/* The following definitions are good for most cases here */
+
+#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d"
+
+#define LUAI_UACINT LUA_INTEGER
+
+#define lua_integer2str(s,sz,n) \
+ l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n))
+
+/*
+** use LUAI_UACINT here to avoid problems with promotions (which
+** can turn a comparison between unsigneds into a signed comparison)
+*/
+#define LUA_UNSIGNED unsigned LUAI_UACINT
+
+
+/* now the variable definitions */
+
+#if LUA_INT_TYPE == LUA_INT_INT /* { int */
+
+#define LUA_INTEGER int
+#define LUA_INTEGER_FRMLEN ""
+
+#define LUA_MAXINTEGER INT_MAX
+#define LUA_MININTEGER INT_MIN
+
+#define LUA_MAXUNSIGNED UINT_MAX
+
+#elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */
+
+#define LUA_INTEGER long
+#define LUA_INTEGER_FRMLEN "l"
+
+#define LUA_MAXINTEGER LONG_MAX
+#define LUA_MININTEGER LONG_MIN
+
+#define LUA_MAXUNSIGNED ULONG_MAX
+
+#elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */
+
+/* use presence of macro LLONG_MAX as proxy for C99 compliance */
+#if defined(LLONG_MAX) /* { */
+/* use ISO C99 stuff */
+
+#define LUA_INTEGER long long
+#define LUA_INTEGER_FRMLEN "ll"
+
+#define LUA_MAXINTEGER LLONG_MAX
+#define LUA_MININTEGER LLONG_MIN
+
+#define LUA_MAXUNSIGNED ULLONG_MAX
+
+#elif defined(LUA_USE_WINDOWS) /* }{ */
+/* in Windows, can use specific Windows types */
+
+#define LUA_INTEGER __int64
+#define LUA_INTEGER_FRMLEN "I64"
+
+#define LUA_MAXINTEGER _I64_MAX
+#define LUA_MININTEGER _I64_MIN
+
+#define LUA_MAXUNSIGNED _UI64_MAX
+
+#else /* }{ */
+
+#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
+ or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)"
+
+#endif /* } */
+
+#else /* }{ */
+
+#error "numeric integer type not defined"
+
+#endif /* } */
+
+/* }================================================================== */
+
+
+/*
+** {==================================================================
+** Dependencies with C99 and other C details
+** ===================================================================
+*/
+
+/*
+@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89.
+** (All uses in Lua have only one format item.)
+*/
+#if !defined(LUA_USE_C89)
+#define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i)
+#else
+#define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i))
+#endif
+
+
+/*
+@@ lua_strx2number converts a hexadecimal numeral to a number.
+** In C99, 'strtod' does that conversion. Otherwise, you can
+** leave 'lua_strx2number' undefined and Lua will provide its own
+** implementation.
+*/
+#if !defined(LUA_USE_C89)
+#define lua_strx2number(s,p) lua_str2number(s,p)
+#endif
+
+
+/*
+@@ lua_pointer2str converts a pointer to a readable string in a
+** non-specified way.
+*/
+#define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p)
+
+
+/*
+@@ lua_number2strx converts a float to a hexadecimal numeral.
+** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that.
+** Otherwise, you can leave 'lua_number2strx' undefined and Lua will
+** provide its own implementation.
+*/
+#if !defined(LUA_USE_C89)
+#define lua_number2strx(L,b,sz,f,n) \
+ ((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n)))
+#endif
+
+
+/*
+** 'strtof' and 'opf' variants for math functions are not valid in
+** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the
+** availability of these variants. ('math.h' is already included in
+** all files that use these macros.)
+*/
+#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))
+#undef l_mathop /* variants not available */
+#undef lua_str2number
+#define l_mathop(op) (lua_Number)op /* no variant */
+#define lua_str2number(s,p) ((lua_Number)strtod((s), (p)))
+#endif
+
+
+/*
+@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation
+** functions. It must be a numerical type; Lua will use 'intptr_t' if
+** available, otherwise it will use 'ptrdiff_t' (the nearest thing to
+** 'intptr_t' in C89)
+*/
+#define LUA_KCONTEXT ptrdiff_t
+
+#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \
+ __STDC_VERSION__ >= 199901L
+#include <stdint.h>
+#if defined(INTPTR_MAX) /* even in C99 this type is optional */
+#undef LUA_KCONTEXT
+#define LUA_KCONTEXT intptr_t
+#endif
+#endif
+
+
+/*
+@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point).
+** Change that if you do not want to use C locales. (Code using this
+** macro must include the header 'locale.h'.)
+*/
+#if !defined(lua_getlocaledecpoint)
+#define lua_getlocaledecpoint() (localeconv()->decimal_point[0])
+#endif
+
+
+/*
+** macros to improve jump prediction, used mostly for error handling
+** and debug facilities. (Some macros in the Lua API use these macros.
+** Define LUA_NOBUILTIN if you do not want '__builtin_expect' in your
+** code.)
+*/
+#if !defined(luai_likely)
+
+#if defined(__GNUC__) && !defined(LUA_NOBUILTIN)
+#define luai_likely(x) (__builtin_expect(((x) != 0), 1))
+#define luai_unlikely(x) (__builtin_expect(((x) != 0), 0))
+#else
+#define luai_likely(x) (x)
+#define luai_unlikely(x) (x)
+#endif
+
+#endif
+
+
+#if defined(LUA_CORE) || defined(LUA_LIB)
+/* shorter names for Lua's own use */
+#define l_likely(x) luai_likely(x)
+#define l_unlikely(x) luai_unlikely(x)
+#endif
+
+
+
+/* }================================================================== */
+
+
+/*
+** {==================================================================
+** Language Variations
+** =====================================================================
+*/
+
+/*
+@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some
+** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from
+** numbers to strings. Define LUA_NOCVTS2N to turn off automatic
+** coercion from strings to numbers.
+*/
+/* #define LUA_NOCVTN2S */
+/* #define LUA_NOCVTS2N */
+
+
+/*
+@@ LUA_USE_APICHECK turns on several consistency checks on the C API.
+** Define it as a help when debugging C code.
+*/
+#if defined(LUA_USE_APICHECK)
+#include <assert.h>
+#define luai_apicheck(l,e) assert(e)
+#endif
+
+/* }================================================================== */
+
+
+/*
+** {==================================================================
+** Macros that affect the API and must be stable (that is, must be the
+** same when you compile Lua and when you compile code that links to
+** Lua).
+** =====================================================================
+*/
+
+/*
+@@ LUAI_MAXSTACK limits the size of the Lua stack.
+** CHANGE it if you need a different limit. This limit is arbitrary;
+** its only purpose is to stop Lua from consuming unlimited stack
+** space (and to reserve some numbers for pseudo-indices).
+** (It must fit into max(size_t)/32 and max(int)/2.)
+*/
+#if LUAI_IS32INT
+#define LUAI_MAXSTACK 1000000
+#else
+#define LUAI_MAXSTACK 15000
+#endif
+
+
+/*
+@@ LUA_EXTRASPACE defines the size of a raw memory area associated with
+** a Lua state with very fast access.
+** CHANGE it if you need a different size.
+*/
+#define LUA_EXTRASPACE (sizeof(void *))
+
+
+/*
+@@ LUA_IDSIZE gives the maximum size for the description of the source
+** of a function in debug information.
+** CHANGE it if you want a different size.
+*/
+#define LUA_IDSIZE 60
+
+
+/*
+@@ LUAL_BUFFERSIZE is the initial buffer size used by the lauxlib
+** buffer system.
+*/
+#ifdef _KERNEL
+#define LUAL_BUFFERSIZE 128
+#else
+#define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number)))
+#endif
+
+/* }================================================================== */
+
+
+/*
+@@ LUAI_MAXALIGN defines fields that, when used in a union, ensure
+** maximum alignment for the other items in that union.
+*/
+#ifndef _KERNEL
+#define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l
+#else /* _KERNEL */
+#define LUAI_MAXALIGN lua_Number n; void *s; lua_Integer i; long l
+#endif
+
+/* }================================================================== */
+
+
+
+
+
+/* =================================================================== */
+
+/*
+** Local configuration. You can use this space to add your redefinitions
+** without modifying the main part of the file.
+*/
+
+#ifdef __NetBSD__
+
+#define LUA_STRFTIMEOPTIONS "aAbBcCdDeFgGhHIjklmMnprRsStTuUvVwWxXyYzZ%"
+
+/* Integer types */
+#undef LUA_INTEGER
+#undef LUA_INTEGER_FRMLEN
+#undef LUA_UNSIGNED
+#undef LUA_MAXUNSIGNED
+#undef LUA_MAXINTEGER
+#undef LUA_MININTEGER
+
+#define LUA_INTEGER intmax_t
+#define LUA_INTEGER_FRMLEN "j"
+#define LUA_UNSIGNED uintmax_t
+#define LUA_MAXUNSIGNED UINTMAX_MAX
+#define LUA_MAXINTEGER INTMAX_MAX
+#define LUA_MININTEGER INTMAX_MIN
+
+/* Path */
+#undef LUA_ROOT
+#undef LUA_PATH_DEFAULT
+#undef LUA_CPATH_DEFAULT
+
+#define LUA_ROOT "/usr/"
+#define LUA_PATH_DEFAULT \
+ LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
+ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua"
+#define LUA_CPATH_DEFAULT \
+ LUA_CDIR"?.so;" LUA_CDIR"loadall.so"
+
+#ifndef _KERNEL
+
+#include <stdint.h>
+
+#else /* _KERNEL */
+
+#define LUA_NUMBER LUA_INTEGER
+#define LUA_NUMBER_FMT LUA_INTEGER_FMT
+
+#define l_mathlim(n) (0)
+#define l_randomizePivot() (~0)
+
+/* setjmp.h */
+#define LUAI_THROW(L,c) longjmp(&((c)->b))
+#define LUAI_TRY(L,c,a) if (setjmp(&((c)->b)) == 0) { a }
+#define luai_jmpbuf label_t
+
+/* time.h */
+#include <sys/time.h>
+#define time(p) (time_uptime)
+
+/* stdio.h */
+#define lua_writestring(s,l) printf("%s", (s))
+#define lua_writeline() printf("\n")
+
+/* string.h */
+#define strcoll strcmp
+
+/* stdlib.h */
+#define abort() panic("Lua has aborted!")
+
+#endif /* _KERNEL */
+
+#endif /* __NetBSD__ */
+
+#endif
\ No newline at end of file
lib/libc/include/generic-netbsd/lualib.h
@@ -0,0 +1,54 @@
+/* $NetBSD: lualib.h,v 1.7.10.1 2023/08/11 16:22:07 martin Exp $ */
+
+/*
+** Id: lualib.h
+** Lua standard libraries
+** See Copyright Notice in lua.h
+*/
+
+
+#ifndef lualib_h
+#define lualib_h
+
+#include "lua.h"
+
+
+/* version suffix for environment variable names */
+#define LUA_VERSUFFIX "_" LUA_VERSION_MAJOR "_" LUA_VERSION_MINOR
+
+
+LUAMOD_API int (luaopen_base) (lua_State *L);
+
+#define LUA_COLIBNAME "coroutine"
+LUAMOD_API int (luaopen_coroutine) (lua_State *L);
+
+#define LUA_TABLIBNAME "table"
+LUAMOD_API int (luaopen_table) (lua_State *L);
+
+#define LUA_IOLIBNAME "io"
+LUAMOD_API int (luaopen_io) (lua_State *L);
+
+#define LUA_OSLIBNAME "os"
+LUAMOD_API int (luaopen_os) (lua_State *L);
+
+#define LUA_STRLIBNAME "string"
+LUAMOD_API int (luaopen_string) (lua_State *L);
+
+#define LUA_UTF8LIBNAME "utf8"
+LUAMOD_API int (luaopen_utf8) (lua_State *L);
+
+#define LUA_MATHLIBNAME "math"
+LUAMOD_API int (luaopen_math) (lua_State *L);
+
+#define LUA_DBLIBNAME "debug"
+LUAMOD_API int (luaopen_debug) (lua_State *L);
+
+#define LUA_LOADLIBNAME "package"
+LUAMOD_API int (luaopen_package) (lua_State *L);
+
+
+/* open all previous libraries */
+LUALIB_API void (luaL_openlibs) (lua_State *L);
+
+
+#endif
\ No newline at end of file
lib/libc/include/generic-netbsd/soundcard.h
@@ -0,0 +1,664 @@
+/* $NetBSD: soundcard.h,v 1.34 2021/05/09 11:28:25 nia Exp $ */
+
+/*-
+ * Copyright (c) 1997, 2020 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Lennart Augustsson and Nia Alarie.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * WARNING! WARNING!
+ * This is an Open Sound System compatibility layer.
+ * Use the Native NetBSD API in <sys/audioio.h> for developing new code,
+ * and this only for compiling programs written for other operating systems.
+ */
+
+#ifndef _SOUNDCARD_H_
+#define _SOUNDCARD_H_
+
+#ifndef SOUND_VERSION
+#define SOUND_VERSION 0x030001
+#endif
+
+#define SNDCTL_DSP_RESET _IO ('P', 0)
+#define SNDCTL_DSP_SYNC _IO ('P', 1)
+#define SNDCTL_DSP_SPEED _IOWR('P', 2, int)
+#define SOUND_PCM_READ_RATE _IOR ('P', 2, int)
+#define SNDCTL_DSP_STEREO _IOWR('P', 3, int)
+#define SNDCTL_DSP_GETBLKSIZE _IOWR('P', 4, int)
+#define SNDCTL_DSP_SETFMT _IOWR('P', 5, int)
+#define AFMT_QUERY 0x00000000
+#define AFMT_MU_LAW 0x00000001
+#define AFMT_A_LAW 0x00000002
+#define AFMT_IMA_ADPCM 0x00000004
+#define AFMT_U8 0x00000008
+#define AFMT_S16_LE 0x00000010
+#define AFMT_S16_BE 0x00000020
+#define AFMT_S8 0x00000040
+#define AFMT_U16_LE 0x00000080
+#define AFMT_U16_BE 0x00000100
+#define AFMT_MPEG 0x00000200 /* Not supported */
+#define AFMT_AC3 0x00000400
+#define AFMT_S24_LE 0x00000800 /* Not supported */
+#define AFMT_S24_BE 0x00001000 /* Not supported */
+#define AFMT_S32_LE 0x00002000
+#define AFMT_S32_BE 0x00004000
+#define AFMT_FLOAT 0x00010000 /* Not supported */
+#define AFMT_SPDIF_RAW 0x00020000 /* Not supported */
+#define AFMT_S24_PACKED 0x00040000 /* Not supported */
+#define AFMT_VORBIS 0x00080000 /* Not supported */
+#define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
+#define SOUND_PCM_READ_BITS _IOR ('P', 5, int)
+#define SNDCTL_DSP_CHANNELS _IOWR('P', 6, int)
+#define SOUND_PCM_WRITE_CHANNELS SNDCTL_DSP_CHANNELS
+#define SOUND_PCM_READ_CHANNELS _IOR ('P', 6, int)
+#define SOUND_PCM_WRITE_FILTER _IOWR('P', 7, int)
+#define SOUND_PCM_READ_FILTER _IOR ('P', 7, int)
+#define SNDCTL_DSP_POST _IO ('P', 8)
+#define SNDCTL_DSP_SUBDIVIDE _IOWR('P', 9, int)
+#define SNDCTL_DSP_SETFRAGMENT _IOWR('P', 10, int)
+#define SNDCTL_DSP_GETFMTS _IOR ('P', 11, int)
+#define SNDCTL_DSP_GETOSPACE _IOR ('P',12, struct audio_buf_info)
+#define SNDCTL_DSP_GETISPACE _IOR ('P',13, struct audio_buf_info)
+#define SNDCTL_DSP_NONBLOCK _IO ('P',14)
+#define SNDCTL_DSP_GETCAPS _IOR ('P',15, int)
+/* PCM_CAP_* were known as DSP_CAP_ before OSS 4.0 */
+# define DSP_CAP_REVISION PCM_CAP_REVISION
+# define DSP_CAP_DUPLEX PCM_CAP_DUPLEX
+# define DSP_CAP_REALTIME PCM_CAP_REALTIME
+# define DSP_CAP_BATCH PCM_CAP_BATCH
+# define DSP_CAP_COPROC PCM_CAP_COPROC
+# define DSP_CAP_TRIGGER PCM_CAP_TRIGGER
+# define DSP_CAP_MMAP PCM_CAP_MMAP
+# define DSP_CAP_INPUT PCM_CAP_INPUT
+# define DSP_CAP_OUTPUT PCM_CAP_OUTPUT
+# define DSP_CAP_MODEM PCM_CAP_MODEM
+# define DSP_CAP_HIDDEN PCM_CAP_HIDDEN
+# define DSP_CAP_VIRTUAL PCM_CAP_VIRTUAL
+# define DSP_CAP_ANALOGOUT PCM_CAP_ANALOGOUT
+# define DSP_CAP_ANALOGIN PCM_CAP_ANALOGIN
+# define DSP_CAP_DIGITALOUT PCM_CAP_DIGITALOUT
+# define DSP_CAP_DIGITALIN PCM_CAP_DIGITALIN
+# define DSP_CAP_ADMASK PCM_CAP_ADMASK
+# define DSP_CAP_FREERATE PCM_CAP_FREERATE
+# define DSP_CAP_MULTI PCM_CAP_MULTI
+# define DSP_CAP_BIND PCM_CAP_BIND
+# define DSP_CAP_SHADOW PCM_CAP_SHADOW
+# define PCM_CAP_REVISION 0x000000ff /* Unused in NetBSD */
+# define PCM_CAP_DUPLEX 0x00000100 /* Full duplex */
+# define PCM_CAP_REALTIME 0x00000200 /* Unused in NetBSD */
+# define PCM_CAP_BATCH 0x00000400 /* Unused in NetBSD */
+# define PCM_CAP_COPROC 0x00000800 /* Unused in NetBSD */
+# define PCM_CAP_TRIGGER 0x00001000 /* Supports SETTRIGGER */
+# define PCM_CAP_MMAP 0x00002000 /* Supports mmap() */
+# define PCM_CAP_INPUT 0x00004000 /* Recording device */
+# define PCM_CAP_OUTPUT 0x00008000 /* Playback device */
+# define PCM_CAP_MODEM 0x00010000 /* Unused in NetBSD */
+# define PCM_CAP_HIDDEN 0x00020000 /* Unused in NetBSD */
+# define PCM_CAP_VIRTUAL 0x00040000 /* Unused in NetBSD */
+# define PCM_CAP_MULTI 0x00080000 /* Simultaneous open() */
+# define PCM_CAP_ANALOGOUT 0x00100000 /* Unused in NetBSD */
+# define PCM_CAP_ANALOGIN 0x00200000 /* Unused in NetBSD */
+# define PCM_CAP_DIGITALOUT 0x00400000 /* Unused in NetBSD */
+# define PCM_CAP_DIGITALIN 0x00800000 /* Unused in NetBSD */
+# define PCM_CAP_ADMASK 0x00f00000 /* Unused in NetBSD */
+# define PCM_CAP_SPECIAL 0x01000000 /* Unused in NetBSD */
+# define PCM_CAP_FREERATE 0x10000000 /* Freely set rate */
+# define PCM_CAP_SHADOW 0x40000000 /* Unused in NetBSD */
+# define PCM_CAP_BIND 0x80000000 /* Unused in NetBSD */
+# define DSP_CH_ANY 0x00000000 /* No preferred mode */
+# define DSP_CH_MONO 0x02000000
+# define DSP_CH_STEREO 0x04000000
+# define DSP_CH_MULTI 0x06000000
+# define DSP_CH_MASK 0x06000000
+#define SNDCTL_DSP_GETTRIGGER _IOR ('P', 16, int)
+#define SNDCTL_DSP_SETTRIGGER _IOW ('P', 16, int)
+# define PCM_ENABLE_INPUT 0x00000001
+# define PCM_ENABLE_OUTPUT 0x00000002
+#define SNDCTL_DSP_GETIPTR _IOR ('P', 17, struct count_info)
+#define SNDCTL_DSP_GETOPTR _IOR ('P', 18, struct count_info)
+#define SNDCTL_DSP_MAPINBUF _IOR ('P', 19, struct buffmem_desc)
+#define SNDCTL_DSP_MAPOUTBUF _IOR ('P', 20, struct buffmem_desc)
+#define SNDCTL_DSP_SETSYNCRO _IO ('P', 21)
+#define SNDCTL_DSP_SETDUPLEX _IO ('P', 22)
+#define SNDCTL_DSP_PROFILE _IOW ('P', 23, int)
+#define SNDCTL_DSP_GETODELAY _IOR ('P', 23, int)
+#define APF_NORMAL 0
+#define APF_NETWORK 1
+#define APF_CPUINTENS 2
+
+/* Need native 16 bit format which depends on byte order */
+#include <machine/endian_machdep.h>
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+#define AFMT_U16_NE AFMT_U16_LE
+#define AFMT_U16_OE AFMT_U16_BE
+#define AFMT_S16_NE AFMT_S16_LE
+#define AFMT_S16_OE AFMT_S16_BE
+#define AFMT_S24_NE AFMT_S24_LE
+#define AFMT_S24_OE AFMT_S24_BE
+#define AFMT_S32_NE AFMT_S32_LE
+#define AFMT_S32_OE AFMT_S32_BE
+#else
+#define AFMT_U16_NE AFMT_U16_BE
+#define AFMT_U16_OE AFMT_U16_LE
+#define AFMT_S16_NE AFMT_S16_BE
+#define AFMT_S16_OE AFMT_S16_LE
+#define AFMT_S24_NE AFMT_S24_BE
+#define AFMT_S24_OE AFMT_S24_LE
+#define AFMT_S32_NE AFMT_S32_BE
+#define AFMT_S32_OE AFMT_S32_LE
+#endif
+
+/* Aliases */
+#define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SETFMT
+#define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
+#define SOUND_PCM_POST SNDCTL_DSP_POST
+#define SOUND_PCM_RESET SNDCTL_DSP_RESET
+#define SOUND_PCM_SYNC SNDCTL_DSP_SYNC
+#define SOUND_PCM_SUBDIVIDE SNDCTL_DSP_SUBDIVIDE
+#define SOUND_PCM_SETFRAGMENT SNDCTL_DSP_SETFRAGMENT
+#define SOUND_PCM_GETFMTS SNDCTL_DSP_GETFMTS
+#define SOUND_PCM_SETFMT SNDCTL_DSP_SETFMT
+#define SOUND_PCM_GETOSPACE SNDCTL_DSP_GETOSPACE
+#define SOUND_PCM_GETISPACE SNDCTL_DSP_GETISPACE
+#define SOUND_PCM_NONBLOCK SNDCTL_DSP_NONBLOCK
+#define SOUND_PCM_GETCAPS SNDCTL_DSP_GETCAPS
+#define SOUND_PCM_GETTRIGGER SNDCTL_DSP_GETTRIGGER
+#define SOUND_PCM_SETTRIGGER SNDCTL_DSP_SETTRIGGER
+#define SOUND_PCM_SETSYNCRO SNDCTL_DSP_SETSYNCRO
+#define SOUND_PCM_GETIPTR SNDCTL_DSP_GETIPTR
+#define SOUND_PCM_GETOPTR SNDCTL_DSP_GETOPTR
+#define SOUND_PCM_MAPINBUF SNDCTL_DSP_MAPINBUF
+#define SOUND_PCM_MAPOUTBUF SNDCTL_DSP_MAPOUTBUF
+
+/* Mixer defines */
+#define SOUND_MIXER_FIRST 0
+#define SOUND_MIXER_NRDEVICES 25
+
+#define SOUND_MIXER_VOLUME 0
+#define SOUND_MIXER_BASS 1
+#define SOUND_MIXER_TREBLE 2
+#define SOUND_MIXER_SYNTH 3
+#define SOUND_MIXER_PCM 4
+#define SOUND_MIXER_SPEAKER 5
+#define SOUND_MIXER_LINE 6
+#define SOUND_MIXER_MIC 7
+#define SOUND_MIXER_CD 8
+#define SOUND_MIXER_IMIX 9
+#define SOUND_MIXER_ALTPCM 10
+#define SOUND_MIXER_RECLEV 11
+#define SOUND_MIXER_IGAIN 12
+#define SOUND_MIXER_OGAIN 13
+#define SOUND_MIXER_LINE1 14
+#define SOUND_MIXER_LINE2 15
+#define SOUND_MIXER_LINE3 16
+#define SOUND_MIXER_DIGITAL1 17
+#define SOUND_MIXER_DIGITAL2 18
+#define SOUND_MIXER_DIGITAL3 19
+#define SOUND_MIXER_PHONEIN 20
+#define SOUND_MIXER_PHONEOUT 21
+#define SOUND_MIXER_VIDEO 22
+#define SOUND_MIXER_RADIO 23
+#define SOUND_MIXER_MONITOR 24
+
+#define SOUND_ONOFF_MIN 28
+#define SOUND_ONOFF_MAX 30
+
+#define SOUND_MIXER_NONE 31
+
+#define SOUND_DEVICE_LABELS {"Vol ", "Bass ", "Trebl", "Synth", "Pcm ", "Spkr ", "Line ", \
+ "Mic ", "CD ", "Mix ", "Pcm2 ", "Rec ", "IGain", "OGain", \
+ "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", \
+ "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor"}
+
+#define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \
+ "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", \
+ "line1", "line2", "line3", "dig1", "dig2", "dig3", \
+ "phin", "phout", "video", "radio", "monitor"}
+
+#define SOUND_MIXER_RECSRC 0xff
+#define SOUND_MIXER_DEVMASK 0xfe
+#define SOUND_MIXER_RECMASK 0xfd
+#define SOUND_MIXER_CAPS 0xfc
+#define SOUND_CAP_EXCL_INPUT 1
+#define SOUND_MIXER_STEREODEVS 0xfb
+
+#define MIXER_READ(dev) _IOR('M', dev, int)
+
+#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
+#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
+#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
+#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
+#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
+
+#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
+#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
+#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
+#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
+#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
+#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
+
+#define MIXER_WRITE(dev) _IOW ('M', dev, int)
+#define MIXER_WRITE_R(dev) _IOWR('M', dev, int)
+
+#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
+#define SOUND_MIXER_WRITE_R_RECSRC MIXER_WRITE_R(SOUND_MIXER_RECSRC)
+
+#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
+#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
+#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
+#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
+#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
+#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
+
+#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
+#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
+#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
+#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
+#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
+#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
+#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
+#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
+#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
+#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
+#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
+#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
+#define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
+#define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
+#define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
+#define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
+#define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
+#define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
+#define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
+#define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
+#define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)
+#define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)
+#define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
+#define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
+#define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)
+
+typedef struct mixer_info {
+ char id[16];
+ char name[32];
+ int modify_counter;
+ int fillers[10];
+} mixer_info;
+
+typedef struct _old_mixer_info {
+ char id[16];
+ char name[32];
+} _old_mixer_info;
+
+#define SOUND_MIXER_INFO _IOR('M', 101, mixer_info)
+#define SOUND_OLD_MIXER_INFO _IOR('M', 101, _old_mixer_info)
+
+#define OSS_GETVERSION _IOR ('M', 118, int)
+
+typedef struct audio_buf_info {
+ int fragments;
+ int fragstotal;
+ int fragsize;
+ int bytes;
+} audio_buf_info;
+
+typedef struct count_info {
+ int bytes;
+ int blocks;
+ int ptr;
+} count_info;
+
+typedef struct buffmem_desc {
+ unsigned int *buffer;
+ int size;
+} buffmem_desc;
+
+/* Some OSSv4 calls. */
+
+/* Why is yet more duplication necessary? Sigh. */
+#define OSS_OPEN_READ PCM_ENABLE_INPUT
+#define OSS_OPEN_WRITE PCM_ENABLE_OUTPUT
+#define OSS_OPEN_READWRITE (OSS_OPEN_READ|OSS_OPEN_WRITE)
+
+#define OSS_DEVNODE_SIZE 32
+#define OSS_LABEL_SIZE 16
+#define OSS_LONGNAME_SIZE 64
+#define OSS_MAX_AUDIO_DEVS 64
+
+#define SNDCTL_DSP_GETPLAYVOL _IOR ('P',27, uint)
+#define SNDCTL_DSP_SETPLAYVOL _IOW ('P',28, uint)
+#define SNDCTL_DSP_GETRECVOL _IOR ('P',29, uint)
+#define SNDCTL_DSP_SETRECVOL _IOW ('P',30, uint)
+#define SNDCTL_DSP_SKIP _IO ('P',31)
+#define SNDCTL_DSP_SILENCE _IO ('P',32)
+#define SNDCTL_DSP_COOKEDMODE _IOW ('P',33, int)
+#define SNDCTL_DSP_GETERROR _IOR ('P',34, struct audio_errinfo)
+#define SNDCTL_DSP_CURRENT_IPTR _IOR ('P',35, oss_count_t)
+#define SNDCTL_DSP_CURRENT_OPTR _IOR ('P',36, oss_count_t)
+#define SNDCTL_DSP_GET_RECSRC_NAMES _IOR ('P',37, oss_mixer_enuminfo)
+#define SNDCTL_DSP_GET_RECSRC _IOR ('P',38, int)
+#define SNDCTL_DSP_SET_RECSRC _IOWR ('P',38, int)
+#define SNDCTL_DSP_GET_PLAYTGT_NAMES _IOR ('P',39, oss_mixer_enuminfo)
+#define SNDCTL_DSP_GET_PLAYTGT _IOR ('P',40, int)
+#define SNDCTL_DSP_SET_PLAYTGT _IOWR ('P',40, int)
+
+#define SNDCTL_DSP_GET_CHNORDER _IOR ('P',42, unsigned long long)
+#define SNDCTL_DSP_SET_CHNORDER _IOWR ('P',42, unsigned long long)
+
+#define SNDCTL_DSP_HALT_OUTPUT _IO ('P',70)
+#define SNDCTL_DSP_RESET_OUTPUT SNDCTL_DSP_HALT_OUTPUT /* Old name */
+#define SNDCTL_DSP_HALT_INPUT _IO ('P',71)
+#define SNDCTL_DSP_RESET_INPUT SNDCTL_DSP_HALT_INPUT /* Old name */
+
+#define CHID_UNDEF 0
+#define CHID_L 1
+#define CHID_R 2
+#define CHID_C 3
+#define CHID_LFE 4
+#define CHID_LS 5
+#define CHID_RS 6
+#define CHID_LR 7
+#define CHID_RR 8
+#define CHNORDER_UNDEF 0x0000000000000000ULL
+#define CHNORDER_NORMAL 0x0000000087654321ULL
+
+typedef struct {
+ long long samples;
+ int fifo_samples;
+ int filler[32]; /* "Future use" */
+} oss_count_t;
+
+typedef struct audio_errinfo {
+ int play_underruns;
+ int rec_overruns;
+ unsigned int play_ptradjust; /* Obsolete */
+ unsigned int rec_ptradjust; /* Obsolete */
+ int play_errorcount; /* Unused */
+ int rec_errorcount; /* Unused */
+ int play_lasterror; /* Unused */
+ int rec_lasterror; /* Unused */
+ int play_errorparm; /* Unused */
+ int rec_errorparm; /* Unused */
+ int filler[16]; /* Unused */
+} audio_errinfo;
+
+typedef struct oss_sysinfo {
+ char product[32];
+ char version[32];
+ int versionnum;
+ char options[128]; /* Future use */
+ int numaudios;
+ int openedaudio[8]; /* Obsolete */
+ int numsynths; /* Obsolete */
+ int nummidis;
+ int numtimers;
+ int nummixers;
+ int openedmidi[8];
+ int numcards;
+ int numaudioengines;
+ char license[16];
+ char revision_info[256]; /* Internal Use */
+ int filler[172]; /* For expansion */
+} oss_sysinfo;
+
+typedef struct oss_audioinfo {
+ int dev; /* Set by caller */
+ char name[OSS_LONGNAME_SIZE];
+ int busy;
+ int pid;
+ int caps;
+ int iformats;
+ int oformats;
+ int magic; /* Unused */
+ char cmd[OSS_LONGNAME_SIZE];
+ int card_number;
+ int port_number;
+ int mixer_dev;
+ int legacy_device; /* Obsolete */
+ int enabled;
+ int flags; /* Reserved */
+ int min_rate;
+ int max_rate;
+ int min_channels;
+ int max_channels;
+ int binding; /* Reserved */
+ int rate_source;
+ char handle[32];
+#define OSS_MAX_SAMPLE_RATES 20
+ int nrates;
+ int rates[OSS_MAX_SAMPLE_RATES];
+ char song_name[OSS_LONGNAME_SIZE];
+ char label[OSS_LABEL_SIZE];
+ int latency; /* In usecs -1 = unknown */
+ char devnode[OSS_DEVNODE_SIZE];
+ int next_play_engine;
+ int next_rec_engine;
+ int filler[184]; /* For expansion */
+} oss_audioinfo;
+
+typedef struct oss_card_info {
+ int card;
+ char shortname[16];
+ char longname[128];
+ int flags;
+ char hw_info[400];
+ int intr_count;
+ int ack_count;
+ int filler[154];
+} oss_card_info;
+
+#define SNDCTL_SYSINFO _IOR ('X', 1, oss_sysinfo)
+#define OSS_SYSINFO SNDCTL_SYSINFO /* Old name */
+#define SNDCTL_MIX_NRMIX _IOR ('X',2, int)
+#define SNDCTL_MIX_NREXT _IOWR ('X',3, int)
+#define SNDCTL_MIX_EXTINFO _IOWR ('X',4, oss_mixext)
+#define SNDCTL_MIX_READ _IOWR ('X',5, oss_mixer_value)
+#define SNDCTL_MIX_WRITE _IOWR ('X',6, oss_mixer_value)
+#define SNDCTL_AUDIOINFO _IOWR ('X',7, oss_audioinfo)
+#define SNDCTL_MIX_ENUMINFO _IOWR ('X',8, oss_mixer_enuminfo)
+#define SNDCTL_MIXERINFO _IOWR ('X',10, oss_mixerinfo)
+#define SNDCTL_CARDINFO _IOWR ('X',11, oss_card_info)
+#define SNDCTL_ENGINEINFO _IOWR ('X',12, oss_audioinfo)
+#define SNDCTL_AUDIOINFO_EX _IOWR ('X',13, oss_audioinfo)
+#define SNDCTL_MIX_DESCRIPTION _IOWR ('X',14, oss_mixer_enuminfo)
+
+#define MIXT_DEVROOT 0 /* Used for default classes */
+#define MIXT_GROUP 1 /* Used for classes */
+#define MIXT_ONOFF 2 /* Used for mute controls */
+#define MIXT_ENUM 3 /* Used for enum controls */
+#define MIXT_MONOSLIDER 4 /* Used for mono and surround controls */
+#define MIXT_STEREOSLIDER 5 /* Used for stereo controls */
+#define MIXT_MESSAGE 6 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOVU 7 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOVU 8 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOPEAK 9 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOPEAK 10 /* OSS compat, unused on NetBSD */
+#define MIXT_RADIOGROUP 11 /* OSS compat, unused on NetBSD */
+#define MIXT_MARKER 12 /* OSS compat, unused on NetBSD */
+#define MIXT_VALUE 13 /* OSS compat, unused on NetBSD */
+#define MIXT_HEXVALUE 14 /* OSS compat, unused on NetBSD */
+#define MIXT_MONODB 15 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREODB 16 /* OSS compat, unused on NetBSD */
+#define MIXT_SLIDER 17 /* OSS compat, unused on NetBSD */
+#define MIXT_3D 18 /* OSS compat, unused on NetBSD */
+#define MIXT_MONOSLIDER16 19 /* OSS compat, unused on NetBSD */
+#define MIXT_STEREOSLIDER16 20 /* OSS compat, unused on NetBSD */
+#define MIXT_MUTE 21 /* OSS compat, unused on NetBSD */
+/*
+ * Should be used for Set controls.
+ * In practice nothing uses this because it's "reserved for Sun's
+ * implementation".
+ */
+#define MIXT_ENUM_MULTI 22
+
+#define MIXF_READABLE 0x00000001 /* Value is readable: always true */
+#define MIXF_WRITEABLE 0x00000002 /* Value is writable: always true */
+#define MIXF_POLL 0x00000004 /* Can change between reads: always true */
+#define MIXF_HZ 0x00000008 /* OSS compat, unused on NetBSD */
+#define MIXF_STRING 0x00000010 /* OSS compat, unused on NetBSD */
+#define MIXF_DYNAMIC 0x00000010 /* OSS compat, unused on NetBSD */
+#define MIXF_OKFAIL 0x00000020 /* OSS compat, unused on NetBSD */
+#define MIXF_FLAT 0x00000040 /* OSS compat, unused on NetBSD */
+#define MIXF_LEGACY 0x00000080 /* OSS compat, unused on NetBSD */
+#define MIXF_CENTIBEL 0x00000100 /* OSS compat, unused on NetBSD */
+#define MIXF_DECIBEL 0x00000200 /* OSS compat, unused on NetBSD */
+#define MIXF_MAINVOL 0x00000400 /* OSS compat, unused on NetBSD */
+#define MIXF_PCMVOL 0x00000800 /* OSS compat, unused on NetBSD */
+#define MIXF_RECVOL 0x00001000 /* OSS compat, unused on NetBSD */
+#define MIXF_MONVOL 0x00002000 /* OSS compat, unused on NetBSD */
+#define MIXF_WIDE 0x00004000 /* OSS compat, unused on NetBSD */
+#define MIXF_DESCR 0x00008000 /* OSS compat, unused on NetBSD */
+#define MIXF_DISABLED 0x00010000 /* OSS compat, unused on NetBSD */
+
+/* None of the mixer capabilities are set on NetBSD. */
+#define MIXER_CAP_VIRTUAL 0x00000001 /* Virtual device */
+#define MIXER_CAP_LAYOUT_B 0x00000002 /* "Internal use only" */
+#define MIXER_CAP_NARROW 0x00000004 /* "Conserve screen space" */
+
+#define OSS_ID_SIZE 16
+typedef char oss_id_t[OSS_ID_SIZE];
+#define OSS_DEVNODE_SIZE 32
+typedef char oss_devnode_t[OSS_DEVNODE_SIZE];
+#define OSS_HANDLE_SIZE 32
+typedef char oss_handle_t[OSS_HANDLE_SIZE];
+#define OSS_LONGNAME_SIZE 64
+typedef char oss_longname_t[OSS_LONGNAME_SIZE];
+#define OSS_LABEL_SIZE 16
+typedef char oss_label_t[OSS_LABEL_SIZE];
+
+typedef struct oss_mixext_root {
+ oss_id_t id;
+ char name[48];
+} oss_mixext_root;
+
+typedef struct oss_mixerinfo {
+ int dev;
+ oss_id_t id;
+ char name[32];
+ int modify_counter;
+ int card_number;
+ int port_number;
+ oss_handle_t handle;
+ int magic; /* "Reserved for internal use" */
+ int enabled;
+ int caps;
+ int flags; /* "Reserved for internal use" */
+ int nrext;
+ int priority;
+ oss_devnode_t devnode;
+ int legacy_device;
+ int filler[245];
+} oss_mixerinfo;
+
+typedef struct oss_mixer_value {
+ int dev; /* Set by caller */
+ int ctrl; /* Set by caller */
+ int value;
+ int flags; /* Reserved for "future use" */
+ int timestamp;
+ int filler[8]; /* Reserved for "future use" */
+} oss_mixer_value;
+
+#define OSS_ENUM_MAXVALUE 255
+#define OSS_ENUM_STRINGSIZE 3000
+
+typedef struct oss_mixer_enuminfo {
+ int dev; /* Set by caller */
+ int ctrl; /* Set by caller */
+ int nvalues;
+ int version;
+ short strindex[OSS_ENUM_MAXVALUE];
+ char strings[OSS_ENUM_STRINGSIZE];
+} oss_mixer_enuminfo;
+
+typedef struct oss_mixext {
+ int dev;
+ int ctrl;
+ int type;
+ int maxvalue;
+ int minvalue;
+ int flags;
+ oss_id_t id;
+ int parent;
+ int dummy;
+ int timestamp;
+ char data[64];
+ unsigned char enum_present[32];
+ int control_no;
+ unsigned int desc;
+ char extname[32];
+ int update_counter;
+ int rgbcolor;
+ int filler[6];
+} oss_mixext;
+
+
+/*
+ * These are no-ops on FreeBSD, NetBSD, and Solaris,
+ * but are defined for compatibility with OSSv4.
+ */
+#define SNDCTL_SETSONG _IOW ('Y',2, oss_longname_t)
+#define SNDCTL_GETSONG _IOR ('Y',2, oss_longname_t)
+#define SNDCTL_SETNAME _IOW ('Y',3, oss_longname_t)
+#define SNDCTL_SETLABEL _IOW ('Y',4, oss_label_t)
+#define SNDCTL_GETLABEL _IOR ('Y',4, oss_label_t)
+
+#define ioctl _oss_ioctl
+/*
+ * If we already included <sys/ioctl.h>, then we define our own prototype,
+ * else we depend on <sys/ioctl.h> to do it for us. We do it this way, so
+ * that we don't define the prototype twice.
+ */
+#ifndef _SYS_IOCTL_H_
+#include <sys/ioctl.h>
+#else
+__BEGIN_DECLS
+int _oss_ioctl(int, unsigned long, ...);
+__END_DECLS
+#endif
+
+#endif /* !_SOUNDCARD_H_ */
\ No newline at end of file
lib/libc/include/powerpc-netbsd-eabi/machine/bswap.h
@@ -0,0 +1,3 @@
+/* $NetBSD: bswap.h,v 1.1 2002/12/09 12:15:58 scw Exp $ */
+
+#include <powerpc/bswap.h>
\ No newline at end of file
lib/libc/include/powerpc-netbsd-eabi/machine/endian_machdep.h
@@ -0,0 +1,3 @@
+/* $NetBSD: endian_machdep.h,v 1.1 2002/12/09 12:16:02 scw Exp $ */
+
+#include <powerpc/endian_machdep.h>
\ No newline at end of file
lib/libc/include/powerpc-netbsd-eabi/machine/rwlock.h
@@ -0,0 +1,3 @@
+/* $NetBSD: rwlock.h,v 1.2 2007/02/09 21:55:03 ad Exp $ */
+
+#include <powerpc/rwlock.h>
\ No newline at end of file
lib/libc/include/sparc-netbsd-none/machine/bswap.h
@@ -1,8 +0,0 @@
-/* $NetBSD: bswap.h,v 1.2 1999/08/21 05:39:55 simonb Exp $ */
-
-#ifndef _MACHINE_BSWAP_H_
-#define _MACHINE_BSWAP_H_
-
-#include <sys/bswap.h>
-
-#endif /* !_MACHINE_BSWAP_H_ */
\ No newline at end of file
lib/libc/include/sparc-netbsd-none/machine/endian_machdep.h
@@ -1,3 +0,0 @@
-/* $NetBSD: endian_machdep.h,v 1.1 2000/03/17 00:09:25 mycroft Exp $ */
-
-#define _BYTE_ORDER _BIG_ENDIAN
\ No newline at end of file
lib/libc/include/sparc-netbsd-none/machine/rwlock.h
@@ -1,1 +0,0 @@
-/* $NetBSD: rwlock.h,v 1.6 2019/11/29 20:04:53 riastradh Exp $ */
\ No newline at end of file
lib/libc/include/sparc64-netbsd-none/machine/bswap.h
@@ -1,8 +0,0 @@
-/* $NetBSD: bswap.h,v 1.2 1999/08/21 05:39:55 simonb Exp $ */
-
-#ifndef _MACHINE_BSWAP_H_
-#define _MACHINE_BSWAP_H_
-
-#include <sys/bswap.h>
-
-#endif /* !_MACHINE_BSWAP_H_ */
\ No newline at end of file
lib/libc/include/sparc64-netbsd-none/machine/endian_machdep.h
@@ -1,3 +0,0 @@
-/* $NetBSD: endian_machdep.h,v 1.1 2000/03/17 00:09:25 mycroft Exp $ */
-
-#define _BYTE_ORDER _BIG_ENDIAN
\ No newline at end of file
lib/libc/include/sparc64-netbsd-none/machine/rwlock.h
@@ -1,1 +0,0 @@
-/* $NetBSD: rwlock.h,v 1.6 2019/11/29 20:04:53 riastradh Exp $ */
\ No newline at end of file