https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99870
Bug ID: 99870
Summary: uiret generated for -mcmodel=kernel
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
Target: x86-64
[hjl@gnu-cfl-2 tmp]$ /usr/gcc-11.0.1-x32/bin/gcc -march=sapphirerapids
-mcmodel=kernel -mno-sse -mno-mmx -O2 -S -mno-80387 x.c
[hjl@gnu-cfl-2 tmp]$ cat x.s
.file "x.c"
.text
.p2align 4
.globl foo
.type foo, @function
foo:
.LFB0:
.cfi_startproc
uiret
.cfi_endproc
.LFE0:
.size foo, .-foo
.ident "GCC: (GNU) 11.0.1 20210330 (experimental)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-2 tmp]$ cat x.c
__attribute__((interrupt))
void
foo (void *frame)
{
}
[hjl@gnu-cfl-2 tmp]$ /usr/gcc-11.0.1-x32/bin/gcc -march=sapphirerapids
-mcmodel=kernel -mno-sse -mno-mmx -O2 -S -mno-80387 x.c
[hjl@gnu-cfl-2 tmp]$ cat x.s
.file "x.c"
.text
.p2align 4
.globl foo
.type foo, @function
foo:
.LFB0:
.cfi_startproc
uiret <<<<<< This should be iret.
.cfi_endproc
.LFE0:
.size foo, .-foo
.ident "GCC: (GNU) 11.0.1 20210330 (experimental)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-2 tmp]$