aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-09-27 14:53:52 -0400
committerGitHub <noreply@github.com>2019-09-27 14:53:52 -0400
commit70e934f116f3b889fcee755380a708fdceaaf699 (patch)
tree87d1d26bd2475bbb492e4361bfeccd62be11aaa3 /lib
parent805f9b309bee2d1a6c4fa34f1bc2746a8e60c35f (diff)
parent9ad0541f2c06e0eb3419b3da7fe721affa3aa3b5 (diff)
downloadzig-70e934f116f3b889fcee755380a708fdceaaf699.tar.gz
zig-70e934f116f3b889fcee755380a708fdceaaf699.zip
Merge pull request #3326 from LemonBoy/misc-misc
Miscellaneous and very small patches regarding mipsel and musl libc
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/musl/src/setjmp/mips/longjmp.S18
-rw-r--r--lib/libc/musl/src/setjmp/mips/setjmp.S18
-rw-r--r--lib/std/os/linux.zig24
3 files changed, 34 insertions, 26 deletions
diff --git a/lib/libc/musl/src/setjmp/mips/longjmp.S b/lib/libc/musl/src/setjmp/mips/longjmp.S
index fdb6c95d25..ecf4085538 100644
--- a/lib/libc/musl/src/setjmp/mips/longjmp.S
+++ b/lib/libc/musl/src/setjmp/mips/longjmp.S
@@ -12,18 +12,12 @@ longjmp:
addu $2, $2, 1
1:
#ifndef __mips_soft_float
- lwc1 $20, 56($4)
- lwc1 $21, 60($4)
- lwc1 $22, 64($4)
- lwc1 $23, 68($4)
- lwc1 $24, 72($4)
- lwc1 $25, 76($4)
- lwc1 $26, 80($4)
- lwc1 $27, 84($4)
- lwc1 $28, 88($4)
- lwc1 $29, 92($4)
- lwc1 $30, 96($4)
- lwc1 $31, 100($4)
+ l.d $f20, 56($4)
+ l.d $f22, 64($4)
+ l.d $f24, 72($4)
+ l.d $f26, 80($4)
+ l.d $f28, 88($4)
+ l.d $f30, 96($4)
#endif
lw $ra, 0($4)
lw $sp, 4($4)
diff --git a/lib/libc/musl/src/setjmp/mips/setjmp.S b/lib/libc/musl/src/setjmp/mips/setjmp.S
index 501d5264e6..7ae8832d51 100644
--- a/lib/libc/musl/src/setjmp/mips/setjmp.S
+++ b/lib/libc/musl/src/setjmp/mips/setjmp.S
@@ -22,18 +22,12 @@ setjmp:
sw $30, 40($4)
sw $28, 44($4)
#ifndef __mips_soft_float
- swc1 $20, 56($4)
- swc1 $21, 60($4)
- swc1 $22, 64($4)
- swc1 $23, 68($4)
- swc1 $24, 72($4)
- swc1 $25, 76($4)
- swc1 $26, 80($4)
- swc1 $27, 84($4)
- swc1 $28, 88($4)
- swc1 $29, 92($4)
- swc1 $30, 96($4)
- swc1 $31, 100($4)
+ s.d $f20, 56($4)
+ s.d $f22, 64($4)
+ s.d $f24, 72($4)
+ s.d $f26, 80($4)
+ s.d $f28, 88($4)
+ s.d $f30, 96($4)
#endif
jr $ra
li $2, 0
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
index eb2f71cf99..9550518842 100644
--- a/lib/std/os/linux.zig
+++ b/lib/std/os/linux.zig
@@ -193,9 +193,29 @@ pub fn umount2(special: [*]const u8, flags: u32) usize {
pub fn mmap(address: ?[*]u8, length: usize, prot: usize, flags: u32, fd: i32, offset: u64) usize {
if (@hasDecl(@This(), "SYS_mmap2")) {
- return syscall6(SYS_mmap2, @ptrToInt(address), length, prot, flags, @bitCast(usize, isize(fd)), @truncate(usize, offset / MMAP2_UNIT));
+ // Make sure the offset is also specified in multiples of page size
+ if ((offset & (MMAP2_UNIT - 1)) != 0)
+ return @bitCast(usize, isize(-EINVAL));
+
+ return syscall6(
+ SYS_mmap2,
+ @ptrToInt(address),
+ length,
+ prot,
+ flags,
+ @bitCast(usize, isize(fd)),
+ @truncate(usize, offset / MMAP2_UNIT),
+ );
} else {
- return syscall6(SYS_mmap, @ptrToInt(address), length, prot, flags, @bitCast(usize, isize(fd)), offset);
+ return syscall6(
+ SYS_mmap,
+ @ptrToInt(address),
+ length,
+ prot,
+ flags,
+ @bitCast(usize, isize(fd)),
+ offset,
+ );
}
}