| /* |
| * Non-libc syscall hello world for Aarch64 BE |
| * |
| * SPDX-License-Identifier: GPL-2.0-or-later |
| */ |
| |
| #define __NR_write 64 |
| #define __NR_exit 93 |
| |
| int write(int fd, char *buf, int len) |
| { |
| register int x0 __asm__("x0") = fd; |
| register char *x1 __asm__("x1") = buf; |
| register int x2 __asm__("x2") = len; |
| register int x8 __asm__("x8") = __NR_write; |
| |
| asm volatile("svc #0" : : "r"(x0), "r"(x1), "r"(x2), "r"(x8)); |
| |
| return len; |
| } |
| |
| void exit(int ret) |
| { |
| register int x0 __asm__("x0") = ret; |
| register int x8 __asm__("x8") = __NR_exit; |
| |
| asm volatile("svc #0" : : "r"(x0), "r"(x8)); |
| __builtin_unreachable(); |
| } |
| |
| void _start(void) |
| { |
| write(1, "Hello World\n", 12); |
| exit(0); |
| } |