Skip to content

Commit 70e934f

Browse files
authored
Merge pull request #3326 from LemonBoy/misc-misc
Miscellaneous and very small patches regarding mipsel and musl libc
2 parents 805f9b3 + 9ad0541 commit 70e934f

File tree

4 files changed

+44
-26
lines changed

4 files changed

+44
-26
lines changed

lib/libc/musl/src/setjmp/mips/longjmp.S

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,12 @@ longjmp:
1212
addu $2, $2, 1
1313
1:
1414
#ifndef __mips_soft_float
15-
lwc1 $20, 56($4)
16-
lwc1 $21, 60($4)
17-
lwc1 $22, 64($4)
18-
lwc1 $23, 68($4)
19-
lwc1 $24, 72($4)
20-
lwc1 $25, 76($4)
21-
lwc1 $26, 80($4)
22-
lwc1 $27, 84($4)
23-
lwc1 $28, 88($4)
24-
lwc1 $29, 92($4)
25-
lwc1 $30, 96($4)
26-
lwc1 $31, 100($4)
15+
l.d $f20, 56($4)
16+
l.d $f22, 64($4)
17+
l.d $f24, 72($4)
18+
l.d $f26, 80($4)
19+
l.d $f28, 88($4)
20+
l.d $f30, 96($4)
2721
#endif
2822
lw $ra, 0($4)
2923
lw $sp, 4($4)

lib/libc/musl/src/setjmp/mips/setjmp.S

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,12 @@ setjmp:
2222
sw $30, 40($4)
2323
sw $28, 44($4)
2424
#ifndef __mips_soft_float
25-
swc1 $20, 56($4)
26-
swc1 $21, 60($4)
27-
swc1 $22, 64($4)
28-
swc1 $23, 68($4)
29-
swc1 $24, 72($4)
30-
swc1 $25, 76($4)
31-
swc1 $26, 80($4)
32-
swc1 $27, 84($4)
33-
swc1 $28, 88($4)
34-
swc1 $29, 92($4)
35-
swc1 $30, 96($4)
36-
swc1 $31, 100($4)
25+
s.d $f20, 56($4)
26+
s.d $f22, 64($4)
27+
s.d $f24, 72($4)
28+
s.d $f26, 80($4)
29+
s.d $f28, 88($4)
30+
s.d $f30, 96($4)
3731
#endif
3832
jr $ra
3933
li $2, 0

lib/std/os/linux.zig

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,29 @@ pub fn umount2(special: [*]const u8, flags: u32) usize {
193193

194194
pub fn mmap(address: ?[*]u8, length: usize, prot: usize, flags: u32, fd: i32, offset: u64) usize {
195195
if (@hasDecl(@This(), "SYS_mmap2")) {
196-
return syscall6(SYS_mmap2, @ptrToInt(address), length, prot, flags, @bitCast(usize, isize(fd)), @truncate(usize, offset / MMAP2_UNIT));
196+
// Make sure the offset is also specified in multiples of page size
197+
if ((offset & (MMAP2_UNIT - 1)) != 0)
198+
return @bitCast(usize, isize(-EINVAL));
199+
200+
return syscall6(
201+
SYS_mmap2,
202+
@ptrToInt(address),
203+
length,
204+
prot,
205+
flags,
206+
@bitCast(usize, isize(fd)),
207+
@truncate(usize, offset / MMAP2_UNIT),
208+
);
197209
} else {
198-
return syscall6(SYS_mmap, @ptrToInt(address), length, prot, flags, @bitCast(usize, isize(fd)), offset);
210+
return syscall6(
211+
SYS_mmap,
212+
@ptrToInt(address),
213+
length,
214+
prot,
215+
flags,
216+
@bitCast(usize, isize(fd)),
217+
offset,
218+
);
199219
}
200220
}
201221

test/tests.zig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,16 @@ const test_targets = [_]TestTarget{
140140
},
141141
},
142142
},
143+
TestTarget{
144+
.target = Target{
145+
.Cross = CrossTarget{
146+
.os = .linux,
147+
.arch = .mipsel,
148+
.abi = .musl,
149+
},
150+
},
151+
.link_libc = true,
152+
},
143153

144154
TestTarget{
145155
.target = Target{

0 commit comments

Comments
 (0)