fix x86_64 on clang

This commit is contained in:
2026-10-15 17:17:03 +02:00
committed by Marvin Friedrich
parent ee5c8b1fc3
commit d7b20baf97
2 changed files with 7 additions and 4 deletions
+6 -3
View File
@@ -51,15 +51,18 @@ static void smp_trampoline() {
".set .Ltemp_cr3_offset, (.Ldata_offset + %c[temp_cr3])\n" ".set .Ltemp_cr3_offset, (.Ldata_offset + %c[temp_cr3])\n"
".set .Lentry_offset, (.Ldata_offset + %c[entry])\n" ".set .Lentry_offset, (.Ldata_offset + %c[entry])\n"
".set .Lhhdm_offset, (.Ldata_offset + %c[hhdm])\n" ".set .Lhhdm_offset, (.Ldata_offset + %c[hhdm])\n"
".set .Linvalid_idtr_offset, (.Linvalid_idtr - smp_trampoline_start)\n"
".set .Lmode32_offset, (.Lmode32 - smp_trampoline_start)\n"
".set .Lmode64_offset, (.Lmode64 - smp_trampoline_start)\n"
".Lmode16:\n" ".Lmode16:\n"
" mov bx, cs\n" " mov bx, cs\n"
" shl ebx, 4\n" " shl ebx, 4\n"
" lidtd cs:(.Linvalid_idtr - smp_trampoline_start)\n" " lidtd cs:.Linvalid_idtr_offset\n"
" lgdtd cs:.Lgdtr_offset\n" " lgdtd cs:.Lgdtr_offset\n"
" lea eax, [ebx + (.Lmode32 - smp_trampoline_start)]\n" " lea eax, [ebx + .Lmode32_offset]\n"
" mov dword ptr cs:.Lfarjmp_offset, eax\n" " mov dword ptr cs:.Lfarjmp_offset, eax\n"
" mov eax, %c[cr0]\n" " mov eax, %c[cr0]\n"
@@ -98,7 +101,7 @@ static void smp_trampoline() {
" or eax, %c[cr0_pg]\n" " or eax, %c[cr0_pg]\n"
" mov cr0, eax\n" " mov cr0, eax\n"
" lea eax, [ebx + (.Lmode64 - smp_trampoline_start)]\n" " lea eax, [ebx + .Lmode64_offset]\n"
" push %c[kernel64_cs]\n" " push %c[kernel64_cs]\n"
" push eax\n" " push eax\n"
" retf\n" " retf\n"
+1 -1
View File
@@ -44,7 +44,7 @@ common_c_args = [
common_link_args = [ common_link_args = [
'-ffreestanding', '-ffreestanding',
'-nostdlib', '-nostdlib',
'-znoexecstack', '-Wl,-z,noexecstack',
'-Wl,--gc-sections', '-Wl,--gc-sections',
'-Wl,--build-id=none', '-Wl,--build-id=none',
] ]