smp: Make smp_trampoline_size variable instead of symbol
This commit is contained in:
parent
ccdd1ca642
commit
ff7d9502e5
|
@ -40,7 +40,7 @@ struct madt_x2apic {
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
extern symbol smp_trampoline_start;
|
extern symbol smp_trampoline_start;
|
||||||
extern symbol smp_trampoline_size;
|
extern size_t smp_trampoline_size;
|
||||||
|
|
||||||
struct trampoline_passed_info {
|
struct trampoline_passed_info {
|
||||||
uint8_t smp_tpl_booted_flag;
|
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
|
// Prepare the trampoline
|
||||||
static void *trampoline = NULL;
|
static void *trampoline = NULL;
|
||||||
if (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;
|
static struct trampoline_passed_info *passed_info = NULL;
|
||||||
if (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));
|
- sizeof(struct trampoline_passed_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,4 +205,4 @@ passed_info:
|
||||||
smp_trampoline_end:
|
smp_trampoline_end:
|
||||||
|
|
||||||
global smp_trampoline_size
|
global smp_trampoline_size
|
||||||
smp_trampoline_size equ smp_trampoline_end - smp_trampoline_start
|
smp_trampoline_size dq smp_trampoline_end - smp_trampoline_start
|
||||||
|
|
Loading…
Reference in New Issue