wip: M2 ARM

This commit is contained in:
Jan (janneke) Nieuwenhuizen 2022-05-01 12:00:00 +02:00 committed by Jan Nieuwenhuizen
parent 76c1ecf561
commit d23385f1e7
5 changed files with 26 additions and 28 deletions

View File

@ -143,7 +143,6 @@ DEFINE pop____%lr 04e09de4
# L1y:
DEFINE push___$i32 04909fe504902de5000000ea
DEFINE push___%r0 04002de5 # str r0, [sp, #-4]!
DEFINE push___%r1 04102de5 # str r1, [sp, #-4]!
DEFINE push___%r2 04202de5 # str r2, [sp, #-4]!

View File

@ -23,6 +23,6 @@ void
_exit ()
{
asm ("SYS_exit mov____$i8,%r7");
asm ("!20 ldr____%r0,(%fp,+#$i8)");
asm ("!4 ldr____%r0,(%fp,-#$i8)");
asm ("swi____$0");
}

View File

@ -23,8 +23,8 @@ void
_write ()
{
asm ("SYS_write mov____$i8,%r7");
asm ("!20 ldr____%r0,(%fp,+#$i8)");
asm ("!16 ldr____%r1,(%fp,+#$i8)");
asm ("!12 ldr____%r2,(%fp,+#$i8)");
asm ("!4 ldr____%r0,(%fp,-#$i8)");
asm ("!8 ldr____%r1,(%fp,-#$i8)");
asm ("!12 ldr____%r2,(%fp,-#$i8)");
asm ("swi____$0");
}

View File

@ -26,58 +26,57 @@ int errno;
int
__sys_call (int sys_call)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("swi____$0");
}
int
__sys_call1 (int sys_call, int one)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!16 ldr____%r0,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("!8 ldr____%r0,(%fp,-#$i8)");
asm ("swi____$0");
}
int
__sys_call2 (int sys_call, int one, int two)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!16 ldr____%r0,(%fp,+#$i8)");
asm ("!12 ldr____%r1,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("!8 ldr____%r0,(%fp,-#$i8)");
asm ("!12 ldr____%r1,(%fp,-#$i8)");
asm ("swi____$0");
}
int
__sys_call3 (int sys_call, int one, int two, int three)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!16 ldr____%r0,(%fp,+#$i8)");
asm ("!12 ldr____%r1,(%fp,+#$i8)");
asm ("!8 ldr____%r2,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("!8 ldr____%r0,(%fp,-#$i8)");
asm ("!12 ldr____%r1,(%fp,-#$i8)");
asm ("!16 ldr____%r2,(%fp,-#$i8)");
asm ("swi____$0");
}
int
__sys_call4 (int sys_call, int one, int two, int three, int four)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!16 ldr____%r0,(%fp,+#$i8)");
asm ("!12 ldr____%r1,(%fp,+#$i8)");
asm ("!8 ldr____%r2,(%fp,+#$i8)");
asm ("!4 ldr____%r3,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("!8 ldr____%r0,(%fp,-#$i8)");
asm ("!12 ldr____%r1,(%fp,-#$i8)");
asm ("!16 ldr____%r2,(%fp,-#$i8)");
asm ("!20 ldr____%r2,(%fp,-#$i8)");
asm ("swi____$0");
}
int
__sys_call6 (int sys_call, int one, int two, int three, int four, int five, int six)
{
asm ("!20 ldr____%r7,(%fp,+#$i8)");
asm ("!16 ldr____%r0,(%fp,+#$i8)");
asm ("!12 ldr____%r1,(%fp,+#$i8)");
asm ("!8 ldr____%r2,(%fp,+#$i8)");
asm ("!4 ldr____%r3,(%fp,+#$i8)");
asm ("!0 ldr____%r4,(%fp,+#$i8)");
asm ("!-4 ldr____%r5,(%fp,+#$i8)");
asm ("!4 ldr____%r7,(%fp,-#$i8)");
asm ("!8 ldr____%r0,(%fp,-#$i8)");
asm ("!12 ldr____%r1,(%fp,-#$i8)");
asm ("!16 ldr____%r2,(%fp,-#$i8)");
asm ("!20 ldr____%r2,(%fp,-#$i8)");
asm ("!24 ldr____%r2,(%fp,-#$i8)");
asm ("swi____$0");
}

View File

@ -43,7 +43,7 @@
28 00 # e_machine Indicating 32bit ARM
01 00 00 00 # e_version Indicating original elf
&ELF_text # e_entry Address of the entry point
&_start # e_entry Address of the entry point
%ELF_program_headers>ELF_base # e_phoff Address of program header table
%ELF_section_headers>ELF_base # e_shoff Address of section header table