Get aarch64 hello world working

$ m=aarch64-tiny
    $ make -j8 m=$m o/$m/tool/hello/hello.com o/third_party/qemu/qemu-aarch64
    $ o/third_party/qemu/qemu-aarch64 o/$m/tool/hello/hello.com
    hello world
    $ ls -hal o/$m/tool/hello/hello.com
    -rwxr-xr-x 1 jart jart 4.0K May  9 05:04 o/aarch64-tiny/tool/hello/hello.com
This commit is contained in:
Justine Tunney 2023-05-09 02:35:05 -07:00
parent e5e3cdf447
commit ae0ee59614
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
174 changed files with 1454 additions and 851 deletions

View file

@ -55,16 +55,21 @@ errfun() {
ERRNO="$2"
{
printf '#include "libc/macros.internal.h"\n.text.unlikely\n\n'
printf '%s:' "$NAME"
if [ "${#NAME}" -gt 6 ]; then
printf '\n'
fi
printf ' .leafprologue
printf '%s:\n' "$NAME"
printf '#ifdef __x86_64__
.leafprologue
.profilable
mov %s(%%rip),%%ecx
jmp __errfun
#elif defined(__aarch64__)
adrp x1,%s
ldr w0,[x1,#:lo12:%s]
b __errfun
#else
#error "unsupported architecture"
#endif
.endfn %s,globl,hidden
' "$ERRNO" "$NAME"
' "$ERRNO" "$ERRNO" "$ERRNO" "$NAME"
} >"$dir/${1/$/-}.S"
}