smp: Remove dead 32-bit trampoline code
This commit is contained in:
parent
3fde8f0158
commit
87a88bf565
@ -951,7 +951,7 @@ FEAT_START
|
||||
#if defined (__x86_64__) || defined (__i386__)
|
||||
uint32_t bsp_lapic_id;
|
||||
smp_info = init_smp(&cpu_count, &bsp_lapic_id,
|
||||
true, paging_mode,
|
||||
paging_mode,
|
||||
pagemap, smp_request->flags & LIMINE_SMP_X2APIC, nx_available,
|
||||
direct_map_offset, true);
|
||||
#elif defined (__aarch64__)
|
||||
|
@ -33,7 +33,7 @@ struct trampoline_passed_info {
|
||||
|
||||
static bool smp_start_ap(uint32_t lapic_id, struct gdtr *gdtr,
|
||||
struct limine_smp_info *info_struct,
|
||||
bool longmode, int paging_mode, uint32_t pagemap,
|
||||
int paging_mode, uint32_t pagemap,
|
||||
bool x2apic, bool nx, uint64_t hhdm, bool wp) {
|
||||
// Prepare the trampoline
|
||||
static void *trampoline = NULL;
|
||||
@ -53,10 +53,9 @@ static bool smp_start_ap(uint32_t lapic_id, struct gdtr *gdtr,
|
||||
passed_info->smp_tpl_booted_flag = 0;
|
||||
passed_info->smp_tpl_pagemap = pagemap;
|
||||
passed_info->smp_tpl_target_mode = ((uint32_t)x2apic << 2)
|
||||
| ((uint32_t)paging_mode << 1)
|
||||
| ((uint32_t)(paging_mode == PAGING_MODE_X86_64_5LVL) << 1)
|
||||
| ((uint32_t)nx << 3)
|
||||
| ((uint32_t)wp << 4)
|
||||
| ((uint32_t)longmode << 0);
|
||||
| ((uint32_t)wp << 4);
|
||||
passed_info->smp_tpl_gdt = *gdtr;
|
||||
passed_info->smp_tpl_hhdm = hhdm;
|
||||
|
||||
@ -92,7 +91,6 @@ static bool smp_start_ap(uint32_t lapic_id, struct gdtr *gdtr,
|
||||
|
||||
struct limine_smp_info *init_smp(size_t *cpu_count,
|
||||
uint32_t *_bsp_lapic_id,
|
||||
bool longmode,
|
||||
int paging_mode,
|
||||
pagemap_t pagemap,
|
||||
bool x2apic,
|
||||
@ -200,7 +198,7 @@ struct limine_smp_info *init_smp(size_t *cpu_count,
|
||||
|
||||
// Try to start the AP
|
||||
if (!smp_start_ap(lapic->lapic_id, &gdtr, info_struct,
|
||||
longmode, paging_mode, (uintptr_t)pagemap.top_level,
|
||||
paging_mode, (uintptr_t)pagemap.top_level,
|
||||
x2apic, nx, hhdm, wp)) {
|
||||
print("smp: FAILED to bring-up AP\n");
|
||||
continue;
|
||||
@ -237,7 +235,7 @@ struct limine_smp_info *init_smp(size_t *cpu_count,
|
||||
|
||||
// Try to start the AP
|
||||
if (!smp_start_ap(x2lapic->x2apic_id, &gdtr, info_struct,
|
||||
longmode, paging_mode, (uintptr_t)pagemap.top_level,
|
||||
paging_mode, (uintptr_t)pagemap.top_level,
|
||||
true, nx, hhdm, wp)) {
|
||||
print("smp: FAILED to bring-up AP\n");
|
||||
continue;
|
||||
|
@ -12,7 +12,6 @@
|
||||
|
||||
struct limine_smp_info *init_smp(size_t *cpu_count,
|
||||
uint32_t *_bsp_lapic_id,
|
||||
bool longmode,
|
||||
int paging_mode,
|
||||
pagemap_t pagemap,
|
||||
bool x2apic,
|
||||
|
@ -56,9 +56,6 @@ smp_trampoline_start:
|
||||
.nox2apic:
|
||||
lea esp, [ebx + (temp_stack.top - smp_trampoline_start)]
|
||||
|
||||
test dword [ebx + (passed_info.target_mode - smp_trampoline_start)], (1 << 0)
|
||||
jz parking32
|
||||
|
||||
mov eax, cr4
|
||||
bts eax, 5
|
||||
mov cr4, eax
|
||||
@ -123,34 +120,6 @@ smp_trampoline_start:
|
||||
|
||||
jmp rax
|
||||
|
||||
bits 32
|
||||
parking32:
|
||||
mov edi, dword [ebx + (passed_info.smp_info_struct - smp_trampoline_start)]
|
||||
mov eax, 1
|
||||
lock xchg dword [ebx + (passed_info.booted_flag - smp_trampoline_start)], eax
|
||||
|
||||
xor eax, eax
|
||||
.loop:
|
||||
lock xadd dword [edi + 16], eax
|
||||
test eax, eax
|
||||
jnz .out
|
||||
pause
|
||||
jmp .loop
|
||||
|
||||
.out:
|
||||
mov esp, dword [edi + 8]
|
||||
push 0
|
||||
push edi
|
||||
push eax
|
||||
xor eax, eax
|
||||
xor ebx, ebx
|
||||
xor ecx, ecx
|
||||
xor edx, edx
|
||||
xor esi, esi
|
||||
xor edi, edi
|
||||
xor ebp, ebp
|
||||
ret
|
||||
|
||||
bits 64
|
||||
parking64:
|
||||
mov ebx, ebx
|
||||
|
Loading…
Reference in New Issue
Block a user