From a0a90c80e5dd17df8f609aebc253b4bf9147f90f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 4 Sep 2024 12:56:23 +0200 Subject: Created a new branch for the overhaul project. Signed-off-by: Amlal El Mahrouss --- dev/ZBA/Sources/HEL/AMD64/BootAPI.S | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 dev/ZBA/Sources/HEL/AMD64/BootAPI.S (limited to 'dev/ZBA/Sources/HEL/AMD64/BootAPI.S') diff --git a/dev/ZBA/Sources/HEL/AMD64/BootAPI.S b/dev/ZBA/Sources/HEL/AMD64/BootAPI.S new file mode 100644 index 00000000..e391351d --- /dev/null +++ b/dev/ZBA/Sources/HEL/AMD64/BootAPI.S @@ -0,0 +1,47 @@ +.global rt_jump_to_address +.global rt_reset_hardware + +.text + +.intel_syntax noprefix + +/** + @brief this function setups a stack and then jumps to + a function */ +rt_jump_to_address: + mov rbx, rcx + mov rcx, rdx + jmp rbx + + ret + +rt_reset_hardware: + /* dont raise any interrupts. (except ofc NMIs.) */ + cli +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 + mov al,0x0FE + out 0x60,al + + /* trigger triple fault, by writing to cr4 */ + + xor rax,rax + mov cr4,rax +reset_wait: + jmp reset_wait + +.global write_cr3 + +write_cr3: + mov cr3, rcx + ret \ No newline at end of file -- cgit v1.2.3