| ... | @@ -155,4 +155,48 @@ pub fn addCases(ctx: *TestContext) !void { | ... | @@ -155,4 +155,48 @@ pub fn addCases(ctx: *TestContext) !void { |
| 155 | "Hello, World!\n", | 155 | "Hello, World!\n", |
| 156 | ); | 156 | ); |
| 157 | } | 157 | } |
| | 158 | |
| | 159 | { |
| | 160 | var case = ctx.exe("exit fn taking argument", macos_aarch64); |
| | 161 | |
| | 162 | case.addCompareOutput( |
| | 163 | \\export fn _start() noreturn { |
| | 164 | \\ exit(0); |
| | 165 | \\} |
| | 166 | \\ |
| | 167 | \\fn exit(ret: usize) noreturn { |
| | 168 | \\ asm volatile ("svc #0x80" |
| | 169 | \\ : |
| | 170 | \\ : [number] "{x16}" (1), |
| | 171 | \\ [arg1] "{x0}" (ret) |
| | 172 | \\ : "memory" |
| | 173 | \\ ); |
| | 174 | \\ unreachable; |
| | 175 | \\} |
| | 176 | , |
| | 177 | "", |
| | 178 | ); |
| | 179 | } |
| | 180 | |
| | 181 | { |
| | 182 | var case = ctx.exe("exit fn taking argument", linux_aarch64); |
| | 183 | |
| | 184 | case.addCompareOutput( |
| | 185 | \\export fn _start() noreturn { |
| | 186 | \\ exit(0); |
| | 187 | \\} |
| | 188 | \\ |
| | 189 | \\fn exit(ret: usize) noreturn { |
| | 190 | \\ asm volatile ("svc #0" |
| | 191 | \\ : |
| | 192 | \\ : [number] "{x8}" (93), |
| | 193 | \\ [arg1] "{x0}" (ret) |
| | 194 | \\ : "memory", "cc" |
| | 195 | \\ ); |
| | 196 | \\ unreachable; |
| | 197 | \\} |
| | 198 | , |
| | 199 | "", |
| | 200 | ); |
| | 201 | } |
| 158 | } | 202 | } |