diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/crt_arch.h | 9 | ||||
-rw-r--r-- | arch/i386/crt_arch.h | 13 | ||||
-rw-r--r-- | arch/microblaze/crt_arch.h | 11 | ||||
-rw-r--r-- | arch/mips/crt_arch.h | 21 | ||||
-rw-r--r-- | arch/powerpc/crt_arch.h | 12 | ||||
-rw-r--r-- | arch/x86_64/crt_arch.h | 9 |
6 files changed, 75 insertions, 0 deletions
diff --git a/arch/arm/crt_arch.h b/arch/arm/crt_arch.h new file mode 100644 index 00000000..979fb081 --- /dev/null +++ b/arch/arm/crt_arch.h @@ -0,0 +1,9 @@ +__asm__("\ +.global _start \n\ +_start: \n\ + mov fp, #0 \n\ + mov lr, #0 \n\ + mov a1, sp \n\ + and sp, sp, #-16 \n\ + bl __cstart \n\ +"); diff --git a/arch/i386/crt_arch.h b/arch/i386/crt_arch.h new file mode 100644 index 00000000..ae694f99 --- /dev/null +++ b/arch/i386/crt_arch.h @@ -0,0 +1,13 @@ +__asm__("\ +.text \n\ +.global _start \n\ +_start: \n\ + xor %ebp,%ebp \n\ + mov %esp,%eax \n\ + and $-16,%esp \n\ + push %eax \n\ + push %eax \n\ + push %eax \n\ + push %eax \n\ + call __cstart \n\ +"); diff --git a/arch/microblaze/crt_arch.h b/arch/microblaze/crt_arch.h new file mode 100644 index 00000000..8917c695 --- /dev/null +++ b/arch/microblaze/crt_arch.h @@ -0,0 +1,11 @@ +__asm__("\ +.global _start \n\ +.align 2 \n\ +_start: \n\ + add r19, r0, r0 \n\ + ori r5, r1, 0 \n\ + andi r1, r1, -8 \n\ + addik r1, r1, -8 \n\ + bri __cstart \n\ + nop \n\ +"); diff --git a/arch/mips/crt_arch.h b/arch/mips/crt_arch.h new file mode 100644 index 00000000..d4ae52d1 --- /dev/null +++ b/arch/mips/crt_arch.h @@ -0,0 +1,21 @@ +__asm__("\n\ +.set push\n\ +.set noreorder\n\ +.global __start\n\ +.global _start\n\ +.type __start, @function\n\ +.type _start, @function\n\ +__start:\n\ +_start:\n\ + bal 1f \n\ + move $fp, $0 \n\ +2: .gpword 2b \n\ +1: lw $gp, 0($ra) \n\ + subu $gp, $ra, $gp \n\ + move $4, $sp \n\ + subu $sp, $sp, 16 \n\ + and $sp, $sp, -8 \n\ + lw $25, %call16(__cstart)($gp) \n\ + jalr $25 \n\ + nop \n\ +.set pop"); diff --git a/arch/powerpc/crt_arch.h b/arch/powerpc/crt_arch.h new file mode 100644 index 00000000..8cc53d98 --- /dev/null +++ b/arch/powerpc/crt_arch.h @@ -0,0 +1,12 @@ +__asm__("\ +.global _start \n\ +.type _start, %function \n\ +_start: \n\ + mr 3, 1 \n\ + clrrwi 1, 1, 4 \n\ + li 0, 0 \n\ + stwu 1, -16(1) \n\ + mtlr 0 \n\ + stw 0, 0(1) \n\ + bl __cstart \n\ +"); diff --git a/arch/x86_64/crt_arch.h b/arch/x86_64/crt_arch.h new file mode 100644 index 00000000..db692950 --- /dev/null +++ b/arch/x86_64/crt_arch.h @@ -0,0 +1,9 @@ +__asm__("\ +.text \n\ +.global _start \n\ +_start: \n\ + xor %rbp,%rbp \n\ + mov %rsp,%rdi \n\ + andq $-16,%rsp \n\ + call __cstart \n\ +"); |