diff options
| author | joachimschmidt557 <joachim.schmidt557@outlook.com> | 2020-11-28 19:02:07 +0100 |
|---|---|---|
| committer | joachimschmidt557 <joachim.schmidt557@outlook.com> | 2020-11-28 23:26:17 +0100 |
| commit | ceebcb2b4dec91d3c57e9c44a10f51a5a4e14899 (patch) | |
| tree | 47043568361c53c92f1ac1f8e25b8927897dccf6 /test/stage2 | |
| parent | 2ad263658872a7b8b7bf3275c35d0e4c4faebccd (diff) | |
| download | zig-ceebcb2b4dec91d3c57e9c44a10f51a5a4e14899.tar.gz zig-ceebcb2b4dec91d3c57e9c44a10f51a5a4e14899.zip | |
stage2 ARM: add test case for addition
Diffstat (limited to 'test/stage2')
| -rw-r--r-- | test/stage2/arm.zig | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/stage2/arm.zig b/test/stage2/arm.zig index 8b15c88552..b77c6a8980 100644 --- a/test/stage2/arm.zig +++ b/test/stage2/arm.zig @@ -113,4 +113,40 @@ pub fn addCases(ctx: *TestContext) !void { "", ); } + + { + var case = ctx.exe("addition", linux_arm); + // Add two numbers + case.addCompareOutput( + \\export fn _start() noreturn { + \\ print(2, 4); + \\ print(1, 7); + \\ exit(); + \\} + \\ + \\fn print(a: u32, b: u32) void { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (4), + \\ [arg3] "{r2}" (a + b), + \\ [arg1] "{r0}" (1), + \\ [arg2] "{r1}" (@ptrToInt("123456789")) + \\ : "memory" + \\ ); + \\ return; + \\} + \\ + \\fn exit() noreturn { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (1), + \\ [arg1] "{r0}" (0) + \\ : "memory" + \\ ); + \\ unreachable; + \\} + , + "12345612345678", + ); + } } |
