summaryrefslogtreecommitdiffhomepage
path: root/dev/ZBA/Sources
diff options
context:
space:
mode:
authorAmlal <amlal@el-mahrouss-logic.com>2024-09-10 10:33:39 +0200
committerAmlal <amlal@el-mahrouss-logic.com>2024-09-10 10:34:53 +0200
commit5aef44da0ce752e7ac6bd9c95489942b1a0319ae (patch)
treef3c6f613048ab091def7afc726f0227f552df519 /dev/ZBA/Sources
parentb11bf31c59d447e62e6ba9b3d8455f9b2828703f (diff)
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 <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZBA/Sources')
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootAPI.S8
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootMain.cxx4
2 files changed, 6 insertions, 6 deletions
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;