aboutsummaryrefslogtreecommitdiff
path: root/test/cases/arm-linux/function_pointers.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-05-04 23:51:16 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-05-04 23:51:16 +0200
commit3624e1ef485c3575cb0c57a312386f49daf7ad37 (patch)
tree4d940b2b245e885448d8072f61fbc88074f57d1f /test/cases/arm-linux/function_pointers.zig
parent9d79b740bc981da9f336d5c72d1abe7d81e6ad9f (diff)
downloadzig-3624e1ef485c3575cb0c57a312386f49daf7ad37.tar.gz
zig-3624e1ef485c3575cb0c57a312386f49daf7ad37.zip
test: move compile errors and incremental tests into common dir
Diffstat (limited to 'test/cases/arm-linux/function_pointers.zig')
-rw-r--r--test/cases/arm-linux/function_pointers.zig44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/cases/arm-linux/function_pointers.zig b/test/cases/arm-linux/function_pointers.zig
new file mode 100644
index 0000000000..0ef5df6745
--- /dev/null
+++ b/test/cases/arm-linux/function_pointers.zig
@@ -0,0 +1,44 @@
+const PrintFn = *const fn () void;
+
+pub fn main() void {
+ var printFn: PrintFn = stopSayingThat;
+ var i: u32 = 0;
+ while (i < 4) : (i += 1) printFn();
+
+ printFn = moveEveryZig;
+ printFn();
+}
+
+fn stopSayingThat() void {
+ asm volatile ("svc #0"
+ :
+ : [number] "{r7}" (4),
+ [arg1] "{r0}" (1),
+ [arg2] "{r1}" (@ptrToInt("Hello, my name is Inigo Montoya; you killed my father, prepare to die.\n")),
+ [arg3] "{r2}" ("Hello, my name is Inigo Montoya; you killed my father, prepare to die.\n".len),
+ : "memory"
+ );
+ return;
+}
+
+fn moveEveryZig() void {
+ asm volatile ("svc #0"
+ :
+ : [number] "{r7}" (4),
+ [arg1] "{r0}" (1),
+ [arg2] "{r1}" (@ptrToInt("All your codebase are belong to us\n")),
+ [arg3] "{r2}" ("All your codebase are belong to us\n".len),
+ : "memory"
+ );
+ return;
+}
+
+// run
+// target=arm-linux
+//
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// All your codebase are belong to us
+//