diff --git a/lib/std/builtin/assembly.zig b/lib/std/builtin/assembly.zig index b614017209..c368ae45d5 100644 --- a/lib/std/builtin/assembly.zig +++ b/lib/std/builtin/assembly.zig @@ -4,6 +4,7 @@ pub const Clobbers = switch (@import("builtin").cpu.arch) { /// addresses other than those derived from input pointer provenance. memory: bool = false, + /// Condition codes. Subset of the bits in `eflags` and `rflags`. cc: bool = false, dirflag: bool = false, eflags: bool = false, diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index c0d1aabd08..2565e8984c 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("svc #0" : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -35,7 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -45,7 +45,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -56,7 +56,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -68,7 +68,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall6( @@ -89,7 +89,7 @@ pub fn syscall6( [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), [arg6] "{x5}" (arg6), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ svc #0 : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), - : .{ .memory = true, .cc = true }), + : .{ .memory = true }), else => asm volatile ( \\ svc #0 : : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), - : .{ .memory = true, .cc = true }), + : .{ .memory = true }), } } diff --git a/lib/std/start.zig b/lib/std/start.zig index 9581675750..22ccda1e40 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn { : : [number] "{x8}" (93), [arg1] "{x0}" (code), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); }, .sparc64 => { asm volatile ("ta 0x6d" diff --git a/lib/std/valgrind.zig b/lib/std/valgrind.zig index 4dd8dfac74..f12e0a9a7f 100644 --- a/lib/std/valgrind.zig +++ b/lib/std/valgrind.zig @@ -17,7 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .aarch64, .aarch64_be => asm volatile ( \\ ror x12, x12, #3 ; ror x12, x12, #13 \\ ror x12, x12, #51 ; ror x12, x12, #61 @@ -25,7 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={x3}" (-> usize), : [_] "{x4}" (args), [_] "{x3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .mips, .mipsel => asm volatile ( \\ srl $0, $0, 13 \\ srl $0, $0, 29 @@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .powerpc64, .powerpc64le => asm volatile ( \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51 @@ -59,7 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .riscv64 => asm volatile ( \\ .option push \\ .option norvc @@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={a3}" (-> usize), : [_] "{a4}" (args), [_] "{a3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .s390x => asm volatile ( \\ lr %%r15, %%r15 \\ lr %%r1, %%r1 @@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r2}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .x86 => asm volatile ( \\ roll $3, %%edi ; roll $13, %%edi \\ roll $29, %%edi ; roll $19, %%edi @@ -90,7 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={edx}" (-> usize), : [_] "{eax}" (args), [_] "{edx}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .x86_64 => asm volatile ( \\ rolq $3, %%rdi ; rolq $13, %%rdi \\ rolq $61, %%rdi ; rolq $51, %%rdi @@ -98,7 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={rdx}" (-> usize), : [_] "{rax}" (args), [_] "{rdx}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), else => default, }; }