Tests+Userland: Implement AARCH64 support for some inline assembly blobs

This commit is contained in:
Gunnar Beutner 2022-10-12 22:18:24 +02:00 committed by Linus Groh
parent dadf656dc9
commit 808c43312d
Notes: sideshowbarker 2024-07-17 10:54:57 +09:00
4 changed files with 25 additions and 0 deletions

View file

@ -11,9 +11,17 @@
#include <string.h>
#include <unistd.h>
#if ARCH(I386) || ARCH(X86_64)
asm("haxcode:\n"
"1: jmp 1b\n"
"haxcode_end:\n");
#elif ARCH(AARCH64)
asm("haxcode:\n"
"1: b 1b\n"
"haxcode_end:\n");
#else
# error Unknown architecture
#endif
extern "C" void haxcode();
extern "C" void haxcode_end();

View file

@ -62,9 +62,14 @@ void _entry(int, char**, char**) __attribute__((used));
NAKED void _start(int, char**, char**)
{
#ifdef AK_ARCH_AARCH64
asm(
"bl _entry\n");
#else
asm(
"push $0\n"
"jmp _entry@plt\n");
#endif
}
void _entry(int argc, char** argv, char** envp)

View file

@ -17,3 +17,10 @@ _longjmp:
longjmp:
# FIXME: Possibly incomplete.
ret
.global _sigsetjmp
.global sigsetjmp
_sigsetjmp:
sigsetjmp:
# FIXME: Possibly incomplete.
ret

View file

@ -25,9 +25,14 @@ void _start(int, char**, char**) __attribute__((used));
NAKED void _start(int, char**, char**)
{
# ifdef AK_ARCH_AARCH64
asm(
"bl _entry\n");
# else
asm(
"push $0\n"
"jmp _entry@plt\n");
# endif
}
int _entry(int argc, char** argv, char** env)