From 372b901dfeada686207d00bbcce456f748bbda12 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 28 Aug 2021 09:11:57 -0500 Subject: [PATCH] riscv: cleanup architecture macro checks * We really should get out of the habbit of making up our own architecture defines. * __riscv with an additional __riscv_xlen is the standard that developed... let's just roll with it. Change-Id: Ieb777d48340ae25a6d66f66133afa0ec5c6da9b6 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4402 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- headers/config/HaikuConfig.h | 12 +++++++++++- headers/os/kernel/debugger.h | 2 +- headers/posix/fenv.h | 2 +- headers/private/kernel/arch/riscv64/arch_kernel.h | 4 ++-- src/libs/compat/freebsd_network/compat/sys/param.h | 5 +++-- src/system/libroot/posix/stdlib/strtod.c | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/headers/config/HaikuConfig.h b/headers/config/HaikuConfig.h index f02efdeeff..eecbda7dd0 100644 --- a/headers/config/HaikuConfig.h +++ b/headers/config/HaikuConfig.h @@ -61,11 +61,21 @@ # define __HAIKU_ARCH_ABI "arm64" # define __HAIKU_ARCH_ARM64 1 # define __HAIKU_ARCH_BITS 64 -#elif defined(__riscv64__) || (defined(__riscv) && __riscv_xlen == 64) +#elif (defined(__riscv) && __riscv_xlen == 32) +# define __HAIKU_ARCH riscv32 +# define __HAIKU_ARCH_ABI "riscv32" +# define __HAIKU_ARCH_RISCV32 1 +# define __HAIKU_ARCH_BITS 32 +#elif (defined(__riscv) && __riscv_xlen == 64) # define __HAIKU_ARCH riscv64 # define __HAIKU_ARCH_ABI "riscv64" # define __HAIKU_ARCH_RISCV64 1 # define __HAIKU_ARCH_BITS 64 +#elif (defined(__riscv) && __riscv_xlen == 128) +# define __HAIKU_ARCH riscv128 +# define __HAIKU_ARCH_ABI "riscv128" +# define __HAIKU_ARCH_RISCV128 1 +# define __HAIKU_ARCH_BITS 128 #elif defined(__sparc64__) # define __HAIKU_ARCH sparc64 # define __HAIKU_ARCH_ABI "sparc" diff --git a/headers/os/kernel/debugger.h b/headers/os/kernel/debugger.h index 3a7103b946..ea23c64f06 100644 --- a/headers/os/kernel/debugger.h +++ b/headers/os/kernel/debugger.h @@ -35,7 +35,7 @@ typedef struct mipsel_debug_cpu_state debug_cpu_state; #elif defined(__arm__) typedef struct arm_debug_cpu_state debug_cpu_state; -#elif defined(__RISCV__) || defined(__riscv64__) +#elif (defined(__riscv) && __riscv_xlen == 64) typedef struct riscv64_debug_cpu_state debug_cpu_state; #elif defined(__sparc64__) typedef struct sparc_debug_cpu_state debug_cpu_state; diff --git a/headers/posix/fenv.h b/headers/posix/fenv.h index edf44d0a96..c71547f2e4 100644 --- a/headers/posix/fenv.h +++ b/headers/posix/fenv.h @@ -11,7 +11,7 @@ # include #elif defined(__POWERPC__) # include -#elif defined(__riscv64__) +#elif (defined(__riscv) && __riscv_xlen == 64) # include #elif defined(__sparc__) # include diff --git a/headers/private/kernel/arch/riscv64/arch_kernel.h b/headers/private/kernel/arch/riscv64/arch_kernel.h index 8d4639675b..914301de87 100644 --- a/headers/private/kernel/arch/riscv64/arch_kernel.h +++ b/headers/private/kernel/arch/riscv64/arch_kernel.h @@ -18,7 +18,7 @@ #define KERNEL_LOAD_BASE_64_BIT 0xffffffc000000000 -#if defined(__riscv64__) +#if (defined(__riscv) && __riscv_xlen == 64) // Base of the kernel address space. #define KERNEL_BASE 0xffffffc000000000 @@ -35,7 +35,7 @@ #define USER_STACK_REGION (USER_BASE + 0x3000000000) #define USER_STACK_REGION_SIZE ((USER_TOP - USER_STACK_REGION) + 1) -#else /* ! __riscv64__ */ +#else /* ! riscv64 */ #warning Unknown RISC-V Architecture! #endif diff --git a/src/libs/compat/freebsd_network/compat/sys/param.h b/src/libs/compat/freebsd_network/compat/sys/param.h index 3adcb4c66f..397a93f443 100644 --- a/src/libs/compat/freebsd_network/compat/sys/param.h +++ b/src/libs/compat/freebsd_network/compat/sys/param.h @@ -53,7 +53,8 @@ #define ALIGNED_POINTER(p, t) ((((uintptr_t)(p)) & (sizeof (t) - 1)) == 0) #elif defined(__arm__) #define ALIGNED_POINTER(p, t) ((((unsigned)(p)) & (sizeof(t) - 1)) == 0) -#elif defined(__mips__) || defined(__sparc__) || defined(__riscv64__) \ +#elif defined(__mips__) || defined(__sparc__) \ + || (defined(__riscv) && __riscv_xlen == 64) \ || defined(__aarch64__) || defined(__arm64__) #define ALIGNED_POINTER(p, t) ((((unsigned long)(p)) & (sizeof (t) - 1)) == 0) #else @@ -62,7 +63,7 @@ /* defined in arch_cpu.h which we can't include here as it's C++ */ #if defined(__x86_64__) || defined(__i386__) || defined(__arm__) \ - || defined(__sparc__) || defined(__riscv64__) \ + || defined(__sparc__) || defined(__riscv) \ || defined(__aarch64__) || defined(__arm64__) #define CACHE_LINE_SIZE 64 #elif defined(__powerpc__) diff --git a/src/system/libroot/posix/stdlib/strtod.c b/src/system/libroot/posix/stdlib/strtod.c index 1f4d0d0e13..0701de36ae 100644 --- a/src/system/libroot/posix/stdlib/strtod.c +++ b/src/system/libroot/posix/stdlib/strtod.c @@ -127,7 +127,7 @@ defined(__sparc64__) || defined(__powerpc__) || defined(__POWERPC__) || \ defined(__m68k__) || defined(__M68K__) || defined(__arm__) || \ defined(__mipsel__) || defined(__MIPSEL__) || defined(__x86_64__) || \ - defined(__riscv64__) || defined(__aarch64__) || defined(__arm64__) + defined(__riscv) || defined(__aarch64__) || defined(__arm64__) # include # if BYTE_ORDER == BIG_ENDIAN # define IEEE_BIG_ENDIAN