aboutsummaryrefslogtreecommitdiff
path: root/std/std.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2015-12-15 00:46:56 -0700
committerAndrew Kelley <superjoe30@gmail.com>2015-12-15 00:46:56 -0700
commita292eb8d64da4383f2d4637f231d338ed9c680e0 (patch)
tree1a368a2cc65675b793651a8da83b6cd12b8a4bca /std/std.zig
parent66ca916805efee6b35b8dd6104fb1da50dd1dc8b (diff)
downloadzig-a292eb8d64da4383f2d4637f231d338ed9c680e0.tar.gz
zig-a292eb8d64da4383f2d4637f231d338ed9c680e0.zip
support inline assembly expressions with return type
Diffstat (limited to 'std/std.zig')
-rw-r--r--std/std.zig12
1 files changed, 4 insertions, 8 deletions
diff --git a/std/std.zig b/std/std.zig
index ea3b0d20f6..d3ce4f976c 100644
--- a/std/std.zig
+++ b/std/std.zig
@@ -3,20 +3,17 @@ const SYS_exit : isize = 60;
const stdout_fileno : isize = 1;
fn syscall1(number: isize, arg1: isize) -> isize {
- var result : isize;
asm volatile ("
mov %[number], %%rax
mov %[arg1], %%rdi
syscall
mov %%rax, %[ret]"
- : [ret] "=m" (result)
+ : [ret] "=r" (return isize)
: [number] "r" (number), [arg1] "r" (arg1)
- : "rcx", "r11", "rax", "rdi");
- return result;
+ : "rcx", "r11", "rax", "rdi")
}
fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
- var result : isize;
asm volatile ("
mov %[number], %%rax
mov %[arg1], %%rdi
@@ -24,10 +21,9 @@ fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
mov %[arg3], %%rdx
syscall
mov %%rax, %[ret]"
- : [ret] "=m" (result)
+ : [ret] "=r" (return isize)
: [number] "r" (number), [arg1] "r" (arg1), [arg2] "r" (arg2), [arg3] "r" (arg3)
- : "rcx", "r11", "rax", "rdi", "rsi", "rdx");
- return result;
+ : "rcx", "r11", "rax", "rdi", "rsi", "rdx")
}
pub fn write(fd: isize, buf: &const u8, count: usize) -> isize {