:: commit 0c2f0ddebead59750792e0dba97a249056b3b356

mintsuki <mintsuki@protonmail.com> — 2024-08-11 18:25

parents: 21d3d7f3f2

build: Remove custom __riscv64 define in favour of built-in __riscv define

We do not support non-64-bit RISC-V anyways
diff --git a/common/GNUmakefile b/common/GNUmakefile
index ac08c763..27665d18 100644
--- a/common/GNUmakefile
+++ b/common/GNUmakefile
@@ -152,8 +152,7 @@ ifeq ($(TARGET),uefi-riscv64)
         -I'$(call SHESCAPE,$(BUILDDIR))/limine-efi/inc' \
         -I'$(call SHESCAPE,$(BUILDDIR))/limine-efi/inc/riscv64' \
         $(CPPFLAGS_FOR_TARGET) \
-        -DUEFI \
-        -D__riscv64
+        -DUEFI
 endif
 
 ifeq ($(TARGET),uefi-loongarch64)
diff --git a/common/lib/config.c b/common/lib/config.c
index b13644be..633d218f 100644
--- a/common/lib/config.c
+++ b/common/lib/config.c
@@ -225,7 +225,7 @@ skip_loop:
     }
 #elif defined (__aarch64__)
     strcpy(arch_macro->value, "aarch64");
-#elif defined (__riscv64)
+#elif defined (__riscv)
     strcpy(arch_macro->value, "riscv64");
 #elif defined (__loongarch64)
     strcpy(arch_macro->value, "loongarch64");
diff --git a/common/lib/elf.c b/common/lib/elf.c
index 3720d9d7..6812ab1e 100644
--- a/common/lib/elf.c
+++ b/common/lib/elf.c
@@ -164,7 +164,7 @@ static bool elf64_validate(struct elf64_hdr *hdr) {
     if (hdr->machine != ARCH_AARCH64) {
         panic(true, "elf: Not an aarch64 ELF file.");
     }
-#elif defined (__riscv64)
+#elif defined (__riscv)
     if (hdr->machine != ARCH_RISCV && hdr->ident[EI_CLASS] == ELFCLASS64) {
         panic(true, "elf: Not a riscv64 ELF file.");
     }
@@ -473,7 +473,7 @@ end_of_pt_segment:
             case R_X86_64_NONE:
 #elif defined (__aarch64__)
             case R_AARCH64_NONE:
-#elif defined (__riscv64)
+#elif defined (__riscv)
             case R_RISCV_NONE:
 #elif defined (__loongarch64)
             case R_LARCH_NONE:
@@ -485,7 +485,7 @@ end_of_pt_segment:
             case R_X86_64_RELATIVE:
 #elif defined (__aarch64__)
             case R_AARCH64_RELATIVE:
-#elif defined (__riscv64)
+#elif defined (__riscv)
             case R_RISCV_RELATIVE:
 #elif defined (__loongarch64)
             case R_LARCH_RELATIVE:
@@ -505,7 +505,7 @@ end_of_pt_segment:
 #elif defined (__aarch64__)
             case R_AARCH64_GLOB_DAT:
             case R_AARCH64_JUMP_SLOT:
-#elif defined (__riscv64)
+#elif defined (__riscv)
             case R_RISCV_JUMP_SLOT:
 #elif defined (__loongarch64)
             case R_LARCH_JUMP_SLOT:
@@ -530,7 +530,7 @@ end_of_pt_segment:
             case R_X86_64_64:
 #elif defined (__aarch64__)
             case R_AARCH64_ABS64:
-#elif defined (__riscv64)
+#elif defined (__riscv)
             case R_RISCV_64:
 #elif defined (__loongarch64)
             case R_LARCH_64:
diff --git a/common/lib/misc.c b/common/lib/misc.c
index 8bbbec74..88bea2de 100644
--- a/common/lib/misc.c
+++ b/common/lib/misc.c
@@ -251,7 +251,7 @@ retry:
     asm volatile ("cli" ::: "memory");
 #elif defined (__aarch64__)
     asm volatile ("msr daifset, #15" ::: "memory");
-#elif defined (__riscv64)
+#elif defined (__riscv)
     asm volatile ("csrci sstatus, 0x2" ::: "memory");
 #elif defined (__loongarch64)
     asm volatile ("csrxchg $r0, %0, 0x0" :: "r" (0x4) : "memory");
diff --git a/common/lib/misc.h b/common/lib/misc.h
index ba5e72d2..9005b0b7 100644
--- a/common/lib/misc.h
+++ b/common/lib/misc.h
@@ -10,7 +10,7 @@
 #include <lib/libc.h>
 #if defined (UEFI)
 #  include <efi.h>
-#  if defined (__riscv64)
+#  if defined (__riscv)
 #    include <protocol/riscv/efiboot.h>
 #  endif
 #endif
@@ -90,7 +90,7 @@ noreturn void common_spinup(void *fnptr, int args, ...);
 noreturn void enter_in_el1(uint64_t entry, uint64_t sp, uint64_t sctlr,
                            uint64_t mair, uint64_t tcr, uint64_t ttbr0,
                            uint64_t ttbr1, uint64_t target_x0);
-#elif defined (__riscv64)
+#elif defined (__riscv)
 noreturn void riscv_spinup(uint64_t entry, uint64_t sp, uint64_t satp, uint64_t direct_map_offset);
 #if defined (UEFI)
 RISCV_EFI_BOOT_PROTOCOL *get_riscv_boot_protocol(void);
diff --git a/common/lib/panic.s2.c b/common/lib/panic.s2.c
index dcd76979..817b651e 100644
--- a/common/lib/panic.s2.c
+++ b/common/lib/panic.s2.c
@@ -76,7 +76,7 @@ noreturn void panic(bool allow_menu, const char *fmt, ...) {
         for (;;) {
 #if defined (__x86_64__) || defined (__i386__)
             asm ("hlt");
-#elif defined (__aarch64__) || defined (__riscv64)
+#elif defined (__aarch64__) || defined (__riscv)
             asm ("wfi");
 #elif defined (__loongarch64)
             asm ("idle 0");
diff --git a/common/lib/trace.s2.c b/common/lib/trace.s2.c
index 56885e9a..2018c814 100644
--- a/common/lib/trace.s2.c
+++ b/common/lib/trace.s2.c
@@ -54,7 +54,7 @@ void print_stacktrace(size_t *base_ptr) {
             "movq %%rbp, %0"
 #elif defined (__aarch64__)
             "mov %0, x29"
-#elif defined (__riscv64)
+#elif defined (__riscv)
             "mv %0, fp;  addi %0, %0, -16"
 #elif defined (__loongarch64)
             "move %0, $fp;  addi.d %0, %0, -16"
diff --git a/common/menu.c b/common/menu.c
index 8f17e56a..c8a069c1 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -808,7 +808,7 @@ noreturn void _menu(bool first_run) {
         menu_branding = "Limine " LIMINE_VERSION " ("
 #if defined (__x86_64__)
             "x86-64"
-#elif defined (__riscv64)
+#elif defined (__riscv)
             "riscv64"
 #elif defined (__aarch64__)
             "aarch64"
diff --git a/common/mm/vmm.c b/common/mm/vmm.c
index 9ce4e8f6..80d23312 100644
--- a/common/mm/vmm.c
+++ b/common/mm/vmm.c
@@ -243,7 +243,7 @@ level4:
     pml1[pml1_entry] = (pt_entry_t)(phys_addr | real_flags | PT_FLAG_4K_PAGE);
 }
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 
 #define PT_FLAG_VALID       ((uint64_t)1 << 0)
 #define PT_FLAG_READ        ((uint64_t)1 << 1)
diff --git a/common/mm/vmm.h b/common/mm/vmm.h
index 8adea18a..00fe07b0 100644
--- a/common/mm/vmm.h
+++ b/common/mm/vmm.h
@@ -83,7 +83,7 @@ void vmm_assert_4k_pages(void);
 pagemap_t new_pagemap(int lv);
 void map_page(pagemap_t pagemap, uint64_t virt_addr, uint64_t phys_addr, uint64_t flags, enum page_size page_size);
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 
 // We use fake flags here because these don't properly map onto the
 // RISC-V flags.
diff --git a/common/protos/limine.c b/common/protos/limine.c
index ee25bf91..0c0a8669 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -288,7 +288,7 @@ extern symbol limine_spinup_32;
                             | ((uint64_t)1 << 8)             /* TTBR0 Inner WB RW-Allocate */ \
                             | ((uint64_t)(tsz) << 0))        /* Address bits in TTBR0 */
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 #elif defined (__loongarch64)
 #else
 #error Unknown architecture
@@ -612,7 +612,7 @@ noreturn void limine_load(char *config, char *cmdline) {
         goto hhdm_fail;
     }
     // TODO(qookie): aarch64 also has optional 5 level paging when using 4K pages
-#elif defined (__riscv64)
+#elif defined (__riscv)
     max_supported_paging_mode = vmm_max_paging_mode();
     min_supported_paging_mode = PAGING_MODE_RISCV_SV39;
     if (hhdm_span_top >= (uint64_t)1 << (paging_mode_va_bits(min_supported_paging_mode) - 2)) {
@@ -668,7 +668,7 @@ hhdm_fail:
         } else if (strcasecmp(user_max_paging_mode_s, "5level") == 0) {
             user_max_paging_mode = PAGING_MODE_AARCH64_5LVL;
         }
-#elif defined (__riscv64)
+#elif defined (__riscv)
         if (strcasecmp(user_max_paging_mode_s, "sv39") == 0) {
             user_max_paging_mode = PAGING_MODE_RISCV_SV39;
         } else if (strcasecmp(user_max_paging_mode_s, "sv48") == 0) {
@@ -707,7 +707,7 @@ hhdm_fail:
         } else if (strcasecmp(user_min_paging_mode_s, "5level") == 0) {
             user_min_paging_mode = PAGING_MODE_AARCH64_5LVL;
         }
-#elif defined (__riscv64)
+#elif defined (__riscv)
         if (strcasecmp(user_min_paging_mode_s, "sv39") == 0) {
             user_min_paging_mode = PAGING_MODE_RISCV_SV39;
         } else if (strcasecmp(user_min_paging_mode_s, "sv48") == 0) {
@@ -744,7 +744,7 @@ hhdm_fail:
 
 #if defined (__x86_64__) || defined (__i386__)
     paging_mode = PAGING_MODE_X86_64_4LVL;
-#elif defined (__riscv64)
+#elif defined (__riscv)
     paging_mode = max_supported_paging_mode >= PAGING_MODE_RISCV_SV48 ? PAGING_MODE_RISCV_SV48 : PAGING_MODE_RISCV_SV39;
 #elif defined (__aarch64__)
     paging_mode = PAGING_MODE_AARCH64_4LVL;
@@ -752,7 +752,7 @@ hhdm_fail:
     paging_mode = PAGING_MODE_LOONGARCH64_4LVL;
 #endif
 
-#if defined (__riscv64)
+#if defined (__riscv)
 #define paging_mode_limine_to_vmm(x) (PAGING_MODE_RISCV_SV39 + (x))
 #define paging_mode_vmm_to_limine(x) ((x) - PAGING_MODE_RISCV_SV39)
 #else
@@ -1362,7 +1362,7 @@ FEAT_START
     smp_info = init_smp(&cpu_count, &bsp_mpidr,
                         pagemap, LIMINE_MAIR(fb_attr), LIMINE_TCR(tsz, pa), LIMINE_SCTLR,
                         direct_map_offset);
-#elif defined (__riscv64)
+#elif defined (__riscv)
     smp_info = init_smp(&cpu_count, pagemap, direct_map_offset);
 #elif defined (__loongarch64)
     cpu_count = 0;
@@ -1384,7 +1384,7 @@ FEAT_START
         if (smp_info[i].mpidr == bsp_mpidr) {
             continue;
         }
-#elif defined (__riscv64)
+#elif defined (__riscv)
         if (smp_info[i].hartid == bsp_hartid) {
             continue;
         }
@@ -1405,7 +1405,7 @@ FEAT_START
     smp_response->bsp_lapic_id = bsp_lapic_id;
 #elif defined (__aarch64__)
     smp_response->bsp_mpidr = bsp_mpidr;
-#elif defined (__riscv64)
+#elif defined (__riscv)
     smp_response->bsp_hartid = bsp_hartid;
 #elif defined (__loongarch64)
 #else
@@ -1535,7 +1535,7 @@ FEAT_END
                  (uint64_t)pagemap.top_level[0],
                  (uint64_t)pagemap.top_level[1],
                  direct_map_offset);
-#elif defined (__riscv64)
+#elif defined (__riscv)
     uint64_t reported_stack = reported_addr(stack);
     uint64_t satp = make_satp(pagemap.paging_mode, pagemap.top_level);
 
diff --git a/common/protos/linux_risc.c b/common/protos/linux_risc.c
index 607f58e0..c95e24ea 100644
--- a/common/protos/linux_risc.c
+++ b/common/protos/linux_risc.c
@@ -1,4 +1,4 @@
-#if defined(__riscv64) || defined(__aarch64__)
+#if defined(__riscv) || defined(__aarch64__)
 
 #include <stdint.h>
 #include <stddef.h>
@@ -44,7 +44,7 @@ struct linux_efi_memreserve {
 
 // End of Linux code
 
-#if defined(__riscv64)
+#if defined(__riscv)
 #define LINUX_HEADER_MAGIC2             0x05435352
 #define LINUX_HEADER_MAJOR_VER(ver)     (((ver) >> 16) & 0xffff)
 #define LINUX_HEADER_MINOR_VER(ver)     (((ver) >> 0)  & 0xffff)
@@ -251,7 +251,7 @@ noreturn void linux_load(char *config, char *cmdline) {
     }
 
     // Version fields are RV-specific
-#if defined(__riscv64)
+#if defined(__riscv)
     printv("linux: boot protocol version %d.%d\n",
            LINUX_HEADER_MAJOR_VER(header.version),
            LINUX_HEADER_MINOR_VER(header.version));
@@ -274,7 +274,7 @@ noreturn void linux_load(char *config, char *cmdline) {
         panic(true, "linux: failed to prepare the device tree blob");
     }
 
-#if defined(__riscv64)
+#if defined(__riscv)
     printv("linux: bsp hart %d, device tree blob at %x\n", bsp_hartid, dtb);
 
     void (*kernel_entry)(uint64_t hartid, uint64_t dtb) = kernel_base;
diff --git a/common/sys/cpu.h b/common/sys/cpu.h
index 2ea89c54..2c12bdc7 100644
--- a/common/sys/cpu.h
+++ b/common/sys/cpu.h
@@ -281,7 +281,7 @@ static inline int current_el(void) {
     return v;
 }
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 
 static inline uint64_t rdtsc(void) {
     uint64_t v;
diff --git a/common/sys/smp.c b/common/sys/smp.c
index f02f8f77..d9b52c9e 100644
--- a/common/sys/smp.c
+++ b/common/sys/smp.c
@@ -14,7 +14,7 @@
 #include <mm/mtrr.h>
 #define LIMINE_NO_POINTERS
 #include <limine.h>
-#if defined (__riscv64)
+#if defined (__riscv)
 #include <sys/sbi.h>
 #endif
 #if defined (__aarch64__)
@@ -710,7 +710,7 @@ struct limine_smp_info *init_smp(size_t   *cpu_count,
     return NULL;
 }
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 
 struct trampoline_passed_info {
     uint64_t smp_tpl_booted_flag;
diff --git a/common/sys/smp.h b/common/sys/smp.h
index b0269f8a..11883135 100644
--- a/common/sys/smp.h
+++ b/common/sys/smp.h
@@ -29,7 +29,7 @@ struct limine_smp_info *init_smp(size_t   *cpu_count,
                                  uint64_t  sctlr,
                                  uint64_t  hhdm_offset);
 
-#elif defined (__riscv64)
+#elif defined (__riscv)
 
 struct limine_smp_info *init_smp(size_t   *cpu_count,
                                  pagemap_t pagemap,
tab: 248 wrap: offon