diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2022-12-01 00:26:16 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2022-12-01 00:26:16 +0000 |
commit | fae2e911e92b52b7c27fab6a883c826eb8962b3c (patch) | |
tree | 2a144ff472c6814635ab72b809ac6cbc1a1ac1b4 /sys/arch | |
parent | 4e4b1886af0747a922f14ed00884cea8b1b1964f (diff) |
_C_LABEL() is no longer useful in the "everything is ELF" world.
Start eliminating it.
ok mpi@ mlarkin@ krw@
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/amd64/amd64/acpi_wakecode.S | 24 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/copy.S | 36 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/locore.S | 101 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/locore0.S | 26 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/mptramp.S | 29 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/spl.S | 14 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/vector.S | 528 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/vmm_support.S | 50 | ||||
-rw-r--r-- | sys/arch/amd64/include/asm.h | 10 | ||||
-rw-r--r-- | sys/arch/amd64/include/i82093reg.h | 4 |
10 files changed, 333 insertions, 489 deletions
diff --git a/sys/arch/amd64/amd64/acpi_wakecode.S b/sys/arch/amd64/amd64/acpi_wakecode.S index cd9c9240bf8..ddcdc74c3ed 100644 --- a/sys/arch/amd64/amd64/acpi_wakecode.S +++ b/sys/arch/amd64/amd64/acpi_wakecode.S @@ -1,4 +1,4 @@ -/* $OpenBSD: acpi_wakecode.S,v 1.48 2022/11/29 02:19:29 guenther Exp $ */ +/* $OpenBSD: acpi_wakecode.S,v 1.49 2022/12/01 00:26:15 guenther Exp $ */ /* * Copyright (c) 2001 Takanori Watanabe <takawata@jp.freebsd.org> * Copyright (c) 2001 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> @@ -58,12 +58,12 @@ #define addr32 #endif -#define _ACPI_TRMP_LABEL(a) a = . - _C_LABEL(acpi_real_mode_resume) + \ +#define _ACPI_TRMP_LABEL(a) a = . - acpi_real_mode_resume + \ ACPI_TRAMPOLINE -#define _ACPI_TRMP_OFFSET(a) a = . - _C_LABEL(acpi_real_mode_resume) -#define _ACPI_TRMP_DATA_LABEL(a) a = . - _C_LABEL(acpi_tramp_data_start) + \ +#define _ACPI_TRMP_OFFSET(a) a = . - acpi_real_mode_resume +#define _ACPI_TRMP_DATA_LABEL(a) a = . - acpi_tramp_data_start + \ ACPI_TRAMP_DATA -#define _ACPI_TRMP_DATA_OFFSET(a) a = . - _C_LABEL(acpi_tramp_data_start) +#define _ACPI_TRMP_DATA_OFFSET(a) a = . - acpi_tramp_data_start #define _ACPI_RM_CODE_SEG (ACPI_TRAMPOLINE >> 4) #define _ACPI_RM_DATA_SEG (ACPI_TRAMP_DATA >> 4) @@ -92,10 +92,10 @@ .section .rodata .code16 .align 4, 0xcc - .global _C_LABEL(acpi_resume_end) - .global _C_LABEL(acpi_pdirpa) - .global _C_LABEL(acpi_tramp_data_start) - .global _C_LABEL(acpi_tramp_data_end) + .global acpi_resume_end + .global acpi_pdirpa + .global acpi_tramp_data_start + .global acpi_tramp_data_end GENTRY(acpi_real_mode_resume) _ACPI_TRMP_OFFSET(.Lacpi_s3_vector_real) nop @@ -529,7 +529,7 @@ END(hibernate_flush) */ .section .rodata .type acpi_resume_end,@object -_C_LABEL(acpi_resume_end): +acpi_resume_end: END(acpi_real_mode_resume) /* @@ -538,7 +538,7 @@ END(acpi_real_mode_resume) */ .section .rodata .type acpi_tramp_data_start,@object -_C_LABEL(acpi_tramp_data_start): +acpi_tramp_data_start: _ACPI_TRMP_DATA_OFFSET(.Ltmp_gdt) .word .Ltmp_gdt_end - .Ltmp_gdtable .long .Ltmp_gdtable @@ -715,7 +715,7 @@ _ACPI_TRMP_DATA_LABEL(.Lhibernate_indirect_16b) #endif /* HIBERNATE */ .type acpi_tramp_data_end,@object -_C_LABEL(acpi_tramp_data_end): +acpi_tramp_data_end: END(acpi_tramp_data_start) /* diff --git a/sys/arch/amd64/amd64/copy.S b/sys/arch/amd64/amd64/copy.S index 87bdd002952..f9f619e04e1 100644 --- a/sys/arch/amd64/amd64/copy.S +++ b/sys/arch/amd64/amd64/copy.S @@ -1,4 +1,4 @@ -/* $OpenBSD: copy.S,v 1.15 2022/11/07 01:41:57 guenther Exp $ */ +/* $OpenBSD: copy.S,v 1.16 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: copy.S,v 1.1 2003/04/26 18:39:26 fvdl Exp $ */ /* @@ -60,7 +60,7 @@ ENTRY(kcopy) RETGUARD_SETUP(kcopy, r10) movq CPUVAR(CURPCB),%rax pushq PCB_ONFAULT(%rax) - leaq _C_LABEL(copy_fault)(%rip),%r11 + leaq copy_fault(%rip),%r11 movq %r11, PCB_ONFAULT(%rax) xchgq %rdi,%rsi @@ -118,13 +118,13 @@ ENTRY(copyout) movq %rdi,%rdx addq %rax,%rdx - jc _C_LABEL(copy_fault) + jc copy_fault movq $VM_MAXUSER_ADDRESS,%r8 cmpq %r8,%rdx - ja _C_LABEL(copy_fault) + ja copy_fault movq CPUVAR(CURPCB),%rdx - leaq _C_LABEL(copy_fault)(%rip),%r11 + leaq copy_fault(%rip),%r11 movq %r11,PCB_ONFAULT(%rdx) SMAP_STAC movq %rax,%rcx @@ -151,7 +151,7 @@ ENTRY(copyin) RETGUARD_SETUP(kcopy, r10) movq CPUVAR(CURPCB),%rax pushq $0 - leaq _C_LABEL(copy_fault)(%rip),%r11 + leaq copy_fault(%rip),%r11 movq %r11,PCB_ONFAULT(%rax) SMAP_STAC xchgq %rdi,%rsi @@ -159,10 +159,10 @@ ENTRY(copyin) movq %rsi,%rdx addq %rax,%rdx - jc _C_LABEL(copy_fault) + jc copy_fault movq $VM_MAXUSER_ADDRESS,%r8 cmpq %r8,%rdx - ja _C_LABEL(copy_fault) + ja copy_fault 3: /* bcopy(%rsi, %rdi, %rax); */ movq %rax,%rcx @@ -204,7 +204,7 @@ ENTRY(copyoutstr) movq %rcx,%r9 5: movq CPUVAR(CURPCB),%rax - leaq _C_LABEL(copystr_fault)(%rip),%r11 + leaq copystr_fault(%rip),%r11 movq %r11,PCB_ONFAULT(%rax) SMAP_STAC /* @@ -212,7 +212,7 @@ ENTRY(copyoutstr) */ movq $VM_MAXUSER_ADDRESS,%rax subq %rdi,%rax - jbe _C_LABEL(copystr_fault) /* die if CF == 1 || ZF == 1 */ + jbe copystr_fault /* die if CF == 1 || ZF == 1 */ cmpq %rdx,%rax jae 1f movq %rax,%rdx @@ -235,7 +235,7 @@ ENTRY(copyoutstr) 2: /* rdx is zero -- return EFAULT or ENAMETOOLONG. */ movq $VM_MAXUSER_ADDRESS,%r11 cmpq %r11,%rdi - jae _C_LABEL(copystr_fault) + jae copystr_fault movl $ENAMETOOLONG,%eax jmp copystr_return @@ -246,7 +246,7 @@ ENTRY(copyinstr) movq %rcx,%r9 movq CPUVAR(CURPCB),%rcx - leaq _C_LABEL(copystr_fault)(%rip),%r11 + leaq copystr_fault(%rip),%r11 movq %r11,PCB_ONFAULT(%rcx) SMAP_STAC @@ -255,7 +255,7 @@ ENTRY(copyinstr) */ movq $VM_MAXUSER_ADDRESS,%rax subq %rsi,%rax - jbe _C_LABEL(copystr_fault) /* die if CF == 1 || ZF == 1 */ + jbe copystr_fault /* die if CF == 1 || ZF == 1 */ cmpq %rdx,%rax jae 1f movq %rax,%rdx @@ -278,7 +278,7 @@ ENTRY(copyinstr) 2: /* edx is zero -- return EFAULT or ENAMETOOLONG. */ movq $VM_MAXUSER_ADDRESS,%r11 cmpq %r11,%rsi - jae _C_LABEL(copystr_fault) + jae copystr_fault movl $ENAMETOOLONG,%eax jmp copystr_return @@ -332,10 +332,10 @@ ENTRY(copystr) lfence .section .rodata - .globl _C_LABEL(_stac) -_C_LABEL(_stac): + .globl _stac +_stac: stac - .globl _C_LABEL(_clac) -_C_LABEL(_clac): + .globl _clac +_clac: clac diff --git a/sys/arch/amd64/amd64/locore.S b/sys/arch/amd64/amd64/locore.S index d2093a773e8..838b11e3e1f 100644 --- a/sys/arch/amd64/amd64/locore.S +++ b/sys/arch/amd64/amd64/locore.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.S,v 1.130 2022/11/29 21:41:39 guenther Exp $ */ +/* $OpenBSD: locore.S,v 1.131 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $ */ /* @@ -147,19 +147,19 @@ .data #if NLAPIC > 0 - .align NBPG, 0xcc - .globl _C_LABEL(local_apic), _C_LABEL(lapic_id), _C_LABEL(lapic_tpr) -_C_LABEL(local_apic): - .space LAPIC_ID -_C_LABEL(lapic_id): - .long 0x00000000 - .space LAPIC_TPRI-(LAPIC_ID+4) -_C_LABEL(lapic_tpr): - .space LAPIC_PPRI-LAPIC_TPRI -_C_LABEL(lapic_ppr): - .space LAPIC_ISR-LAPIC_PPRI -_C_LABEL(lapic_isr): - .space NBPG-LAPIC_ISR + .align NBPG, 0xcc + .globl local_apic, lapic_id, lapic_tpr +local_apic: + .space LAPIC_ID +lapic_id: + .long 0x00000000 + .space LAPIC_TPRI-(LAPIC_ID+4) +lapic_tpr: + .space LAPIC_PPRI-LAPIC_TPRI +lapic_ppr: + .space LAPIC_ISR-LAPIC_PPRI +lapic_isr: + .space NBPG-LAPIC_ISR #endif /*****************************************************************************/ @@ -169,29 +169,29 @@ _C_LABEL(lapic_isr): * gdb's backtrace logic matches against the instructions in this. */ .section .rodata - .globl _C_LABEL(sigcode) -_C_LABEL(sigcode): + .globl sigcode +sigcode: call 1f movq %rsp,%rdi pushq %rdi /* fake return address */ movq $SYS_sigreturn,%rax syscall - .globl _C_LABEL(sigcoderet) -_C_LABEL(sigcoderet): + .globl sigcoderet +sigcoderet: movq $SYS_exit,%rax syscall _ALIGN_TRAPS 1: JMP_RETPOLINE(rax) - .globl _C_LABEL(esigcode) -_C_LABEL(esigcode): + .globl esigcode +esigcode: - .globl _C_LABEL(sigfill) -_C_LABEL(sigfill): + .globl sigfill +sigfill: int3 -_C_LABEL(esigfill): - .globl _C_LABEL(sigfillsiz) -_C_LABEL(sigfillsiz): - .long _C_LABEL(esigfill) - _C_LABEL(sigfill) +esigfill: + .globl sigfillsiz +sigfillsiz: + .long esigfill - sigfill .text /* @@ -461,10 +461,9 @@ switch_restored: lfence #ifdef DIAGNOSTIC - .globl _C_LABEL(panic) .Lbogus_proc_pmap: leaq bogus_proc_pmap,%rdi - call _C_LABEL(panic) + call panic int3 /* NOTREACHED */ .pushsection .rodata bogus_proc_pmap: @@ -489,7 +488,7 @@ NENTRY(retpoline_rax) ENTRY(cpu_idle_cycle) RETGUARD_SETUP(cpu_idle_cycle, r11) - movq _C_LABEL(cpu_idle_cycle_fcn),%rax + movq cpu_idle_cycle_fcn,%rax cmpq $0,%rax jne retpoline_rax sti @@ -566,7 +565,7 @@ IDTVEC_NOALIGN(syscall) movq %rsp,P_MD_REGS(%r14) # save pointer to frame andl $~MDP_IRET,P_MD_FLAGS(%r14) movq %rsp,%rdi - call _C_LABEL(syscall) + call syscall .Lsyscall_check_asts: /* Check for ASTs on exit to user mode. */ @@ -576,7 +575,7 @@ IDTVEC_NOALIGN(syscall) CLEAR_ASTPENDING(%r11) sti movq %rsp,%rdi - call _C_LABEL(ast) + call ast jmp .Lsyscall_check_asts 2: @@ -697,7 +696,7 @@ KUTEXT_PAGE_END movl %ebx,%ecx movl CPUVAR(ILEVEL),%r8d xorq %rax,%rax - call _C_LABEL(printf) + call printf #ifdef DDB int $3 #endif /* DDB */ @@ -712,7 +711,7 @@ spl_lowered: NENTRY(proc_trampoline) #ifdef MULTIPROCESSOR - call _C_LABEL(proc_trampoline_mp) + call proc_trampoline_mp #endif movl $IPL_NONE,CPUVAR(ILEVEL) movq %r13,%rdi @@ -754,7 +753,7 @@ GENTRY(intr_user_exit) CLEAR_ASTPENDING(%r11) sti movq %rsp,%rdi - call _C_LABEL(ast) + call ast cli jmp intr_user_exit @@ -851,8 +850,8 @@ KTEXT_PAGE_START CODEPATCH_END(CPTAG_MELTDOWN_NOP) swapgs - .globl _C_LABEL(doreti_iret) -_C_LABEL(doreti_iret): + .globl doreti_iret +doreti_iret: iretq KTEXT_PAGE_END @@ -902,7 +901,7 @@ KTEXT_PAGE_END incl %edi movl %edi,warn_once(%rip) leaq .Lnot_blocked(%rip),%rdi - call _C_LABEL(printf) + call printf #ifdef DDB int $3 #endif /* DDB */ @@ -915,7 +914,7 @@ KTEXT_PAGE_END movl CPUVAR(ILEVEL),%esi xorl %edx,%edx /* always SPL zero for userspace */ xorl %eax,%eax - call _C_LABEL(printf) + call printf #ifdef DDB int $3 #endif /* DDB */ @@ -967,7 +966,7 @@ NENTRY(intr_fast_exit) incl %edi movl %edi,warn_once(%rip) leaq .Lnot_blocked(%rip),%rdi - call _C_LABEL(printf) + call printf #ifdef DDB int $3 #endif /* DDB */ @@ -1072,20 +1071,20 @@ NENTRY(xsetbv_resume) END(xsetbv_user) .section .rodata - .globl _C_LABEL(_xrstor) -_C_LABEL(_xrstor): + .globl _xrstor +_xrstor: xrstor64 (%rdi) - .globl _C_LABEL(_xsave) -_C_LABEL(_xsave): + .globl _xsave +_xsave: xsave64 (%rdi) - .globl _C_LABEL(_xsaveopt) -_C_LABEL(_xsaveopt): + .globl _xsaveopt +_xsaveopt: xsaveopt64 (%rdi) - .globl _C_LABEL(_pcid_set_reuse) -_C_LABEL(_pcid_set_reuse): + .globl _pcid_set_reuse +_pcid_set_reuse: orl $(CR3_REUSE_PCID >> 32),CPUVAR(USER_CR3 + 4) ENTRY(pagezero) @@ -1135,8 +1134,8 @@ END(rdmsr_safe) /* Hypercall page needs to be page aligned */ .text .align NBPG, 0xcc - .globl _C_LABEL(xen_hypercall_page) -_C_LABEL(xen_hypercall_page): + .globl xen_hypercall_page +xen_hypercall_page: .skip 0x1000, 0xcc #endif /* NXEN > 0 */ @@ -1144,7 +1143,7 @@ _C_LABEL(xen_hypercall_page): /* Hypercall page needs to be page aligned */ .text .align NBPG, 0xcc - .globl _C_LABEL(hv_hypercall_page) -_C_LABEL(hv_hypercall_page): + .globl hv_hypercall_page +hv_hypercall_page: .skip 0x1000, 0xcc #endif /* NXEN > 0 */ diff --git a/sys/arch/amd64/amd64/locore0.S b/sys/arch/amd64/amd64/locore0.S index 4ed7d9776fd..fa739e344c1 100644 --- a/sys/arch/amd64/amd64/locore0.S +++ b/sys/arch/amd64/amd64/locore0.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore0.S,v 1.20 2021/12/31 10:44:05 jsg Exp $ */ +/* $OpenBSD: locore0.S,v 1.21 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $ */ /* @@ -124,7 +124,7 @@ #include <dev/isa/isareg.h> #define _RELOC(x) ((x) - KERNBASE) -#define RELOC(x) _RELOC(_C_LABEL(x)) +#define RELOC(x) _RELOC(x) /* * Some hackage to deal with 64bit symbols in 32 bit mode. @@ -132,8 +132,8 @@ */ .text - .globl _C_LABEL(kernel_text) - .set _C_LABEL(kernel_text),KERNTEXTOFF + .globl kernel_text + .set kernel_text,KERNTEXTOFF .code32 @@ -646,15 +646,15 @@ longmode_hi: /* Relocate atdevbase. */ movq $(TABLESIZE+KERNBASE),%rdx addq %rsi,%rdx - movq %rdx,_C_LABEL(atdevbase)(%rip) + movq %rdx,atdevbase(%rip) /* Record start of symbols */ - movq $__kernel_bss_end, _C_LABEL(ssym)(%rip) + movq $__kernel_bss_end, ssym(%rip) /* Set up bootstrap stack. */ leaq (PROC0_STK_OFF)(%rsi),%rax addq %r8,%rax - movq %rax,_C_LABEL(proc0paddr)(%rip) + movq %rax,proc0paddr(%rip) leaq (USPACE-FRAMESIZE)(%rax),%rsp /* @@ -673,18 +673,18 @@ longmode_hi: subq $(NBPG*3), %rdi /* XXX merge these */ - call _C_LABEL(init_x86_64) - call _C_LABEL(main) + call init_x86_64 + call main .section .codepatch,"a" .align 8, 0xcc - .globl _C_LABEL(codepatch_begin) -_C_LABEL(codepatch_begin): + .globl codepatch_begin +codepatch_begin: .previous .section .codepatchend,"a" - .globl _C_LABEL(codepatch_end) -_C_LABEL(codepatch_end): + .globl codepatch_end +codepatch_end: .previous .data diff --git a/sys/arch/amd64/amd64/mptramp.S b/sys/arch/amd64/amd64/mptramp.S index 4bb5dac0b9d..082f1d4a798 100644 --- a/sys/arch/amd64/amd64/mptramp.S +++ b/sys/arch/amd64/amd64/mptramp.S @@ -1,4 +1,4 @@ -/* $OpenBSD: mptramp.S,v 1.21 2022/11/29 02:19:29 guenther Exp $ */ +/* $OpenBSD: mptramp.S,v 1.22 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: mptramp.S,v 1.1 2003/04/26 18:39:30 fvdl Exp $ */ /*- @@ -88,16 +88,15 @@ #define addr32 #endif -#define _TRMP_LABEL(a) a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE -#define _TRMP_OFFSET(a) a = . - _C_LABEL(cpu_spinup_trampoline) +#define _TRMP_LABEL(a) a = . - cpu_spinup_trampoline + MP_TRAMPOLINE +#define _TRMP_OFFSET(a) a = . - cpu_spinup_trampoline -#define _TRMP_DATA_LABEL(a) a = . - _C_LABEL(mp_tramp_data_start) + \ - MP_TRAMP_DATA -#define _TRMP_DATA_OFFSET(a) a = . - _C_LABEL(mp_tramp_data_start) +#define _TRMP_DATA_LABEL(a) a = . - mp_tramp_data_start + MP_TRAMP_DATA +#define _TRMP_DATA_OFFSET(a) a = . - mp_tramp_data_start - .global _C_LABEL(cpu_spinup_trampoline_end) - .global _C_LABEL(mp_tramp_data_start) - .global _C_LABEL(mp_tramp_data_end) + .global cpu_spinup_trampoline_end + .global mp_tramp_data_start + .global mp_tramp_data_end /* * Initial copy of this code gets placed in .rodata, kernel @@ -188,7 +187,7 @@ _TRMP_LABEL(.Lmptramp_longmode) jmp *%rax .type cpu_spinup_trampoline_end,@object -_C_LABEL(cpu_spinup_trampoline_end): #end of code copied to MP_TRAMPOLINE +cpu_spinup_trampoline_end: #end of code copied to MP_TRAMPOLINE END(cpu_spinup_trampoline) .text @@ -207,12 +206,12 @@ GENTRY(cpu_spinup_finish) andl $X2APIC_ID_MASK,%eax jmp 2f 1: - movl _C_LABEL(local_apic)+LAPIC_ID,%eax + movl local_apic+LAPIC_ID,%eax shrl $LAPIC_ID_SHIFT,%eax 2: xorq %rcx,%rcx 3: - movq _C_LABEL(cpu_info)(,%rcx,8),%rdi + movq cpu_info(,%rcx,8),%rdi incq %rcx movl CPU_INFO_APICID(%rdi),%edx cmpl %eax,%edx @@ -233,13 +232,13 @@ GENTRY(cpu_spinup_finish) movq %rax,%cr3 movl $CR0_DEFAULT,%eax movq %rax,%cr0 - call _C_LABEL(cpu_hatch) + call cpu_hatch END(cpu_spinup_finish) /* NOTREACHED */ .section .rodata .type mp_tramp_data_start,@object -_C_LABEL(mp_tramp_data_start): +mp_tramp_data_start: _TRMP_DATA_LABEL(.Lmptramp_jmp64) .long .Lmptramp_longmode .word GSEL(GCODE_SEL, SEL_KPL) @@ -268,5 +267,5 @@ _TRMP_DATA_LABEL(.Lmptramp_gdt64_desc) .long .Lmptramp_gdt64 .type mp_tramp_data_end,@object -_C_LABEL(mp_tramp_data_end): +mp_tramp_data_end: END(mp_tramp_data_start) diff --git a/sys/arch/amd64/amd64/spl.S b/sys/arch/amd64/amd64/spl.S index 84c6c6f5450..b2327d0a72e 100644 --- a/sys/arch/amd64/amd64/spl.S +++ b/sys/arch/amd64/amd64/spl.S @@ -1,4 +1,4 @@ -/* $OpenBSD: spl.S,v 1.18 2021/09/04 22:15:33 bluhm Exp $ */ +/* $OpenBSD: spl.S,v 1.19 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: spl.S,v 1.3 2004/06/28 09:13:11 fvdl Exp $ */ /* @@ -80,10 +80,7 @@ /* * XXXX TODO */ - .globl _C_LABEL(splhigh), _C_LABEL(splx) - - .align 16, 0xcc -_C_LABEL(splhigh): +_ENTRY(splhigh) RETGUARD_SETUP(splhigh, r11) movl $IPL_HIGH,%eax xchgl %eax,CPUVAR(ILEVEL) @@ -91,13 +88,12 @@ _C_LABEL(splhigh): ret lfence - .align 16, 0xcc -_C_LABEL(splx): +_ENTRY(splx) RETGUARD_SETUP(splx, r11) movl 4(%esp),%eax movl %eax,CPUVAR(ILEVEL) testl %eax,%eax - jnz _C_LABEL(Xspllower) + jnz Xspllower RETGUARD_CHECK(splx, r11) ret lfence @@ -144,6 +140,7 @@ KIDTVEC(spllower) movq CPUVAR(ISOURCES)(,%rax,8),%rax movq IS_RECURSE(%rax),%rax jmp retpoline_rax +END(Xspllower) /* * Handle return from interrupt after device handler finishes. @@ -170,3 +167,4 @@ KIDTVEC(doreti) movq CPUVAR(ISOURCES)(,%rax, 8),%rax movq IS_RESUME(%rax),%rax jmp retpoline_rax +END(Xdoreti) diff --git a/sys/arch/amd64/amd64/vector.S b/sys/arch/amd64/amd64/vector.S index 825a661477c..160a267c09a 100644 --- a/sys/arch/amd64/amd64/vector.S +++ b/sys/arch/amd64/amd64/vector.S @@ -1,4 +1,4 @@ -/* $OpenBSD: vector.S,v 1.86 2021/09/04 22:15:33 bluhm Exp $ */ +/* $OpenBSD: vector.S,v 1.87 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: vector.S,v 1.5 2004/06/28 09:13:11 fvdl Exp $ */ /* @@ -99,7 +99,7 @@ /*****************************************************************************/ -#define TRAP(a) pushq $(a) ; jmp _C_LABEL(alltraps) +#define TRAP(a) pushq $(a) ; jmp alltraps #define ZTRAP(a) pushq $0 ; TRAP(a) IDTVEC(trap00) @@ -144,7 +144,7 @@ INTRENTRY_LABEL(calltrap_specstk): cld SMAP_CLAC movq %rsp,%rdi - call _C_LABEL(kerntrap) + call kerntrap movl $MSR_GSBASE,%ecx # restore GS.base movq %r12,%rax movq %r13,%rdx @@ -188,9 +188,9 @@ INTRENTRY_LABEL(trap03): sti cld SMAP_CLAC - leaq _C_LABEL(dt_prov_kprobe), %rdi + leaq dt_prov_kprobe, %rdi movq %rsp, %rsi - call _C_LABEL(dt_prov_kprobe_hook) + call dt_prov_kprobe_hook cmpl $0, %eax je .Lreal_kern_trap @@ -376,22 +376,14 @@ IDTVEC_NOALIGN(trap1f) .globl Xexceptions .type Xexceptions,@object Xexceptions: - .quad _C_LABEL(Xtrap00), _C_LABEL(Xtrap01) - .quad _C_LABEL(Xtrap02), _C_LABEL(Xtrap03) - .quad _C_LABEL(Xtrap04), _C_LABEL(Xtrap05) - .quad _C_LABEL(Xtrap06), _C_LABEL(Xtrap07) - .quad _C_LABEL(Xtrap08), _C_LABEL(Xtrap09) - .quad _C_LABEL(Xtrap0a), _C_LABEL(Xtrap0b) - .quad _C_LABEL(Xtrap0c), _C_LABEL(Xtrap0d) - .quad _C_LABEL(Xtrap0e), _C_LABEL(Xtrap0f) - .quad _C_LABEL(Xtrap10), _C_LABEL(Xtrap11) - .quad _C_LABEL(Xtrap12), _C_LABEL(Xtrap13) - .quad _C_LABEL(Xtrap14), _C_LABEL(Xtrap15) - .quad _C_LABEL(Xtrap16), _C_LABEL(Xtrap17) - .quad _C_LABEL(Xtrap18), _C_LABEL(Xtrap19) - .quad _C_LABEL(Xtrap1a), _C_LABEL(Xtrap1b) - .quad _C_LABEL(Xtrap1c), _C_LABEL(Xtrap1d) - .quad _C_LABEL(Xtrap1e), _C_LABEL(Xtrap1f) + .quad Xtrap00, Xtrap01, Xtrap02, Xtrap03 + .quad Xtrap04, Xtrap05, Xtrap06, Xtrap07 + .quad Xtrap08, Xtrap09, Xtrap0a, Xtrap0b + .quad Xtrap0c, Xtrap0d, Xtrap0e, Xtrap0f + .quad Xtrap10, Xtrap11, Xtrap12, Xtrap13 + .quad Xtrap14, Xtrap15, Xtrap16, Xtrap17 + .quad Xtrap18, Xtrap19, Xtrap1a, Xtrap1b + .quad Xtrap1c, Xtrap1d, Xtrap1e, Xtrap1f END(Xexceptions) /* @@ -448,7 +440,7 @@ GENTRY(alltraps) .globl recall_trap recall_trap: movq %rsp, %rdi - call _C_LABEL(usertrap) + call usertrap cli jmp intr_user_exit END(alltraps) @@ -473,7 +465,7 @@ GENTRY(alltraps_kern_meltdown) movl CPUVAR(ILEVEL),%ebx #endif /* DIAGNOSTIC */ movq %rsp, %rdi - call _C_LABEL(kerntrap) + call kerntrap 2: cli #ifndef DIAGNOSTIC INTRFASTEXIT @@ -486,7 +478,7 @@ GENTRY(alltraps_kern_meltdown) movl CPUVAR(ILEVEL),%esi movl %ebx,%edx xorq %rax,%rax - call _C_LABEL(printf) + call printf #ifdef DDB int $3 #endif /* DDB */ @@ -549,7 +541,7 @@ END(Xrecurse_lapic_ipi) IDTVEC(intr_lapic_ipi) INTRENTRY(intr_lapic_ipi) CODEPATCH_START - movl $0,_C_LABEL(local_apic)+LAPIC_EOI + movl $0,local_apic+LAPIC_EOI CODEPATCH_END(CPTAG_EOI) movl CPUVAR(ILEVEL),%ebx cmpl $IPL_IPI,%ebx @@ -563,8 +555,8 @@ KIDTVEC_FALLTHROUGH(resume_lapic_ipi) cld SMAP_CLAC movq %rbx,IF_PPL(%rsp) - call _C_LABEL(x86_ipi_handler) - jmp _C_LABEL(Xdoreti) + call x86_ipi_handler + jmp Xdoreti 2: movq $(1 << LIR_IPI),%rax orq %rax,CPUVAR(IPENDING) @@ -755,7 +747,7 @@ END(Xrecurse_lapic_ltimer) IDTVEC(intr_lapic_ltimer) INTRENTRY(intr_lapic_ltimer) CODEPATCH_START - movl $0,_C_LABEL(local_apic)+LAPIC_EOI + movl $0,local_apic+LAPIC_EOI CODEPATCH_END(CPTAG_EOI) movl CPUVAR(ILEVEL),%ebx cmpl $IPL_CLOCK,%ebx @@ -770,8 +762,8 @@ KIDTVEC_FALLTHROUGH(resume_lapic_ltimer) SMAP_CLAC movq %rbx,IF_PPL(%rsp) xorq %rdi,%rdi - call _C_LABEL(lapic_clockintr) - jmp _C_LABEL(Xdoreti) + call lapic_clockintr + jmp Xdoreti 2: movq $(1 << LIR_TIMER),%rax orq %rax,CPUVAR(IPENDING) @@ -789,7 +781,7 @@ KIDTVEC(recurse_xen_upcall) END(Xrecurse_xen_upcall) IDTVEC(intr_xen_upcall) INTRENTRY(intr_xen_upcall) - call _C_LABEL(xen_intr_ack) + call xen_intr_ack movl CPUVAR(ILEVEL),%ebx cmpl $IPL_NET,%ebx jae 2f @@ -802,8 +794,8 @@ KIDTVEC_FALLTHROUGH(resume_xen_upcall) cld SMAP_CLAC movq %rbx,IF_PPL(%rsp) - call _C_LABEL(xen_intr) - jmp _C_LABEL(Xdoreti) + call xen_intr + jmp Xdoreti 2: movq $(1 << LIR_XEN),%rax orq %rax,CPUVAR(IPENDING) @@ -834,8 +826,8 @@ KIDTVEC_FALLTHROUGH(resume_hyperv_upcall) cld SMAP_CLAC movq %rbx,IF_PPL(%rsp) - call _C_LABEL(hv_intr) - jmp _C_LABEL(Xdoreti) + call hv_intr + jmp Xdoreti 2: movq $(1 << LIR_HYPERV),%rax orq %rax,CPUVAR(IPENDING) @@ -868,7 +860,7 @@ IDTVEC(intr_##name##num) ;\ movq CPUVAR(ISOURCES) + (num) * 8, %r14 ;\ mask(num) /* mask it in hardware */ ;\ early_ack(num) /* and allow other intrs */ ;\ - incl _C_LABEL(uvmexp)+V_INTR /* statistical info */ ;\ + incl uvmexp+V_INTR /* statistical info */ ;\ testq %r14,%r14 ;\ jz 9f /* stray */ ;\ movl IS_MAXLEVEL(%r14),%ebx ;\ @@ -890,11 +882,11 @@ IDTVEC(intr_##name##num) ;\ movl %r12d,CPUVAR(ILEVEL) ;\ movq %rbx, %rsi ;\ movq %rsp, %rdi ;\ - call _C_LABEL(intr_handler) /* call it */ ;\ + call intr_handler /* call it */ ;\ orl %eax,%eax /* should it be counted? */ ;\ jz 4f /* no, skip it */ ;\ incq IH_COUNT(%rbx) /* count the intrs */ ;\ - cmpl $0,_C_LABEL(intr_shared_edge) ;\ + cmpl $0,intr_shared_edge ;\ jne 4f /* if no shared edges ... */ ;\ orl %eax,%eax /* 1 means stop trying */ ;\ jns 5f ;\ @@ -906,7 +898,7 @@ IDTVEC(intr_##name##num) ;\ unmask(num) /* unmask it in hardware */ ;\ late_ack(num) ;\ sti ;\ - jmp _C_LABEL(Xdoreti) /* lower spl and do ASTs */ ;\ + jmp Xdoreti /* lower spl and do ASTs */ ;\ 7: /* current IPL > handler's ih_level */ \ cli ;\ movq $(1 << num),%rax ;\ @@ -914,7 +906,7 @@ IDTVEC(intr_##name##num) ;\ level_mask(num) ;\ late_ack(num) ;\ sti ;\ - jmp _C_LABEL(Xdoreti) /* lower spl and do ASTs */ ;\ + jmp Xdoreti /* lower spl and do ASTs */ ;\ 10: /* currently masked */ \ cli ;\ movq $(1 << num),%rax ;\ @@ -1104,308 +1096,164 @@ INTRSTUB(ioapic_level,63,voidop,ioapic_asm_ack,voidop,ioapic_unmask,ioapic_mask) .section .rodata - .globl _C_LABEL(i8259_stubs) - .type _C_LABEL(i8259_stubs),@object -_C_LABEL(i8259_stubs): - .quad _C_LABEL(Xintr_legacy0), _C_LABEL(Xrecurse_legacy0) - .quad _C_LABEL(Xresume_legacy0) - .quad _C_LABEL(Xintr_legacy1), _C_LABEL(Xrecurse_legacy1) - .quad _C_LABEL(Xresume_legacy1) - .quad _C_LABEL(Xintr_legacy2), _C_LABEL(Xrecurse_legacy2) - .quad _C_LABEL(Xresume_legacy2) - .quad _C_LABEL(Xintr_legacy3), _C_LABEL(Xrecurse_legacy3) - .quad _C_LABEL(Xresume_legacy3) - .quad _C_LABEL(Xintr_legacy4), _C_LABEL(Xrecurse_legacy4) - .quad _C_LABEL(Xresume_legacy4) - .quad _C_LABEL(Xintr_legacy5), _C_LABEL(Xrecurse_legacy5) - .quad _C_LABEL(Xresume_legacy5) - .quad _C_LABEL(Xintr_legacy6), _C_LABEL(Xrecurse_legacy6) - .quad _C_LABEL(Xresume_legacy6) - .quad _C_LABEL(Xintr_legacy7), _C_LABEL(Xrecurse_legacy7) - .quad _C_LABEL(Xresume_legacy7) - .quad _C_LABEL(Xintr_legacy8), _C_LABEL(Xrecurse_legacy8) - .quad _C_LABEL(Xresume_legacy8) - .quad _C_LABEL(Xintr_legacy9), _C_LABEL(Xrecurse_legacy9) - .quad _C_LABEL(Xresume_legacy9) - .quad _C_LABEL(Xintr_legacy10), _C_LABEL(Xrecurse_legacy10) - .quad _C_LABEL(Xresume_legacy10) - .quad _C_LABEL(Xintr_legacy11), _C_LABEL(Xrecurse_legacy11) - .quad _C_LABEL(Xresume_legacy11) - .quad _C_LABEL(Xintr_legacy12), _C_LABEL(Xrecurse_legacy12) - .quad _C_LABEL(Xresume_legacy12) - .quad _C_LABEL(Xintr_legacy13), _C_LABEL(Xrecurse_legacy13) - .quad _C_LABEL(Xresume_legacy13) - .quad _C_LABEL(Xintr_legacy14), _C_LABEL(Xrecurse_legacy14) - .quad _C_LABEL(Xresume_legacy14) - .quad _C_LABEL(Xintr_legacy15), _C_LABEL(Xrecurse_legacy15) - .quad _C_LABEL(Xresume_legacy15) + .globl i8259_stubs + .type i8259_stubs,@object +i8259_stubs: + .quad Xintr_legacy0, Xrecurse_legacy0, Xresume_legacy0 + .quad Xintr_legacy1, Xrecurse_legacy1, Xresume_legacy1 + .quad Xintr_legacy2, Xrecurse_legacy2, Xresume_legacy2 + .quad Xintr_legacy3, Xrecurse_legacy3, Xresume_legacy3 + .quad Xintr_legacy4, Xrecurse_legacy4, Xresume_legacy4 + .quad Xintr_legacy5, Xrecurse_legacy5, Xresume_legacy5 + .quad Xintr_legacy6, Xrecurse_legacy6, Xresume_legacy6 + .quad Xintr_legacy7, Xrecurse_legacy7, Xresume_legacy7 + .quad Xintr_legacy8, Xrecurse_legacy8, Xresume_legacy8 + .quad Xintr_legacy9, Xrecurse_legacy9, Xresume_legacy9 + .quad Xintr_legacy10, Xrecurse_legacy10, Xresume_legacy10 + .quad Xintr_legacy11, Xrecurse_legacy11, Xresume_legacy11 + .quad Xintr_legacy12, Xrecurse_legacy12, Xresume_legacy12 + .quad Xintr_legacy13, Xrecurse_legacy13, Xresume_legacy13 + .quad Xintr_legacy14, Xrecurse_legacy14, Xresume_legacy14 + .quad Xintr_legacy15, Xrecurse_legacy15, Xresume_legacy15 END(i8259_stubs) #if NIOAPIC > 0 - .globl _C_LABEL(ioapic_edge_stubs) - .type _C_LABEL(ioapic_edge_stubs),@object -_C_LABEL(ioapic_edge_stubs): - .quad _C_LABEL(Xintr_ioapic_edge0), _C_LABEL(Xrecurse_ioapic_edge0) - .quad _C_LABEL(Xresume_ioapic_edge0) - .quad _C_LABEL(Xintr_ioapic_edge1), _C_LABEL(Xrecurse_ioapic_edge1) - .quad _C_LABEL(Xresume_ioapic_edge1) - .quad _C_LABEL(Xintr_ioapic_edge2), _C_LABEL(Xrecurse_ioapic_edge2) - .quad _C_LABEL(Xresume_ioapic_edge2) - .quad _C_LABEL(Xintr_ioapic_edge3), _C_LABEL(Xrecurse_ioapic_edge3) - .quad _C_LABEL(Xresume_ioapic_edge3) - .quad _C_LABEL(Xintr_ioapic_edge4), _C_LABEL(Xrecurse_ioapic_edge4) - .quad _C_LABEL(Xresume_ioapic_edge4) - .quad _C_LABEL(Xintr_ioapic_edge5), _C_LABEL(Xrecurse_ioapic_edge5) - .quad _C_LABEL(Xresume_ioapic_edge5) - .quad _C_LABEL(Xintr_ioapic_edge6), _C_LABEL(Xrecurse_ioapic_edge6) - .quad _C_LABEL(Xresume_ioapic_edge6) - .quad _C_LABEL(Xintr_ioapic_edge7), _C_LABEL(Xrecurse_ioapic_edge7) - .quad _C_LABEL(Xresume_ioapic_edge7) - .quad _C_LABEL(Xintr_ioapic_edge8), _C_LABEL(Xrecurse_ioapic_edge8) - .quad _C_LABEL(Xresume_ioapic_edge8) - .quad _C_LABEL(Xintr_ioapic_edge9), _C_LABEL(Xrecurse_ioapic_edge9) - .quad _C_LABEL(Xresume_ioapic_edge9) - .quad _C_LABEL(Xintr_ioapic_edge10), _C_LABEL(Xrecurse_ioapic_edge10) - .quad _C_LABEL(Xresume_ioapic_edge10) - .quad _C_LABEL(Xintr_ioapic_edge11), _C_LABEL(Xrecurse_ioapic_edge11) - .quad _C_LABEL(Xresume_ioapic_edge11) - .quad _C_LABEL(Xintr_ioapic_edge12), _C_LABEL(Xrecurse_ioapic_edge12) - .quad _C_LABEL(Xresume_ioapic_edge12) - .quad _C_LABEL(Xintr_ioapic_edge13), _C_LABEL(Xrecurse_ioapic_edge13) - .quad _C_LABEL(Xresume_ioapic_edge13) - .quad _C_LABEL(Xintr_ioapic_edge14), _C_LABEL(Xrecurse_ioapic_edge14) - .quad _C_LABEL(Xresume_ioapic_edge14) - .quad _C_LABEL(Xintr_ioapic_edge15), _C_LABEL(Xrecurse_ioapic_edge15) - .quad _C_LABEL(Xresume_ioapic_edge15) - .quad _C_LABEL(Xintr_ioapic_edge16), _C_LABEL(Xrecurse_ioapic_edge16) - .quad _C_LABEL(Xresume_ioapic_edge16) - .quad _C_LABEL(Xintr_ioapic_edge17), _C_LABEL(Xrecurse_ioapic_edge17) - .quad _C_LABEL(Xresume_ioapic_edge17) - .quad _C_LABEL(Xintr_ioapic_edge18), _C_LABEL(Xrecurse_ioapic_edge18) - .quad _C_LABEL(Xresume_ioapic_edge18) - .quad _C_LABEL(Xintr_ioapic_edge19), _C_LABEL(Xrecurse_ioapic_edge19) - .quad _C_LABEL(Xresume_ioapic_edge19) - .quad _C_LABEL(Xintr_ioapic_edge20), _C_LABEL(Xrecurse_ioapic_edge20) - .quad _C_LABEL(Xresume_ioapic_edge20) - .quad _C_LABEL(Xintr_ioapic_edge21), _C_LABEL(Xrecurse_ioapic_edge21) - .quad _C_LABEL(Xresume_ioapic_edge21) - .quad _C_LABEL(Xintr_ioapic_edge22), _C_LABEL(Xrecurse_ioapic_edge22) - .quad _C_LABEL(Xresume_ioapic_edge22) - .quad _C_LABEL(Xintr_ioapic_edge23), _C_LABEL(Xrecurse_ioapic_edge23) - .quad _C_LABEL(Xresume_ioapic_edge23) - .quad _C_LABEL(Xintr_ioapic_edge24), _C_LABEL(Xrecurse_ioapic_edge24) - .quad _C_LABEL(Xresume_ioapic_edge24) - .quad _C_LABEL(Xintr_ioapic_edge25), _C_LABEL(Xrecurse_ioapic_edge25) - .quad _C_LABEL(Xresume_ioapic_edge25) - .quad _C_LABEL(Xintr_ioapic_edge26), _C_LABEL(Xrecurse_ioapic_edge26) - .quad _C_LABEL(Xresume_ioapic_edge26) - .quad _C_LABEL(Xintr_ioapic_edge27), _C_LABEL(Xrecurse_ioapic_edge27) - .quad _C_LABEL(Xresume_ioapic_edge27) - .quad _C_LABEL(Xintr_ioapic_edge28), _C_LABEL(Xrecurse_ioapic_edge28) - .quad _C_LABEL(Xresume_ioapic_edge28) - .quad _C_LABEL(Xintr_ioapic_edge29), _C_LABEL(Xrecurse_ioapic_edge29) - .quad _C_LABEL(Xresume_ioapic_edge29) - .quad _C_LABEL(Xintr_ioapic_edge30), _C_LABEL(Xrecurse_ioapic_edge30) - .quad _C_LABEL(Xresume_ioapic_edge30) - .quad _C_LABEL(Xintr_ioapic_edge31), _C_LABEL(Xrecurse_ioapic_edge31) - .quad _C_LABEL(Xresume_ioapic_edge31) - .quad _C_LABEL(Xintr_ioapic_edge32), _C_LABEL(Xrecurse_ioapic_edge32) - .quad _C_LABEL(Xresume_ioapic_edge32) - .quad _C_LABEL(Xintr_ioapic_edge33), _C_LABEL(Xrecurse_ioapic_edge33) - .quad _C_LABEL(Xresume_ioapic_edge33) - .quad _C_LABEL(Xintr_ioapic_edge34), _C_LABEL(Xrecurse_ioapic_edge34) - .quad _C_LABEL(Xresume_ioapic_edge34) - .quad _C_LABEL(Xintr_ioapic_edge35), _C_LABEL(Xrecurse_ioapic_edge35) - .quad _C_LABEL(Xresume_ioapic_edge35) - .quad _C_LABEL(Xintr_ioapic_edge36), _C_LABEL(Xrecurse_ioapic_edge36) - .quad _C_LABEL(Xresume_ioapic_edge36) - .quad _C_LABEL(Xintr_ioapic_edge37), _C_LABEL(Xrecurse_ioapic_edge37) - .quad _C_LABEL(Xresume_ioapic_edge37) - .quad _C_LABEL(Xintr_ioapic_edge38), _C_LABEL(Xrecurse_ioapic_edge38) - .quad _C_LABEL(Xresume_ioapic_edge38) - .quad _C_LABEL(Xintr_ioapic_edge39), _C_LABEL(Xrecurse_ioapic_edge39) - .quad _C_LABEL(Xresume_ioapic_edge39) - .quad _C_LABEL(Xintr_ioapic_edge40), _C_LABEL(Xrecurse_ioapic_edge40) - .quad _C_LABEL(Xresume_ioapic_edge40) - .quad _C_LABEL(Xintr_ioapic_edge41), _C_LABEL(Xrecurse_ioapic_edge41) - .quad _C_LABEL(Xresume_ioapic_edge41) - .quad _C_LABEL(Xintr_ioapic_edge42), _C_LABEL(Xrecurse_ioapic_edge42) - .quad _C_LABEL(Xresume_ioapic_edge42) - .quad _C_LABEL(Xintr_ioapic_edge43), _C_LABEL(Xrecurse_ioapic_edge43) - .quad _C_LABEL(Xresume_ioapic_edge43) - .quad _C_LABEL(Xintr_ioapic_edge44), _C_LABEL(Xrecurse_ioapic_edge44) - .quad _C_LABEL(Xresume_ioapic_edge44) - .quad _C_LABEL(Xintr_ioapic_edge45), _C_LABEL(Xrecurse_ioapic_edge45) - .quad _C_LABEL(Xresume_ioapic_edge45) - .quad _C_LABEL(Xintr_ioapic_edge46), _C_LABEL(Xrecurse_ioapic_edge46) - .quad _C_LABEL(Xresume_ioapic_edge46) - .quad _C_LABEL(Xintr_ioapic_edge47), _C_LABEL(Xrecurse_ioapic_edge47) - .quad _C_LABEL(Xresume_ioapic_edge47) - .quad _C_LABEL(Xintr_ioapic_edge48), _C_LABEL(Xrecurse_ioapic_edge48) - .quad _C_LABEL(Xresume_ioapic_edge48) - .quad _C_LABEL(Xintr_ioapic_edge49), _C_LABEL(Xrecurse_ioapic_edge49) - .quad _C_LABEL(Xresume_ioapic_edge49) - .quad _C_LABEL(Xintr_ioapic_edge50), _C_LABEL(Xrecurse_ioapic_edge50) - .quad _C_LABEL(Xresume_ioapic_edge50) - .quad _C_LABEL(Xintr_ioapic_edge51), _C_LABEL(Xrecurse_ioapic_edge51) - .quad _C_LABEL(Xresume_ioapic_edge51) - .quad _C_LABEL(Xintr_ioapic_edge52), _C_LABEL(Xrecurse_ioapic_edge52) - .quad _C_LABEL(Xresume_ioapic_edge52) - .quad _C_LABEL(Xintr_ioapic_edge53), _C_LABEL(Xrecurse_ioapic_edge53) - .quad _C_LABEL(Xresume_ioapic_edge53) - .quad _C_LABEL(Xintr_ioapic_edge54), _C_LABEL(Xrecurse_ioapic_edge54) - .quad _C_LABEL(Xresume_ioapic_edge54) - .quad _C_LABEL(Xintr_ioapic_edge55), _C_LABEL(Xrecurse_ioapic_edge55) - .quad _C_LABEL(Xresume_ioapic_edge55) - .quad _C_LABEL(Xintr_ioapic_edge56), _C_LABEL(Xrecurse_ioapic_edge56) - .quad _C_LABEL(Xresume_ioapic_edge56) - .quad _C_LABEL(Xintr_ioapic_edge57), _C_LABEL(Xrecurse_ioapic_edge57) - .quad _C_LABEL(Xresume_ioapic_edge57) - .quad _C_LABEL(Xintr_ioapic_edge58), _C_LABEL(Xrecurse_ioapic_edge58) - .quad _C_LABEL(Xresume_ioapic_edge58) - .quad _C_LABEL(Xintr_ioapic_edge59), _C_LABEL(Xrecurse_ioapic_edge59) - .quad _C_LABEL(Xresume_ioapic_edge59) - .quad _C_LABEL(Xintr_ioapic_edge60), _C_LABEL(Xrecurse_ioapic_edge60) - .quad _C_LABEL(Xresume_ioapic_edge60) - .quad _C_LABEL(Xintr_ioapic_edge61), _C_LABEL(Xrecurse_ioapic_edge61) - .quad _C_LABEL(Xresume_ioapic_edge61) - .quad _C_LABEL(Xintr_ioapic_edge62), _C_LABEL(Xrecurse_ioapic_edge62) - .quad _C_LABEL(Xresume_ioapic_edge62) - .quad _C_LABEL(Xintr_ioapic_edge63), _C_LABEL(Xrecurse_ioapic_edge63) - .quad _C_LABEL(Xresume_ioapic_edge63) + .globl ioapic_edge_stubs + .type ioapic_edge_stubs,@object +ioapic_edge_stubs: + .quad Xintr_ioapic_edge0, Xrecurse_ioapic_edge0, Xresume_ioapic_edge0 + .quad Xintr_ioapic_edge1, Xrecurse_ioapic_edge1, Xresume_ioapic_edge1 + .quad Xintr_ioapic_edge2, Xrecurse_ioapic_edge2, Xresume_ioapic_edge2 + .quad Xintr_ioapic_edge3, Xrecurse_ioapic_edge3, Xresume_ioapic_edge3 + .quad Xintr_ioapic_edge4, Xrecurse_ioapic_edge4, Xresume_ioapic_edge4 + .quad Xintr_ioapic_edge5, Xrecurse_ioapic_edge5, Xresume_ioapic_edge5 + .quad Xintr_ioapic_edge6, Xrecurse_ioapic_edge6, Xresume_ioapic_edge6 + .quad Xintr_ioapic_edge7, Xrecurse_ioapic_edge7, Xresume_ioapic_edge7 + .quad Xintr_ioapic_edge8, Xrecurse_ioapic_edge8, Xresume_ioapic_edge8 + .quad Xintr_ioapic_edge9, Xrecurse_ioapic_edge9, Xresume_ioapic_edge9 + .quad Xintr_ioapic_edge10, Xrecurse_ioapic_edge10, Xresume_ioapic_edge10 + .quad Xintr_ioapic_edge11, Xrecurse_ioapic_edge11, Xresume_ioapic_edge11 + .quad Xintr_ioapic_edge12, Xrecurse_ioapic_edge12, Xresume_ioapic_edge12 + .quad Xintr_ioapic_edge13, Xrecurse_ioapic_edge13, Xresume_ioapic_edge13 + .quad Xintr_ioapic_edge14, Xrecurse_ioapic_edge14, Xresume_ioapic_edge14 + .quad Xintr_ioapic_edge15, Xrecurse_ioapic_edge15, Xresume_ioapic_edge15 + .quad Xintr_ioapic_edge16, Xrecurse_ioapic_edge16, Xresume_ioapic_edge16 + .quad Xintr_ioapic_edge17, Xrecurse_ioapic_edge17, Xresume_ioapic_edge17 + .quad Xintr_ioapic_edge18, Xrecurse_ioapic_edge18, Xresume_ioapic_edge18 + .quad Xintr_ioapic_edge19, Xrecurse_ioapic_edge19, Xresume_ioapic_edge19 + .quad Xintr_ioapic_edge20, Xrecurse_ioapic_edge20, Xresume_ioapic_edge20 + .quad Xintr_ioapic_edge21, Xrecurse_ioapic_edge21, Xresume_ioapic_edge21 + .quad Xintr_ioapic_edge22, Xrecurse_ioapic_edge22, Xresume_ioapic_edge22 + .quad Xintr_ioapic_edge23, Xrecurse_ioapic_edge23, Xresume_ioapic_edge23 + .quad Xintr_ioapic_edge24, Xrecurse_ioapic_edge24, Xresume_ioapic_edge24 + .quad Xintr_ioapic_edge25, Xrecurse_ioapic_edge25, Xresume_ioapic_edge25 + .quad Xintr_ioapic_edge26, Xrecurse_ioapic_edge26, Xresume_ioapic_edge26 + .quad Xintr_ioapic_edge27, Xrecurse_ioapic_edge27, Xresume_ioapic_edge27 + .quad Xintr_ioapic_edge28, Xrecurse_ioapic_edge28, Xresume_ioapic_edge28 + .quad Xintr_ioapic_edge29, Xrecurse_ioapic_edge29, Xresume_ioapic_edge29 + .quad Xintr_ioapic_edge30, Xrecurse_ioapic_edge30, Xresume_ioapic_edge30 + .quad Xintr_ioapic_edge31, Xrecurse_ioapic_edge31, Xresume_ioapic_edge31 + .quad Xintr_ioapic_edge32, Xrecurse_ioapic_edge32, Xresume_ioapic_edge32 + .quad Xintr_ioapic_edge33, Xrecurse_ioapic_edge33, Xresume_ioapic_edge33 + .quad Xintr_ioapic_edge34, Xrecurse_ioapic_edge34, Xresume_ioapic_edge34 + .quad Xintr_ioapic_edge35, Xrecurse_ioapic_edge35, Xresume_ioapic_edge35 + .quad Xintr_ioapic_edge36, Xrecurse_ioapic_edge36, Xresume_ioapic_edge36 + .quad Xintr_ioapic_edge37, Xrecurse_ioapic_edge37, Xresume_ioapic_edge37 + .quad Xintr_ioapic_edge38, Xrecurse_ioapic_edge38, Xresume_ioapic_edge38 + .quad Xintr_ioapic_edge39, Xrecurse_ioapic_edge39, Xresume_ioapic_edge39 + .quad Xintr_ioapic_edge40, Xrecurse_ioapic_edge40, Xresume_ioapic_edge40 + .quad Xintr_ioapic_edge41, Xrecurse_ioapic_edge41, Xresume_ioapic_edge41 + .quad Xintr_ioapic_edge42, Xrecurse_ioapic_edge42, Xresume_ioapic_edge42 + .quad Xintr_ioapic_edge43, Xrecurse_ioapic_edge43, Xresume_ioapic_edge43 + .quad Xintr_ioapic_edge44, Xrecurse_ioapic_edge44, Xresume_ioapic_edge44 + .quad Xintr_ioapic_edge45, Xrecurse_ioapic_edge45, Xresume_ioapic_edge45 + .quad Xintr_ioapic_edge46, Xrecurse_ioapic_edge46, Xresume_ioapic_edge46 + .quad Xintr_ioapic_edge47, Xrecurse_ioapic_edge47, Xresume_ioapic_edge47 + .quad Xintr_ioapic_edge48, Xrecurse_ioapic_edge48, Xresume_ioapic_edge48 + .quad Xintr_ioapic_edge49, Xrecurse_ioapic_edge49, Xresume_ioapic_edge49 + .quad Xintr_ioapic_edge50, Xrecurse_ioapic_edge50, Xresume_ioapic_edge50 + .quad Xintr_ioapic_edge51, Xrecurse_ioapic_edge51, Xresume_ioapic_edge51 + .quad Xintr_ioapic_edge52, Xrecurse_ioapic_edge52, Xresume_ioapic_edge52 + .quad Xintr_ioapic_edge53, Xrecurse_ioapic_edge53, Xresume_ioapic_edge53 + .quad Xintr_ioapic_edge54, Xrecurse_ioapic_edge54, Xresume_ioapic_edge54 + .quad Xintr_ioapic_edge55, Xrecurse_ioapic_edge55, Xresume_ioapic_edge55 + .quad Xintr_ioapic_edge56, Xrecurse_ioapic_edge56, Xresume_ioapic_edge56 + .quad Xintr_ioapic_edge57, Xrecurse_ioapic_edge57, Xresume_ioapic_edge57 + .quad Xintr_ioapic_edge58, Xrecurse_ioapic_edge58, Xresume_ioapic_edge58 + .quad Xintr_ioapic_edge59, Xrecurse_ioapic_edge59, Xresume_ioapic_edge59 + .quad Xintr_ioapic_edge60, Xrecurse_ioapic_edge60, Xresume_ioapic_edge60 + .quad Xintr_ioapic_edge61, Xrecurse_ioapic_edge61, Xresume_ioapic_edge61 + .quad Xintr_ioapic_edge62, Xrecurse_ioapic_edge62, Xresume_ioapic_edge62 + .quad Xintr_ioapic_edge63, Xrecurse_ioapic_edge63, Xresume_ioapic_edge63 END(ioapic_edge_stubs) - .globl _C_LABEL(ioapic_level_stubs) - .type _C_LABEL(ioapic_level_stubs),@object -_C_LABEL(ioapic_level_stubs): - .quad _C_LABEL(Xintr_ioapic_level0), _C_LABEL(Xrecurse_ioapic_level0) - .quad _C_LABEL(Xresume_ioapic_level0) - .quad _C_LABEL(Xintr_ioapic_level1), _C_LABEL(Xrecurse_ioapic_level1) - .quad _C_LABEL(Xresume_ioapic_level1) - .quad _C_LABEL(Xintr_ioapic_level2), _C_LABEL(Xrecurse_ioapic_level2) - .quad _C_LABEL(Xresume_ioapic_level2) - .quad _C_LABEL(Xintr_ioapic_level3), _C_LABEL(Xrecurse_ioapic_level3) - .quad _C_LABEL(Xresume_ioapic_level3) - .quad _C_LABEL(Xintr_ioapic_level4), _C_LABEL(Xrecurse_ioapic_level4) - .quad _C_LABEL(Xresume_ioapic_level4) - .quad _C_LABEL(Xintr_ioapic_level5), _C_LABEL(Xrecurse_ioapic_level5) - .quad _C_LABEL(Xresume_ioapic_level5) - .quad _C_LABEL(Xintr_ioapic_level6), _C_LABEL(Xrecurse_ioapic_level6) - .quad _C_LABEL(Xresume_ioapic_level6) - .quad _C_LABEL(Xintr_ioapic_level7), _C_LABEL(Xrecurse_ioapic_level7) - .quad _C_LABEL(Xresume_ioapic_level7) - .quad _C_LABEL(Xintr_ioapic_level8), _C_LABEL(Xrecurse_ioapic_level8) - .quad _C_LABEL(Xresume_ioapic_level8) - .quad _C_LABEL(Xintr_ioapic_level9), _C_LABEL(Xrecurse_ioapic_level9) - .quad _C_LABEL(Xresume_ioapic_level9) - .quad _C_LABEL(Xintr_ioapic_level10), _C_LABEL(Xrecurse_ioapic_level10) - .quad _C_LABEL(Xresume_ioapic_level10) - .quad _C_LABEL(Xintr_ioapic_level11), _C_LABEL(Xrecurse_ioapic_level11) - .quad _C_LABEL(Xresume_ioapic_level11) - .quad _C_LABEL(Xintr_ioapic_level12), _C_LABEL(Xrecurse_ioapic_level12) - .quad _C_LABEL(Xresume_ioapic_level12) - .quad _C_LABEL(Xintr_ioapic_level13), _C_LABEL(Xrecurse_ioapic_level13) - .quad _C_LABEL(Xresume_ioapic_level13) - .quad _C_LABEL(Xintr_ioapic_level14), _C_LABEL(Xrecurse_ioapic_level14) - .quad _C_LABEL(Xresume_ioapic_level14) - .quad _C_LABEL(Xintr_ioapic_level15), _C_LABEL(Xrecurse_ioapic_level15) - .quad _C_LABEL(Xresume_ioapic_level15) - .quad _C_LABEL(Xintr_ioapic_level16), _C_LABEL(Xrecurse_ioapic_level16) - .quad _C_LABEL(Xresume_ioapic_level16) - .quad _C_LABEL(Xintr_ioapic_level17), _C_LABEL(Xrecurse_ioapic_level17) - .quad _C_LABEL(Xresume_ioapic_level17) - .quad _C_LABEL(Xintr_ioapic_level18), _C_LABEL(Xrecurse_ioapic_level18) - .quad _C_LABEL(Xresume_ioapic_level18) - .quad _C_LABEL(Xintr_ioapic_level19), _C_LABEL(Xrecurse_ioapic_level19) - .quad _C_LABEL(Xresume_ioapic_level19) - .quad _C_LABEL(Xintr_ioapic_level20), _C_LABEL(Xrecurse_ioapic_level20) - .quad _C_LABEL(Xresume_ioapic_level20) - .quad _C_LABEL(Xintr_ioapic_level21), _C_LABEL(Xrecurse_ioapic_level21) - .quad _C_LABEL(Xresume_ioapic_level21) - .quad _C_LABEL(Xintr_ioapic_level22), _C_LABEL(Xrecurse_ioapic_level22) - .quad _C_LABEL(Xresume_ioapic_level22) - .quad _C_LABEL(Xintr_ioapic_level23), _C_LABEL(Xrecurse_ioapic_level23) - .quad _C_LABEL(Xresume_ioapic_level23) - .quad _C_LABEL(Xintr_ioapic_level24), _C_LABEL(Xrecurse_ioapic_level24) - .quad _C_LABEL(Xresume_ioapic_level24) - .quad _C_LABEL(Xintr_ioapic_level25), _C_LABEL(Xrecurse_ioapic_level25) - .quad _C_LABEL(Xresume_ioapic_level25) - .quad _C_LABEL(Xintr_ioapic_level26), _C_LABEL(Xrecurse_ioapic_level26) - .quad _C_LABEL(Xresume_ioapic_level26) - .quad _C_LABEL(Xintr_ioapic_level27), _C_LABEL(Xrecurse_ioapic_level27) - .quad _C_LABEL(Xresume_ioapic_level27) - .quad _C_LABEL(Xintr_ioapic_level28), _C_LABEL(Xrecurse_ioapic_level28) - .quad _C_LABEL(Xresume_ioapic_level28) - .quad _C_LABEL(Xintr_ioapic_level29), _C_LABEL(Xrecurse_ioapic_level29) - .quad _C_LABEL(Xresume_ioapic_level29) - .quad _C_LABEL(Xintr_ioapic_level30), _C_LABEL(Xrecurse_ioapic_level30) - .quad _C_LABEL(Xresume_ioapic_level30) - .quad _C_LABEL(Xintr_ioapic_level31), _C_LABEL(Xrecurse_ioapic_level31) - .quad _C_LABEL(Xresume_ioapic_level31) - .quad _C_LABEL(Xintr_ioapic_level32), _C_LABEL(Xrecurse_ioapic_level32) - .quad _C_LABEL(Xresume_ioapic_level32) - .quad _C_LABEL(Xintr_ioapic_level33), _C_LABEL(Xrecurse_ioapic_level33) - .quad _C_LABEL(Xresume_ioapic_level33) - .quad _C_LABEL(Xintr_ioapic_level34), _C_LABEL(Xrecurse_ioapic_level34) - .quad _C_LABEL(Xresume_ioapic_level34) - .quad _C_LABEL(Xintr_ioapic_level35), _C_LABEL(Xrecurse_ioapic_level35) - .quad _C_LABEL(Xresume_ioapic_level35) - .quad _C_LABEL(Xintr_ioapic_level36), _C_LABEL(Xrecurse_ioapic_level36) - .quad _C_LABEL(Xresume_ioapic_level36) - .quad _C_LABEL(Xintr_ioapic_level37), _C_LABEL(Xrecurse_ioapic_level37) - .quad _C_LABEL(Xresume_ioapic_level37) - .quad _C_LABEL(Xintr_ioapic_level38), _C_LABEL(Xrecurse_ioapic_level38) - .quad _C_LABEL(Xresume_ioapic_level38) - .quad _C_LABEL(Xintr_ioapic_level39), _C_LABEL(Xrecurse_ioapic_level39) - .quad _C_LABEL(Xresume_ioapic_level39) - .quad _C_LABEL(Xintr_ioapic_level40), _C_LABEL(Xrecurse_ioapic_level40) - .quad _C_LABEL(Xresume_ioapic_level40) - .quad _C_LABEL(Xintr_ioapic_level41), _C_LABEL(Xrecurse_ioapic_level41) - .quad _C_LABEL(Xresume_ioapic_level41) - .quad _C_LABEL(Xintr_ioapic_level42), _C_LABEL(Xrecurse_ioapic_level42) - .quad _C_LABEL(Xresume_ioapic_level42) - .quad _C_LABEL(Xintr_ioapic_level43), _C_LABEL(Xrecurse_ioapic_level43) - .quad _C_LABEL(Xresume_ioapic_level43) - .quad _C_LABEL(Xintr_ioapic_level44), _C_LABEL(Xrecurse_ioapic_level44) - .quad _C_LABEL(Xresume_ioapic_level44) - .quad _C_LABEL(Xintr_ioapic_level45), _C_LABEL(Xrecurse_ioapic_level45) - .quad _C_LABEL(Xresume_ioapic_level45) - .quad _C_LABEL(Xintr_ioapic_level46), _C_LABEL(Xrecurse_ioapic_level46) - .quad _C_LABEL(Xresume_ioapic_level46) - .quad _C_LABEL(Xintr_ioapic_level47), _C_LABEL(Xrecurse_ioapic_level47) - .quad _C_LABEL(Xresume_ioapic_level47) - .quad _C_LABEL(Xintr_ioapic_level48), _C_LABEL(Xrecurse_ioapic_level48) - .quad _C_LABEL(Xresume_ioapic_level48) - .quad _C_LABEL(Xintr_ioapic_level49), _C_LABEL(Xrecurse_ioapic_level49) - .quad _C_LABEL(Xresume_ioapic_level49) - .quad _C_LABEL(Xintr_ioapic_level50), _C_LABEL(Xrecurse_ioapic_level50) - .quad _C_LABEL(Xresume_ioapic_level50) - .quad _C_LABEL(Xintr_ioapic_level51), _C_LABEL(Xrecurse_ioapic_level51) - .quad _C_LABEL(Xresume_ioapic_level51) - .quad _C_LABEL(Xintr_ioapic_level52), _C_LABEL(Xrecurse_ioapic_level52) - .quad _C_LABEL(Xresume_ioapic_level52) - .quad _C_LABEL(Xintr_ioapic_level53), _C_LABEL(Xrecurse_ioapic_level53) - .quad _C_LABEL(Xresume_ioapic_level53) - .quad _C_LABEL(Xintr_ioapic_level54), _C_LABEL(Xrecurse_ioapic_level54) - .quad _C_LABEL(Xresume_ioapic_level54) - .quad _C_LABEL(Xintr_ioapic_level55), _C_LABEL(Xrecurse_ioapic_level55) - .quad _C_LABEL(Xresume_ioapic_level55) - .quad _C_LABEL(Xintr_ioapic_level56), _C_LABEL(Xrecurse_ioapic_level56) - .quad _C_LABEL(Xresume_ioapic_level56) - .quad _C_LABEL(Xintr_ioapic_level57), _C_LABEL(Xrecurse_ioapic_level57) - .quad _C_LABEL(Xresume_ioapic_level57) - .quad _C_LABEL(Xintr_ioapic_level58), _C_LABEL(Xrecurse_ioapic_level58) - .quad _C_LABEL(Xresume_ioapic_level58) - .quad _C_LABEL(Xintr_ioapic_level59), _C_LABEL(Xrecurse_ioapic_level59) - .quad _C_LABEL(Xresume_ioapic_level59) - .quad _C_LABEL(Xintr_ioapic_level60), _C_LABEL(Xrecurse_ioapic_level60) - .quad _C_LABEL(Xresume_ioapic_level60) - .quad _C_LABEL(Xintr_ioapic_level61), _C_LABEL(Xrecurse_ioapic_level61) - .quad _C_LABEL(Xresume_ioapic_level61) - .quad _C_LABEL(Xintr_ioapic_level62), _C_LABEL(Xrecurse_ioapic_level62) - .quad _C_LABEL(Xresume_ioapic_level62) - .quad _C_LABEL(Xintr_ioapic_level63), _C_LABEL(Xrecurse_ioapic_level63) - .quad _C_LABEL(Xresume_ioapic_level63) + .globl ioapic_level_stubs + .type ioapic_level_stubs,@object +ioapic_level_stubs: + .quad Xintr_ioapic_level0, Xrecurse_ioapic_level0, Xresume_ioapic_level0 + .quad Xintr_ioapic_level1, Xrecurse_ioapic_level1, Xresume_ioapic_level1 + .quad Xintr_ioapic_level2, Xrecurse_ioapic_level2, Xresume_ioapic_level2 + .quad Xintr_ioapic_level3, Xrecurse_ioapic_level3, Xresume_ioapic_level3 + .quad Xintr_ioapic_level4, Xrecurse_ioapic_level4, Xresume_ioapic_level4 + .quad Xintr_ioapic_level5, Xrecurse_ioapic_level5, Xresume_ioapic_level5 + .quad Xintr_ioapic_level6, Xrecurse_ioapic_level6, Xresume_ioapic_level6 + .quad Xintr_ioapic_level7, Xrecurse_ioapic_level7, Xresume_ioapic_level7 + .quad Xintr_ioapic_level8, Xrecurse_ioapic_level8, Xresume_ioapic_level8 + .quad Xintr_ioapic_level9, Xrecurse_ioapic_level9, Xresume_ioapic_level9 + .quad Xintr_ioapic_level10, Xrecurse_ioapic_level10, Xresume_ioapic_level10 + .quad Xintr_ioapic_level11, Xrecurse_ioapic_level11, Xresume_ioapic_level11 + .quad Xintr_ioapic_level12, Xrecurse_ioapic_level12, Xresume_ioapic_level12 + .quad Xintr_ioapic_level13, Xrecurse_ioapic_level13, Xresume_ioapic_level13 + .quad Xintr_ioapic_level14, Xrecurse_ioapic_level14, Xresume_ioapic_level14 + .quad Xintr_ioapic_level15, Xrecurse_ioapic_level15, Xresume_ioapic_level15 + .quad Xintr_ioapic_level16, Xrecurse_ioapic_level16, Xresume_ioapic_level16 + .quad Xintr_ioapic_level17, Xrecurse_ioapic_level17, Xresume_ioapic_level17 + .quad Xintr_ioapic_level18, Xrecurse_ioapic_level18, Xresume_ioapic_level18 + .quad Xintr_ioapic_level19, Xrecurse_ioapic_level19, Xresume_ioapic_level19 + .quad Xintr_ioapic_level20, Xrecurse_ioapic_level20, Xresume_ioapic_level20 + .quad Xintr_ioapic_level21, Xrecurse_ioapic_level21, Xresume_ioapic_level21 + .quad Xintr_ioapic_level22, Xrecurse_ioapic_level22, Xresume_ioapic_level22 + .quad Xintr_ioapic_level23, Xrecurse_ioapic_level23, Xresume_ioapic_level23 + .quad Xintr_ioapic_level24, Xrecurse_ioapic_level24, Xresume_ioapic_level24 + .quad Xintr_ioapic_level25, Xrecurse_ioapic_level25, Xresume_ioapic_level25 + .quad Xintr_ioapic_level26, Xrecurse_ioapic_level26, Xresume_ioapic_level26 + .quad Xintr_ioapic_level27, Xrecurse_ioapic_level27, Xresume_ioapic_level27 + .quad Xintr_ioapic_level28, Xrecurse_ioapic_level28, Xresume_ioapic_level28 + .quad Xintr_ioapic_level29, Xrecurse_ioapic_level29, Xresume_ioapic_level29 + .quad Xintr_ioapic_level30, Xrecurse_ioapic_level30, Xresume_ioapic_level30 + .quad Xintr_ioapic_level31, Xrecurse_ioapic_level31, Xresume_ioapic_level31 + .quad Xintr_ioapic_level32, Xrecurse_ioapic_level32, Xresume_ioapic_level32 + .quad Xintr_ioapic_level33, Xrecurse_ioapic_level33, Xresume_ioapic_level33 + .quad Xintr_ioapic_level34, Xrecurse_ioapic_level34, Xresume_ioapic_level34 + .quad Xintr_ioapic_level35, Xrecurse_ioapic_level35, Xresume_ioapic_level35 + .quad Xintr_ioapic_level36, Xrecurse_ioapic_level36, Xresume_ioapic_level36 + .quad Xintr_ioapic_level37, Xrecurse_ioapic_level37, Xresume_ioapic_level37 + .quad Xintr_ioapic_level38, Xrecurse_ioapic_level38, Xresume_ioapic_level38 + .quad Xintr_ioapic_level39, Xrecurse_ioapic_level39, Xresume_ioapic_level39 + .quad Xintr_ioapic_level40, Xrecurse_ioapic_level40, Xresume_ioapic_level40 + .quad Xintr_ioapic_level41, Xrecurse_ioapic_level41, Xresume_ioapic_level41 + .quad Xintr_ioapic_level42, Xrecurse_ioapic_level42, Xresume_ioapic_level42 + .quad Xintr_ioapic_level43, Xrecurse_ioapic_level43, Xresume_ioapic_level43 + .quad Xintr_ioapic_level44, Xrecurse_ioapic_level44, Xresume_ioapic_level44 + .quad Xintr_ioapic_level45, Xrecurse_ioapic_level45, Xresume_ioapic_level45 + .quad Xintr_ioapic_level46, Xrecurse_ioapic_level46, Xresume_ioapic_level46 + .quad Xintr_ioapic_level47, Xrecurse_ioapic_level47, Xresume_ioapic_level47 + .quad Xintr_ioapic_level48, Xrecurse_ioapic_level48, Xresume_ioapic_level48 + .quad Xintr_ioapic_level49, Xrecurse_ioapic_level49, Xresume_ioapic_level49 + .quad Xintr_ioapic_level50, Xrecurse_ioapic_level50, Xresume_ioapic_level50 + .quad Xintr_ioapic_level51, Xrecurse_ioapic_level51, Xresume_ioapic_level51 + .quad Xintr_ioapic_level52, Xrecurse_ioapic_level52, Xresume_ioapic_level52 + .quad Xintr_ioapic_level53, Xrecurse_ioapic_level53, Xresume_ioapic_level53 + .quad Xintr_ioapic_level54, Xrecurse_ioapic_level54, Xresume_ioapic_level54 + .quad Xintr_ioapic_level55, Xrecurse_ioapic_level55, Xresume_ioapic_level55 + .quad Xintr_ioapic_level56, Xrecurse_ioapic_level56, Xresume_ioapic_level56 + .quad Xintr_ioapic_level57, Xrecurse_ioapic_level57, Xresume_ioapic_level57 + .quad Xintr_ioapic_level58, Xrecurse_ioapic_level58, Xresume_ioapic_level58 + .quad Xintr_ioapic_level59, Xrecurse_ioapic_level59, Xresume_ioapic_level59 + .quad Xintr_ioapic_level60, Xrecurse_ioapic_level60, Xresume_ioapic_level60 + .quad Xintr_ioapic_level61, Xrecurse_ioapic_level61, Xresume_ioapic_level61 + .quad Xintr_ioapic_level62, Xrecurse_ioapic_level62, Xresume_ioapic_level62 + .quad Xintr_ioapic_level63, Xrecurse_ioapic_level63, Xresume_ioapic_level63 END(ioapic_level_stubs) #endif @@ -1421,7 +1269,7 @@ KIDTVEC(softtty) sti incl CPUVAR(IDEPTH) movl $X86_SOFTINTR_SOFTTTY,%edi - call _C_LABEL(softintr_dispatch) + call softintr_dispatch decl CPUVAR(IDEPTH) jmp retpoline_r13 END(Xsofttty) @@ -1431,7 +1279,7 @@ KIDTVEC(softnet) sti incl CPUVAR(IDEPTH) movl $X86_SOFTINTR_SOFTNET,%edi - call _C_LABEL(softintr_dispatch) + call softintr_dispatch decl CPUVAR(IDEPTH) jmp retpoline_r13 END(Xsoftnet) @@ -1441,7 +1289,7 @@ KIDTVEC(softclock) sti incl CPUVAR(IDEPTH) movl $X86_SOFTINTR_SOFTCLOCK,%edi - call _C_LABEL(softintr_dispatch) + call softintr_dispatch decl CPUVAR(IDEPTH) jmp retpoline_r13 END(Xsoftclock) diff --git a/sys/arch/amd64/amd64/vmm_support.S b/sys/arch/amd64/amd64/vmm_support.S index b3c9e5d6740..3abaadd7207 100644 --- a/sys/arch/amd64/amd64/vmm_support.S +++ b/sys/arch/amd64/amd64/vmm_support.S @@ -1,4 +1,4 @@ -/* $OpenBSD: vmm_support.S,v 1.20 2022/04/14 20:24:15 bluhm Exp $ */ +/* $OpenBSD: vmm_support.S,v 1.21 2022/12/01 00:26:15 guenther Exp $ */ /* * Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org> * @@ -30,23 +30,23 @@ #define VMX_FAIL_LAUNCH_INVALID_VMCS 2 #define VMX_FAIL_LAUNCH_VALID_VMCS 3 - .global _C_LABEL(vmxon) - .global _C_LABEL(vmxoff) - .global _C_LABEL(vmclear) - .global _C_LABEL(vmptrld) - .global _C_LABEL(vmptrst) - .global _C_LABEL(vmwrite) - .global _C_LABEL(vmread) - .global _C_LABEL(invvpid) - .global _C_LABEL(invept) - .global _C_LABEL(vmx_enter_guest) - .global _C_LABEL(vmm_dispatch_intr) - .global _C_LABEL(svm_enter_guest) + .global vmxon + .global vmxoff + .global vmclear + .global vmptrld + .global vmptrst + .global vmwrite + .global vmread + .global invvpid + .global invept + .global vmx_enter_guest + .global vmm_dispatch_intr + .global svm_enter_guest .text .code64 .align 16,0xcc -_C_LABEL(vmm_dispatch_intr): +vmm_dispatch_intr: movq %rsp, %r11 /* r11 = temporary register */ andq $0xFFFFFFFFFFFFFFF0, %rsp movw %ss, %ax @@ -60,7 +60,7 @@ _C_LABEL(vmm_dispatch_intr): ret lfence -_C_LABEL(vmxon): +vmxon: RETGUARD_SETUP(vmxon, r11) xorq %rax, %rax vmxon (%rdi) @@ -69,7 +69,7 @@ _C_LABEL(vmxon): ret lfence -_C_LABEL(vmxoff): +vmxoff: RETGUARD_SETUP(vmxoff, r11) xorq %rax, %rax vmxoff @@ -78,7 +78,7 @@ _C_LABEL(vmxoff): ret lfence -_C_LABEL(vmclear): +vmclear: RETGUARD_SETUP(vmclear, r11) xorq %rax, %rax vmclear (%rdi) @@ -87,7 +87,7 @@ _C_LABEL(vmclear): ret lfence -_C_LABEL(vmptrld): +vmptrld: RETGUARD_SETUP(vmptrld, r11) xorq %rax, %rax vmptrld (%rdi) @@ -96,7 +96,7 @@ _C_LABEL(vmptrld): ret lfence -_C_LABEL(vmptrst): +vmptrst: RETGUARD_SETUP(vmptrst, r11) xorq %rax, %rax vmptrst (%rdi) @@ -105,7 +105,7 @@ _C_LABEL(vmptrst): ret lfence -_C_LABEL(vmwrite): +vmwrite: RETGUARD_SETUP(vmwrite, r11) xorq %rax, %rax vmwrite %rsi, %rdi @@ -114,7 +114,7 @@ _C_LABEL(vmwrite): ret lfence -_C_LABEL(vmread): +vmread: RETGUARD_SETUP(vmread, r11) xorq %rax, %rax vmread %rdi, (%rsi) @@ -123,21 +123,21 @@ _C_LABEL(vmread): ret lfence -_C_LABEL(invvpid): +invvpid: RETGUARD_SETUP(invvpid, r11) invvpid (%rsi), %rdi RETGUARD_CHECK(invvpid, r11) ret lfence -_C_LABEL(invept): +invept: RETGUARD_SETUP(invept, r11) invept (%rsi), %rdi RETGUARD_CHECK(invept, r11) ret lfence -_C_LABEL(vmx_enter_guest): +vmx_enter_guest: RETGUARD_SETUP(vmx_enter_guest, r11) movq %rdx, %r8 /* resume flag */ movq %rcx, %r9 /* L1DF MSR support */ @@ -511,7 +511,7 @@ restore_host: ret lfence -_C_LABEL(svm_enter_guest): +svm_enter_guest: RETGUARD_SETUP(svm_enter_guest, r11) clgi movq %rdi, %r8 diff --git a/sys/arch/amd64/include/asm.h b/sys/arch/amd64/include/asm.h index f7321821985..b4053a07e8d 100644 --- a/sys/arch/amd64/include/asm.h +++ b/sys/arch/amd64/include/asm.h @@ -1,4 +1,4 @@ -/* $OpenBSD: asm.h,v 1.22 2022/08/30 16:26:29 miod Exp $ */ +/* $OpenBSD: asm.h,v 1.23 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: asm.h,v 1.2 2003/05/02 18:05:47 yamt Exp $ */ /*- @@ -49,7 +49,7 @@ # define _C_LABEL(x) x #define _ASM_LABEL(x) x -#define CVAROFF(x,y) (_C_LABEL(x)+y)(%rip) +#define CVAROFF(x,y) (x+y)(%rip) #ifdef __STDC__ # define __CONCAT(x,y) x ## y @@ -166,9 +166,9 @@ # define RETGUARD_SYMBOL(x) #endif -#define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE -#define NENTRY(y) _NENTRY(_C_LABEL(y)) -#define ASENTRY(y) _NENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE +#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE +#define NENTRY(y) _NENTRY(y) +#define ASENTRY(y) _NENTRY(y); _PROF_PROLOGUE #define ENTRY_NB(y) _ENTRY_NB(y); _PROF_PROLOGUE #define END(y) .size y, . - y diff --git a/sys/arch/amd64/include/i82093reg.h b/sys/arch/amd64/include/i82093reg.h index 6f80d399a34..0e608024941 100644 --- a/sys/arch/amd64/include/i82093reg.h +++ b/sys/arch/amd64/include/i82093reg.h @@ -1,4 +1,4 @@ -/* $OpenBSD: i82093reg.h,v 1.7 2018/07/03 20:15:57 guenther Exp $ */ +/* $OpenBSD: i82093reg.h,v 1.8 2022/12/01 00:26:15 guenther Exp $ */ /* $NetBSD: i82093reg.h,v 1.1 2003/02/26 21:26:10 fvdl Exp $ */ /*- @@ -116,7 +116,7 @@ #define ioapic_asm_ack(num) \ CODEPATCH_START ;\ - movl $0,(_C_LABEL(local_apic)+LAPIC_EOI)(%rip) ;\ + movl $0,(local_apic+LAPIC_EOI)(%rip) ;\ CODEPATCH_END(CPTAG_EOI) |