Linux/SPARCv9: use C calling convention for restore_rt

This is needed to prevent infinite loop when calling rt_sigreturn.
This commit is contained in:
Koakuma 2021-08-03 22:24:11 +07:00 committed by Andrew Kelley
parent e3840817d7
commit dd75302563

View File

@ -169,7 +169,9 @@ pub extern fn clone(func: fn (arg: usize) callconv(.C) u8, stack: usize, flags:
pub const restore = restore_rt;
pub fn restore_rt() callconv(.Naked) void {
// Need to use C ABI here instead of naked
// to prevent an infinite loop when calling rt_sigreturn.
pub fn restore_rt() callconv(.C) void {
return asm volatile ("t 0x6d"
:
: [number] "{g1}" (@enumToInt(SYS.rt_sigreturn))