From 5aef44da0ce752e7ac6bd9c95489942b1a0319ae Mon Sep 17 00:00:00 2001 From: Amlal Date: Tue, 10 Sep 2024 10:33:39 +0200 Subject: Fix: See below. - Fixing PML4 mapping and getting it to work. - Don't update cr4, instead do lidt to triple fault. Signed-off-by: Amlal --- dev/ZBA/Sources/HEL/AMD64/BootAPI.S | 8 ++++---- dev/ZBA/Sources/HEL/AMD64/BootMain.cxx | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'dev/ZBA/Sources') diff --git a/dev/ZBA/Sources/HEL/AMD64/BootAPI.S b/dev/ZBA/Sources/HEL/AMD64/BootAPI.S index 380aeb94..9db0961a 100644 --- a/dev/ZBA/Sources/HEL/AMD64/BootAPI.S +++ b/dev/ZBA/Sources/HEL/AMD64/BootAPI.S @@ -18,15 +18,14 @@ rt_jump_to_address: rt_reset_hardware: /* dont raise any interrupts. (except ofc NMIs.) */ cli + /* remap PIC */ wait_gate1: - /* wait for gate 1 to be ready? */ in al,0x64 and al,2 jnz wait_gate1 mov al,0x0D1 out 0x64,al wait_gate2: - /* wait for gate 2 to be ready? */ in al,0x64 and al,2 jnz wait_gate2 @@ -35,8 +34,9 @@ wait_gate2: /* trigger triple fault, by writing to cr4 */ - xor rax,rax - mov cr4,rax + mov rax, 0 + lidt [rax] + reset_wait: jmp reset_wait diff --git a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx index ca2f4975..76a82a24 100644 --- a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx +++ b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx @@ -203,8 +203,8 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, // Update handover file specific table and phyiscal start field. //-----------------------------------------------------------// - handoverHdrPtr->f_PhysicalStart = - (VoidPtr)Descriptor[cDefaultMemoryMap].PhysicalStart; + handoverHdrPtr->f_PageStart = + (VoidPtr)Descriptor[cDefaultMemoryMap].VirtualStart; handoverHdrPtr->f_FirmwareSpecific[HEL::kHandoverSpecificAttrib] = Descriptor[cDefaultMemoryMap].Attribute; -- cgit v1.2.3