:: commit 42d7dfe5dc906ec15d18584d65b60659ba2eea2f

mintsuki <mintsuki@protonmail.com> — 2022-07-28 20:30

parents: abb37b6943

smp: Make smp_trampoline_size variable instead of symbol

diff --git a/common/sys/smp.c b/common/sys/smp.c
index 7bced48e..46c7e4fb 100644
--- a/common/sys/smp.c
+++ b/common/sys/smp.c
@@ -40,7 +40,7 @@ struct madt_x2apic {
 } __attribute__((packed));
 
 extern symbol smp_trampoline_start;
-extern symbol smp_trampoline_size;
+extern size_t smp_trampoline_size;
 
 struct trampoline_passed_info {
     uint8_t  smp_tpl_booted_flag;
@@ -58,14 +58,14 @@ static bool smp_start_ap(uint32_t lapic_id, struct gdtr *gdtr,
     // Prepare the trampoline
     static void *trampoline = NULL;
     if (trampoline == NULL) {
-        trampoline = conv_mem_alloc((size_t)smp_trampoline_size);
+        trampoline = conv_mem_alloc(smp_trampoline_size);
 
-        memcpy(trampoline, smp_trampoline_start, (size_t)smp_trampoline_size);
+        memcpy(trampoline, smp_trampoline_start, smp_trampoline_size);
     }
 
     static struct trampoline_passed_info *passed_info = NULL;
     if (passed_info == NULL) {
-        passed_info = (void *)(((uintptr_t)trampoline + (size_t)smp_trampoline_size)
+        passed_info = (void *)(((uintptr_t)trampoline + smp_trampoline_size)
                                - sizeof(struct trampoline_passed_info));
     }
 
diff --git a/common/sys/smp_trampoline.asm_x86 b/common/sys/smp_trampoline.asm_x86
index 2cd7e3cc..aa95202f 100644
--- a/common/sys/smp_trampoline.asm_x86
+++ b/common/sys/smp_trampoline.asm_x86
@@ -205,4 +205,4 @@ passed_info:
 smp_trampoline_end:
 
 global smp_trampoline_size
-smp_trampoline_size equ smp_trampoline_end - smp_trampoline_start
+smp_trampoline_size dq smp_trampoline_end - smp_trampoline_start
tab: 248 wrap: offon