aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os/linux/powerpc.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-10-17 12:07:51 +0200
committerGitHub <noreply@github.com>2025-10-17 12:07:51 +0200
commit1f8a72175b5352e77b41ed4d165acccad08ffb16 (patch)
treed573a9ef3ad64fc8e257fe7a736e57e50c2d8e2d /lib/std/os/linux/powerpc.zig
parent3091efaa1845bf049ce1d4aaacb95e3b1e346453 (diff)
parent29fb9e4da7d60f32f7efe6d280a69e020cd117a7 (diff)
downloadzig-1f8a72175b5352e77b41ed4d165acccad08ffb16.tar.gz
zig-1f8a72175b5352e77b41ed4d165acccad08ffb16.zip
Merge pull request #25610 from alexrp/std-os-linux-cleanup
`std.os.linux`: some miscellaneous cleanup in arch bits
Diffstat (limited to 'lib/std/os/linux/powerpc.zig')
-rw-r--r--lib/std/os/linux/powerpc.zig168
1 files changed, 55 insertions, 113 deletions
diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig
index c96a8a0804..46197d9085 100644
--- a/lib/std/os/linux/powerpc.zig
+++ b/lib/std/os/linux/powerpc.zig
@@ -1,61 +1,49 @@
const builtin = @import("builtin");
const std = @import("../../std.zig");
-const maxInt = std.math.maxInt;
-const linux = std.os.linux;
-const SYS = linux.SYS;
-const socklen_t = linux.socklen_t;
-const iovec = std.posix.iovec;
-const iovec_const = std.posix.iovec_const;
-const uid_t = linux.uid_t;
-const gid_t = linux.gid_t;
-const pid_t = linux.pid_t;
-const stack_t = linux.stack_t;
-const sigset_t = linux.sigset_t;
-const sockaddr = linux.sockaddr;
-const timespec = linux.timespec;
+const SYS = std.os.linux.SYS;
-pub fn syscall0(number: SYS) usize {
+pub fn syscall0(number: SYS) u32 {
// r0 is both an input register and a clobber. musl and glibc achieve this with
// a "+" constraint, which isn't supported in Zig, so instead we separately list
// r0 as both an input and an output. (Listing it as an input and a clobber would
// cause the C backend to emit invalid code; see #25209.)
- var r0_out: usize = undefined;
+ var r0_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
: [number] "{r0}" (@intFromEnum(number)),
: .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn syscall1(number: SYS, arg1: usize) usize {
+pub fn syscall1(number: SYS, arg1: u32) u32 {
// r0 is both an input and a clobber.
- var r0_out: usize = undefined;
+ var r0_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
: [number] "{r0}" (@intFromEnum(number)),
[arg1] "{r3}" (arg1),
: .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
+pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
// These registers are both inputs and clobbers.
- var r0_out: usize = undefined;
- var r4_out: usize = undefined;
+ var r0_out: u32 = undefined;
+ var r4_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
[r4_out] "={r4}" (r4_out),
: [number] "{r0}" (@intFromEnum(number)),
@@ -64,17 +52,17 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
: .{ .memory = true, .cr0 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
+pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
// These registers are both inputs and clobbers.
- var r0_out: usize = undefined;
- var r4_out: usize = undefined;
- var r5_out: usize = undefined;
+ var r0_out: u32 = undefined;
+ var r4_out: u32 = undefined;
+ var r5_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
[r4_out] "={r4}" (r4_out),
[r5_out] "={r5}" (r5_out),
@@ -85,18 +73,18 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
: .{ .memory = true, .cr0 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
+pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
// These registers are both inputs and clobbers.
- var r0_out: usize = undefined;
- var r4_out: usize = undefined;
- var r5_out: usize = undefined;
- var r6_out: usize = undefined;
+ var r0_out: u32 = undefined;
+ var r4_out: u32 = undefined;
+ var r5_out: u32 = undefined;
+ var r6_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
[r4_out] "={r4}" (r4_out),
[r5_out] "={r5}" (r5_out),
@@ -109,19 +97,19 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
: .{ .memory = true, .cr0 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
+pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 {
// These registers are both inputs and clobbers.
- var r0_out: usize = undefined;
- var r4_out: usize = undefined;
- var r5_out: usize = undefined;
- var r6_out: usize = undefined;
- var r7_out: usize = undefined;
+ var r0_out: u32 = undefined;
+ var r4_out: u32 = undefined;
+ var r5_out: u32 = undefined;
+ var r6_out: u32 = undefined;
+ var r7_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
[r4_out] "={r4}" (r4_out),
[r5_out] "={r5}" (r5_out),
@@ -138,26 +126,26 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
pub fn syscall6(
number: SYS,
- arg1: usize,
- arg2: usize,
- arg3: usize,
- arg4: usize,
- arg5: usize,
- arg6: usize,
-) usize {
+ arg1: u32,
+ arg2: u32,
+ arg3: u32,
+ arg4: u32,
+ arg5: u32,
+ arg6: u32,
+) u32 {
// These registers are both inputs and clobbers.
- var r0_out: usize = undefined;
- var r4_out: usize = undefined;
- var r5_out: usize = undefined;
- var r6_out: usize = undefined;
- var r7_out: usize = undefined;
- var r8_out: usize = undefined;
+ var r0_out: u32 = undefined;
+ var r4_out: u32 = undefined;
+ var r5_out: u32 = undefined;
+ var r6_out: u32 = undefined;
+ var r7_out: u32 = undefined;
+ var r8_out: u32 = undefined;
return asm volatile (
\\ sc
\\ bns+ 1f
\\ neg 3, 3
\\ 1:
- : [ret] "={r3}" (-> usize),
+ : [ret] "={r3}" (-> u32),
[r0_out] "={r0}" (r0_out),
[r4_out] "={r4}" (r4_out),
[r5_out] "={r5}" (r5_out),
@@ -174,7 +162,7 @@ pub fn syscall6(
: .{ .memory = true, .cr0 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
}
-pub fn clone() callconv(.naked) usize {
+pub fn clone() callconv(.naked) u32 {
// __clone(func, stack, flags, arg, ptid, tls, ctid)
// 3, 4, 5, 6, 7, 8, 9
//
@@ -247,14 +235,14 @@ pub fn clone() callconv(.naked) usize {
pub const restore = restore_rt;
pub fn restore_rt() callconv(.naked) noreturn {
- switch (@import("builtin").zig_backend) {
+ switch (builtin.zig_backend) {
.stage2_c => asm volatile (
\\ li 0, %[number]
\\ sc
:
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
),
- else => _ = asm volatile (
+ else => asm volatile (
\\ sc
:
: [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)),
@@ -262,48 +250,14 @@ pub fn restore_rt() callconv(.naked) noreturn {
}
}
-pub const F = struct {
- pub const DUPFD = 0;
- pub const GETFD = 1;
- pub const SETFD = 2;
- pub const GETFL = 3;
- pub const SETFL = 4;
-
- pub const SETOWN = 8;
- pub const GETOWN = 9;
- pub const SETSIG = 10;
- pub const GETSIG = 11;
-
- pub const GETLK = 12;
- pub const SETLK = 13;
- pub const SETLKW = 14;
-
- pub const SETOWN_EX = 15;
- pub const GETOWN_EX = 16;
-
- pub const GETOWNER_UIDS = 17;
-
- pub const RDLCK = 0;
- pub const WRLCK = 1;
- pub const UNLCK = 2;
-};
-
pub const VDSO = struct {
pub const CGT_SYM = "__kernel_clock_gettime";
pub const CGT_VER = "LINUX_2.6.15";
};
-pub const Flock = extern struct {
- type: i16,
- whence: i16,
- start: off_t,
- len: off_t,
- pid: pid_t,
-};
-
pub const blksize_t = i32;
pub const nlink_t = u32;
-pub const time_t = isize;
+pub const time_t = i32;
pub const mode_t = u32;
pub const off_t = i64;
pub const ino_t = u64;
@@ -316,39 +270,27 @@ pub const Stat = extern struct {
ino: ino_t,
mode: mode_t,
nlink: nlink_t,
- uid: uid_t,
- gid: gid_t,
+ uid: std.os.linux.uid_t,
+ gid: std.os.linux.gid_t,
rdev: dev_t,
__rdev_padding: i16,
size: off_t,
blksize: blksize_t,
blocks: blkcnt_t,
- atim: timespec,
- mtim: timespec,
- ctim: timespec,
+ atim: std.os.linux.timespec,
+ mtim: std.os.linux.timespec,
+ ctim: std.os.linux.timespec,
__unused: [2]u32,
- pub fn atime(self: @This()) timespec {
+ pub fn atime(self: @This()) std.os.linux.timespec {
return self.atim;
}
- pub fn mtime(self: @This()) timespec {
+ pub fn mtime(self: @This()) std.os.linux.timespec {
return self.mtim;
}
- pub fn ctime(self: @This()) timespec {
+ pub fn ctime(self: @This()) std.os.linux.timespec {
return self.ctim;
}
};
-
-pub const timeval = extern struct {
- sec: time_t,
- usec: isize,
-};
-
-pub const timezone = extern struct {
- minuteswest: i32,
- dsttime: i32,
-};
-
-pub const Elf_Symndx = u32;