Browse Source

* first untested version for NetBSD. Might need ELF ident section.

marco 22 years ago
parent
commit
948a39ad4c
1 changed files with 165 additions and 0 deletions
  1. 165 0
      rtl/netbsd/powerpc/prt0.as

+ 165 - 0
rtl/netbsd/powerpc/prt0.as

@@ -0,0 +1,165 @@
+	.file	"crt0.c"
+gcc2_compiled.:
+	.globl __progname
+	.section	".data"	# .rodata
+	.align 2
+.LC0:
+	.string	""
+	.section	".sdata","aw"
+	.align 2
+	.type	 __progname,@object
+	.size	 __progname,4
+__progname:
+.LCP0:
+	.long (.LC0)@fixup
+	.section	".fixup","aw"
+	.align 2
+	.long	.LCP0
+	.previous
+	.globl __ps_strings
+	.align 2
+	.type	 __ps_strings,@object
+	.size	 __ps_strings,4
+__ps_strings:
+	.long 0
+	.weak _DYNAMIC
+	.weak _SDA_BASE_
+	.weak _SDA2_BASE_
+	.section	".got2","aw"
+.LCTOC1 = .+32768
+.LC1 = .-.LCTOC1
+	.long __progname
+.LC2 = .-.LCTOC1
+	.long environ
+.LC3 = .-.LCTOC1
+	.long __ps_strings
+.LC4 = .-.LCTOC1
+	.long _DYNAMIC
+.LC5 = .-.LCTOC1
+	.long _fini
+	.section	".text"
+	.align 2
+	.globl _start
+.LCL0:
+	.long .LCTOC1-.LCF0
+	.type	 _start,@function
+_start:
+	stwu 1,-48(1)
+	mflr 0
+	stw 24,16(1)
+	stw 25,20(1)
+	stw 26,24(1)
+	stw 27,28(1)
+	stw 28,32(1)
+	stw 29,36(1)
+	stw 30,40(1)
+	stw 31,44(1)
+	stw 0,52(1)
+	bl .LCF0
+.LCF0:
+	mflr 30
+	lwz 0,(.LCL0-.LCF0)(30)
+	add 30,0,30
+	mr 27,4
+	mr 24,3
+	mr 28,5
+	mr 25,6
+	mr 26,7
+	mr 29,8
+#	lis %r13,_SDA_BASE_@ha;addi %r13,%r13,_SDA_BASE_@l;lis %r2,_SDA2_BASE_@ha;addi %r2,%r2,_SDA2_BASE_@l
+	lwz 31,0(27)
+	cmpwi 0,31,0
+	bc 12,2,.L7
+	mr 3,31
+	li 4,47
+	bl _strrchr@local
+	lwz 9,.LC1(30)
+	cmpwi 0,3,0
+	stw 3,0(9)
+	bc 4,2,.L8
+	stw 31,0(9)
+	b .L12
+.L8:
+	addi 0,3,1
+	stw 0,0(9)
+.L12:
+.L7:
+	lwz 31,.LC2(30)
+	cmpwi 0,29,0
+	stw 28,0(31)
+	bc 12,2,.L10
+	lwz 9,.LC3(30)
+	stw 29,0(9)
+.L10:
+	lwz 0,.LC4(30)
+	cmpwi 0,0,0
+	bc 12,2,.L11
+	mr 3,26
+	mr 4,25
+.L11:
+	lwz 3,.LC5(30)
+	lwz 5,0(31)
+	mr 3,24
+	mr 4,27
+
+        lis     11,U_SYSTEM_ARGC@ha
+        stw     3,U_SYSTEM_ARGC@l(11);
+        lis     11,U_SYSTEM_ARGV@ha
+        stw     4,U_SYSTEM_ARGV@l(11); 
+        
+        lis     11,U_SYSTEM_ENVP@ha
+        stw     5,U_SYSTEM_ENVP@l(11); 
+	mtlr    0
+	bl PASCALMAIN
+
+
+        .globl  _haltproc
+        .type   _haltproc,@function
+
+_haltproc:
+	li      0,1              /* exit call */
+        lis     3,U_SYSTEM_EXITCODE@h
+        stw     3,U_SYSTEM_EXITCODE@l(3)
+        sc
+        b       _haltproc
+
+
+
+.Lfe1:
+	.size	 _start,.Lfe1-_start
+	.section .ident ; .asciz "$NetBSD: crt0.c,v 1.22 2002/05/09 20:32:59 matt Exp $" ; .text
+	.align 2
+	.type	 _strrchr,@function
+_strrchr:
+	rlwinm 4,4,0,0xff
+	li 10,0
+.L14:
+	lbz 0,0(3)
+	xor 9,0,4
+	neg 9,9
+	srawi 9,9,31
+	andc 11,3,9
+	cmpwi 0,0,0
+	and 9,10,9
+	or 10,9,11
+	addi 3,3,1
+	bc 4,2,.L14
+	mr 3,10
+	blr
+.Lfe2:
+	.size	 _strrchr,.Lfe2-_strrchr
+	.section	".data"	# .rodata
+	.align 2
+	.comm	environ,4,4
+	.comm	__mainprog_obj,4,4
+	.ident	"GCC: (GNU) 2.95.3 20010315 (release) (NetBSD nb3)"
+
+      .section ".data"
+      .globl  __data_start
+__data_start:
+data_start:
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
+___fpc_brk_addr: 
+        .long   0