diff --git a/src/hulk/hulk.d b/src/hulk/hulk.d index a02332b..b910b91 100644 --- a/src/hulk/hulk.d +++ b/src/hulk/hulk.d @@ -35,13 +35,17 @@ private __gshared HulkHeader hulk_header = { private void initialize_cpu() { - /* 1. Enable SSE. */ - /* 1.a. Turn off CR0.EM and turn on CR0.MP. */ + /* Enable SSE. */ + /* Turn off CR0.EM and turn on CR0.MP. */ write_cr0((read_cr0() & ~CR0_EM) | CR0_MP); - /* 1.b. Set CR4.OSFXSR and CR4.OSXMMEXCPT. */ + /* Set CR4.OSFXSR and CR4.OSXMMEXCPT. */ write_cr4(read_cr4() | CR4_OSFXSR | CR4_OSXMMEXCPT); - /* 2. Enable OSXSAVE. */ + + /* Enable OSXSAVE. */ write_cr4(read_cr4() | CR4_OSXSAVE); + + /* Turn on NXE (no execute enable) flag in the EFER MSR. */ + wrmsr(MSR_EFER, rdmsr(MSR_EFER) | EFER_NXE); } /** diff --git a/src/hulk/hurl.d b/src/hulk/hurl.d index 3796063..f07c7d9 100644 --- a/src/hulk/hurl.d +++ b/src/hulk/hurl.d @@ -33,8 +33,6 @@ struct hurl */ public static void initialize(HulkHeader * header) { - /* Turn on NXE (no execute enable) flag in the EFER MSR. */ - wrmsr(MSR_EFER, rdmsr(MSR_EFER) | EFER_NXE); m_pt_base = allocate_pt(); /* Identity map all physical RAM. */ map_range(0u,