authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-15 18:59:10+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-16 16:00:18+02:00
loge7ee61cd64e8b84f195efbe5b05920d50da1e949
tree63fb30235a5f206fe1737482ff837a0a4e4f2def
parent0dd99c37cca1894ad7219e5944e7eef25902e44e
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

musl: fix syscall argument width for mipsn32

https://www.openwall.com/lists/musl/2026/04/16/1

1 files changed, 35 insertions(+), 32 deletions(-)

lib/libc/musl/arch/mipsn32/syscall_arch.h+35-32
......@@ -1,6 +1,9 @@
11#define __SYSCALL_LL_E(x) (x)
22#define __SYSCALL_LL_O(x) (x)
33
4#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X)
5typedef long long syscall_arg_t;
6
47#define SYSCALL_RLIM_INFINITY (-1UL/2)
58
69#if __mips_isa_rev >= 6
......@@ -13,9 +16,9 @@
1316 "$14", "$15", "$24", "$25", "hi", "lo", "memory"
1417#endif
1518
16static inline long __syscall0(long n)
19static inline long __syscall0(long long n)
1720{
18 register long r7 __asm__("$7");
21 register long long r7 __asm__("$7");
1922 register long r2 __asm__("$2");
2023 __asm__ __volatile__ (
2124 "daddu $2,$0,%2 ; syscall"
......@@ -25,10 +28,10 @@ static inline long __syscall0(long n)
2528 return r7 && r2>0 ? -r2 : r2;
2629}
2730
28static inline long __syscall1(long n, long a)
31static inline long __syscall1(long long n, long long a)
2932{
30 register long r4 __asm__("$4") = a;
31 register long r7 __asm__("$7");
33 register long long r4 __asm__("$4") = a;
34 register long long r7 __asm__("$7");
3235 register long r2 __asm__("$2");
3336 __asm__ __volatile__ (
3437 "daddu $2,$0,%2 ; syscall"
......@@ -38,11 +41,11 @@ static inline long __syscall1(long n, long a)
3841 return r7 && r2>0 ? -r2 : r2;
3942}
4043
41static inline long __syscall2(long n, long a, long b)
44static inline long __syscall2(long long n, long long a, long long b)
4245{
43 register long r4 __asm__("$4") = a;
44 register long r5 __asm__("$5") = b;
45 register long r7 __asm__("$7");
46 register long long r4 __asm__("$4") = a;
47 register long long r5 __asm__("$5") = b;
48 register long long r7 __asm__("$7");
4649 register long r2 __asm__("$2");
4750
4851 __asm__ __volatile__ (
......@@ -53,12 +56,12 @@ static inline long __syscall2(long n, long a, long b)
5356 return r7 && r2>0 ? -r2 : r2;
5457}
5558
56static inline long __syscall3(long n, long a, long b, long c)
59static inline long __syscall3(long long n, long long a, long long b, long long c)
5760{
58 register long r4 __asm__("$4") = a;
59 register long r5 __asm__("$5") = b;
60 register long r6 __asm__("$6") = c;
61 register long r7 __asm__("$7");
61 register long long r4 __asm__("$4") = a;
62 register long long r5 __asm__("$5") = b;
63 register long long r6 __asm__("$6") = c;
64 register long long r7 __asm__("$7");
6265 register long r2 __asm__("$2");
6366
6467 __asm__ __volatile__ (
......@@ -69,12 +72,12 @@ static inline long __syscall3(long n, long a, long b, long c)
6972 return r7 && r2>0 ? -r2 : r2;
7073}
7174
72static inline long __syscall4(long n, long a, long b, long c, long d)
75static inline long __syscall4(long long n, long long a, long long b, long long c, long long d)
7376{
74 register long r4 __asm__("$4") = a;
75 register long r5 __asm__("$5") = b;
76 register long r6 __asm__("$6") = c;
77 register long r7 __asm__("$7") = d;
77 register long long r4 __asm__("$4") = a;
78 register long long r5 __asm__("$5") = b;
79 register long long r6 __asm__("$6") = c;
80 register long long r7 __asm__("$7") = d;
7881 register long r2 __asm__("$2");
7982
8083 __asm__ __volatile__ (
......@@ -85,13 +88,13 @@ static inline long __syscall4(long n, long a, long b, long c, long d)
8588 return r7 && r2>0 ? -r2 : r2;
8689}
8790
88static inline long __syscall5(long n, long a, long b, long c, long d, long e)
91static inline long __syscall5(long long n, long long a, long long b, long long c, long long d, long long e)
8992{
90 register long r4 __asm__("$4") = a;
91 register long r5 __asm__("$5") = b;
92 register long r6 __asm__("$6") = c;
93 register long r7 __asm__("$7") = d;
94 register long r8 __asm__("$8") = e;
93 register long long r4 __asm__("$4") = a;
94 register long long r5 __asm__("$5") = b;
95 register long long r6 __asm__("$6") = c;
96 register long long r7 __asm__("$7") = d;
97 register long long r8 __asm__("$8") = e;
9598 register long r2 __asm__("$2");
9699
97100 __asm__ __volatile__ (
......@@ -102,14 +105,14 @@ static inline long __syscall5(long n, long a, long b, long c, long d, long e)
102105 return r7 && r2>0 ? -r2 : r2;
103106}
104107
105static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
108static inline long __syscall6(long long n, long long a, long long b, long long c, long long d, long long e, long long f)
106109{
107 register long r4 __asm__("$4") = a;
108 register long r5 __asm__("$5") = b;
109 register long r6 __asm__("$6") = c;
110 register long r7 __asm__("$7") = d;
111 register long r8 __asm__("$8") = e;
112 register long r9 __asm__("$9") = f;
110 register long long r4 __asm__("$4") = a;
111 register long long r5 __asm__("$5") = b;
112 register long long r6 __asm__("$6") = c;
113 register long long r7 __asm__("$7") = d;
114 register long long r8 __asm__("$8") = e;
115 register long long r9 __asm__("$9") = f;
113116 register long r2 __asm__("$2");
114117
115118 __asm__ __volatile__ (