From 4f2618e75bfbaaea755c7fec14f5ae844eb3d0f8 Mon Sep 17 00:00:00 2001 From: joachimschmidt557 Date: Sun, 23 Aug 2020 23:10:19 +0200 Subject: [PATCH] stage2: Add Hello World test for ARM backend --- src-self-hosted/codegen.zig | 2 +- test/stage2/test.zig | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src-self-hosted/codegen.zig b/src-self-hosted/codegen.zig index 4d6075e2e9..e0caaba38f 100644 --- a/src-self-hosted/codegen.zig +++ b/src-self-hosted/codegen.zig @@ -1277,7 +1277,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { mem.writeIntBig(u32, try self.code.addManyAsArray(4), Instruction.bkpt(0).toU32()); }, else => return self.fail(src, "TODO implement @breakpoint() for {}", .{self.target.cpu.arch}), - } + } return .none; } diff --git a/test/stage2/test.zig b/test/stage2/test.zig index 627cfc7fe0..fee8886ddb 100644 --- a/test/stage2/test.zig +++ b/test/stage2/test.zig @@ -18,6 +18,11 @@ const linux_riscv64 = std.zig.CrossTarget{ .os_tag = .linux, }; +const linux_arm = std.zig.CrossTarget{ + .cpu_arch = .arm, + .os_tag = .linux, +}; + const wasi = std.zig.CrossTarget{ .cpu_arch = .wasm32, .os_tag = .wasi, @@ -181,6 +186,41 @@ pub fn addCases(ctx: *TestContext) !void { ); } + { + var case = ctx.exe("hello world", linux_arm); + // Regular old hello world + case.addCompareOutput( + \\export fn _start() noreturn { + \\ print(); + \\ exit(); + \\} + \\ + \\fn print() void { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (4), + \\ [arg1] "{r0}" (1), + \\ [arg2] "{r1}" (@ptrToInt("Hello, World!\n")), + \\ [arg3] "{r2}" (14) + \\ : "memory" + \\ ); + \\ return; + \\} + \\ + \\fn exit() noreturn { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (1), + \\ [arg1] "{r0}" (0) + \\ : "memory" + \\ ); + \\ unreachable; + \\} + , + "Hello, World!\n", + ); + } + { var case = ctx.exe("adding numbers at comptime", linux_x64); case.addCompareOutput(