diff --git a/test/standalone/build.zig.zon b/test/standalone/build.zig.zon index c57837c8e6600888ac2f0cb964a36e83809ca177..b5778a34dbe3c946df5b4559549bb0e009dbe6a4 100644 --- a/test/standalone/build.zig.zon +++ b/test/standalone/build.zig.zon @@ -37,8 +37,8 @@ .issue_339 = .{ .path = "issue_339", }, - .issue_8550 = .{ - .path = "issue_8550", + .compile_asm = .{ + .path = "compile_asm", }, .issue_794 = .{ .path = "issue_794", diff --git a/test/standalone/compile_asm/boot.S b/test/standalone/compile_asm/boot.S new file mode 100644 index 0000000000000000000000000000000000000000..20fd01eefa5da6cd59fa10eb4fb8fda8829b497b --- /dev/null +++ b/test/standalone/compile_asm/boot.S @@ -0,0 +1,33 @@ + .section ".text.boot" + + .global _start + + _start: + mrc p15, #0, r1, c0, c0, #5 + and r1, r1, #3 + cmp r1, #0 + bne halt + + mov sp, #0x8000 + + ldr r4, =__bss_start + ldr r9, =__bss_end + mov r5, #0 + mov r6, #0 + mov r7, #0 + mov r8, #0 + b 2f + + 1: + stmia r4!, {r5-r8} + + 2: + cmp r4, r9 + blo 1b + + ldr r3, =main + blx r3 + + halt: + wfe + b halt diff --git a/test/standalone/compile_asm/build.zig b/test/standalone/compile_asm/build.zig new file mode 100644 index 0000000000000000000000000000000000000000..ee82332973d072bf7464dca1f2c4606e09c4e4eb --- /dev/null +++ b/test/standalone/compile_asm/build.zig @@ -0,0 +1,29 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const test_step = b.step("test", "Test it"); + b.default_step = test_step; + + const optimize: std.builtin.OptimizeMode = .Debug; + const target = b.resolveTargetQuery(.{ + .os_tag = .freestanding, + .cpu_arch = .arm, + .cpu_model = .{ + .explicit = &std.Target.arm.cpu.arm1176jz_s, + }, + }); + + const kernel = b.addExecutable(.{ + .name = "kernel", + .root_module = b.createModule(.{ + .root_source_file = b.path("./main.zig"), + .optimize = optimize, + .target = target, + }), + }); + kernel.root_module.addObjectFile(b.path("./boot.S")); + kernel.setLinkerScript(b.path("./linker.ld")); + b.installArtifact(kernel); + + test_step.dependOn(&kernel.step); +} diff --git a/test/standalone/compile_asm/linker.ld b/test/standalone/compile_asm/linker.ld new file mode 100644 index 0000000000000000000000000000000000000000..9c6c96eea9c9c764407f72c1b78ea448d94e0b57 --- /dev/null +++ b/test/standalone/compile_asm/linker.ld @@ -0,0 +1,42 @@ +ENTRY(_start) + +SECTIONS +{ + /* Starts at LOADER_ADDR. */ + . = 0x8000; + __start = .; + __text_start = .; + .text : + { + KEEP(*(.text.boot)) + *(.text) + } + . = ALIGN(4096); /* align to page size */ + __text_end = .; + + __rodata_start = .; + .rodata : + { + *(.rodata) + } + . = ALIGN(4096); /* align to page size */ + __rodata_end = .; + + __data_start = .; + .data : + { + *(.data) + } + . = ALIGN(4096); /* align to page size */ + __data_end = .; + + __bss_start = .; + .bss : + { + bss = .; + *(.bss) + } + . = ALIGN(4096); /* align to page size */ + __bss_end = .; + __end = .; +} diff --git a/test/standalone/compile_asm/main.zig b/test/standalone/compile_asm/main.zig new file mode 100644 index 0000000000000000000000000000000000000000..1e6c93e562dee9f1d7eab41b4214241cfc4cc754 --- /dev/null +++ b/test/standalone/compile_asm/main.zig @@ -0,0 +1,11 @@ +export fn main(r0: u32, r1: u32, atags: u32) callconv(.c) noreturn { + _ = r0; + _ = r1; + _ = atags; + unreachable; // never gets run so it doesn't matter +} +pub fn panic(msg: []const u8, error_return_trace: ?*@import("std").builtin.StackTrace, _: ?usize) noreturn { + _ = msg; + _ = error_return_trace; + while (true) {} +} diff --git a/test/standalone/issue_8550/boot.S b/test/standalone/issue_8550/boot.S deleted file mode 100644 index 20fd01eefa5da6cd59fa10eb4fb8fda8829b497b..0000000000000000000000000000000000000000 --- a/test/standalone/issue_8550/boot.S +++ /dev/null @@ -1,33 +0,0 @@ - .section ".text.boot" - - .global _start - - _start: - mrc p15, #0, r1, c0, c0, #5 - and r1, r1, #3 - cmp r1, #0 - bne halt - - mov sp, #0x8000 - - ldr r4, =__bss_start - ldr r9, =__bss_end - mov r5, #0 - mov r6, #0 - mov r7, #0 - mov r8, #0 - b 2f - - 1: - stmia r4!, {r5-r8} - - 2: - cmp r4, r9 - blo 1b - - ldr r3, =main - blx r3 - - halt: - wfe - b halt diff --git a/test/standalone/issue_8550/build.zig b/test/standalone/issue_8550/build.zig deleted file mode 100644 index ee82332973d072bf7464dca1f2c4606e09c4e4eb..0000000000000000000000000000000000000000 --- a/test/standalone/issue_8550/build.zig +++ /dev/null @@ -1,29 +0,0 @@ -const std = @import("std"); - -pub fn build(b: *std.Build) !void { - const test_step = b.step("test", "Test it"); - b.default_step = test_step; - - const optimize: std.builtin.OptimizeMode = .Debug; - const target = b.resolveTargetQuery(.{ - .os_tag = .freestanding, - .cpu_arch = .arm, - .cpu_model = .{ - .explicit = &std.Target.arm.cpu.arm1176jz_s, - }, - }); - - const kernel = b.addExecutable(.{ - .name = "kernel", - .root_module = b.createModule(.{ - .root_source_file = b.path("./main.zig"), - .optimize = optimize, - .target = target, - }), - }); - kernel.root_module.addObjectFile(b.path("./boot.S")); - kernel.setLinkerScript(b.path("./linker.ld")); - b.installArtifact(kernel); - - test_step.dependOn(&kernel.step); -} diff --git a/test/standalone/issue_8550/linker.ld b/test/standalone/issue_8550/linker.ld deleted file mode 100644 index 9c6c96eea9c9c764407f72c1b78ea448d94e0b57..0000000000000000000000000000000000000000 --- a/test/standalone/issue_8550/linker.ld +++ /dev/null @@ -1,42 +0,0 @@ -ENTRY(_start) - -SECTIONS -{ - /* Starts at LOADER_ADDR. */ - . = 0x8000; - __start = .; - __text_start = .; - .text : - { - KEEP(*(.text.boot)) - *(.text) - } - . = ALIGN(4096); /* align to page size */ - __text_end = .; - - __rodata_start = .; - .rodata : - { - *(.rodata) - } - . = ALIGN(4096); /* align to page size */ - __rodata_end = .; - - __data_start = .; - .data : - { - *(.data) - } - . = ALIGN(4096); /* align to page size */ - __data_end = .; - - __bss_start = .; - .bss : - { - bss = .; - *(.bss) - } - . = ALIGN(4096); /* align to page size */ - __bss_end = .; - __end = .; -} diff --git a/test/standalone/issue_8550/main.zig b/test/standalone/issue_8550/main.zig deleted file mode 100644 index 1e6c93e562dee9f1d7eab41b4214241cfc4cc754..0000000000000000000000000000000000000000 --- a/test/standalone/issue_8550/main.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn main(r0: u32, r1: u32, atags: u32) callconv(.c) noreturn { - _ = r0; - _ = r1; - _ = atags; - unreachable; // never gets run so it doesn't matter -} -pub fn panic(msg: []const u8, error_return_trace: ?*@import("std").builtin.StackTrace, _: ?usize) noreturn { - _ = msg; - _ = error_return_trace; - while (true) {} -}