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
