diff --git a/src/hos/cpu.d b/src/hos/cpu.d index 4b83603..9fb02ad 100644 --- a/src/hos/cpu.d +++ b/src/hos/cpu.d @@ -5,6 +5,16 @@ void cli() __asm("cli", ""); } +void sti() +{ + __asm("sti", ""); +} + +void hlt() +{ + __asm("hlt", ""); +} + ulong read_cr0() { return __asm!ulong("mov %cr0, %rax", "={rax}"); diff --git a/src/hulk/hulk.d b/src/hulk/hulk.d index d01f861..419d828 100644 --- a/src/hulk/hulk.d +++ b/src/hulk/hulk.d @@ -16,6 +16,7 @@ import hulk.pci; import hulk.gdt; import hulk.idt; import hos.cpu; +import ldc.llvmasm; extern extern(C) __gshared ubyte _hulk_total_size; @@ -46,8 +47,10 @@ void hulk_start() hippo.initialize(&hulk_header); pci.initialize(); + sti(); for (;;) { + hlt(); } }