mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 19:29:26 +02:00
* first try at init code.
This commit is contained in:
parent
035ad566f9
commit
ae88b7051b
443
rtl/netbsd/powerpc/cprt0.as
Normal file
443
rtl/netbsd/powerpc/cprt0.as
Normal file
@ -0,0 +1,443 @@
|
||||
.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
|
||||
bl _rtld_setup@plt
|
||||
.L11:
|
||||
lwz 3,.LC5(30)
|
||||
bl atexit@plt
|
||||
bl _init@plt
|
||||
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 main@plt
|
||||
|
||||
_haltproc:
|
||||
lis 3,U_SYSTEM_EXITCODE@h
|
||||
stw 3,U_SYSTEM_EXITCODE@l(3)
|
||||
bl exit@plt
|
||||
.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
|
||||
.LC6:
|
||||
.string "Corrupt Obj_Entry pointer in GOT\n"
|
||||
.align 2
|
||||
.LC8:
|
||||
.string "Dynamic linker version mismatch\n"
|
||||
.section ".got2","aw"
|
||||
.LC7 = .-.LCTOC1
|
||||
.long .LC6
|
||||
.LC9 = .-.LCTOC1
|
||||
.long .LC8
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _rtld_setup
|
||||
.LCL1:
|
||||
.long .LCTOC1-.LCF1
|
||||
.type _rtld_setup,@function
|
||||
_rtld_setup:
|
||||
stwu 1,-32(1)
|
||||
mflr 0
|
||||
stw 29,20(1)
|
||||
stw 30,24(1)
|
||||
stw 31,28(1)
|
||||
stw 0,36(1)
|
||||
bl .LCF1
|
||||
.LCF1:
|
||||
mflr 30
|
||||
lwz 0,(.LCL1-.LCF1)(30)
|
||||
add 30,0,30
|
||||
mr. 31,4
|
||||
mr 29,3
|
||||
bc 12,2,.L22
|
||||
lwz 9,0(31)
|
||||
lis 0,0xd550
|
||||
ori 0,0,47226
|
||||
cmpw 0,9,0
|
||||
bc 12,2,.L21
|
||||
.L22:
|
||||
lwz 6,.LC7(30)
|
||||
li 3,0
|
||||
li 4,4
|
||||
li 5,2
|
||||
li 7,33
|
||||
crxor 6,6,6
|
||||
bl __syscall@plt
|
||||
li 3,0
|
||||
li 4,1
|
||||
li 5,1
|
||||
crxor 6,6,6
|
||||
bl __syscall@plt
|
||||
.L21:
|
||||
lwz 0,4(31)
|
||||
cmpwi 0,0,1
|
||||
bc 12,2,.L27
|
||||
lwz 6,.LC9(30)
|
||||
li 3,0
|
||||
li 4,4
|
||||
li 5,2
|
||||
li 7,32
|
||||
crxor 6,6,6
|
||||
bl __syscall@plt
|
||||
li 3,0
|
||||
li 4,1
|
||||
li 5,1
|
||||
crxor 6,6,6
|
||||
bl __syscall@plt
|
||||
.L27:
|
||||
mr 3,29
|
||||
bl atexit@plt
|
||||
lwz 0,36(1)
|
||||
mtlr 0
|
||||
lwz 29,20(1)
|
||||
lwz 30,24(1)
|
||||
lwz 31,28(1)
|
||||
la 1,32(1)
|
||||
blr
|
||||
.Lfe3:
|
||||
.size _rtld_setup,.Lfe3-_rtld_setup
|
||||
.weak dlopen ; dlopen = _dlopen
|
||||
.weak dlclose ; dlclose = _dlclose
|
||||
.weak dlsym ; dlsym = _dlsym
|
||||
.weak dlerror ; dlerror = _dlerror
|
||||
.weak dladdr ; dladdr = _dladdr
|
||||
.section ".got2","aw"
|
||||
.LC10 = .-.LCTOC1
|
||||
.long __mainprog_obj
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _dlopen
|
||||
.LCL2:
|
||||
.long .LCTOC1-.LCF2
|
||||
.type _dlopen,@function
|
||||
_dlopen:
|
||||
stwu 1,-16(1)
|
||||
mflr 0
|
||||
stw 30,8(1)
|
||||
stw 31,12(1)
|
||||
stw 0,20(1)
|
||||
bl .LCF2
|
||||
.LCF2:
|
||||
mflr 30
|
||||
lwz 0,(.LCL2-.LCF2)(30)
|
||||
add 30,0,30
|
||||
lwz 9,.LC10(30)
|
||||
lwz 9,0(9)
|
||||
cmpwi 0,9,0
|
||||
bc 12,2,.L33
|
||||
lwz 0,140(9)
|
||||
mtlr 0
|
||||
blrl
|
||||
b .L34
|
||||
.L33:
|
||||
li 3,0
|
||||
.L34:
|
||||
lwz 0,20(1)
|
||||
mtlr 0
|
||||
lwz 30,8(1)
|
||||
lwz 31,12(1)
|
||||
la 1,16(1)
|
||||
blr
|
||||
.Lfe4:
|
||||
.size _dlopen,.Lfe4-_dlopen
|
||||
.section ".got2","aw"
|
||||
.LC11 = .-.LCTOC1
|
||||
.long __mainprog_obj
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _dlclose
|
||||
.LCL3:
|
||||
.long .LCTOC1-.LCF3
|
||||
.type _dlclose,@function
|
||||
_dlclose:
|
||||
stwu 1,-16(1)
|
||||
mflr 0
|
||||
stw 30,8(1)
|
||||
stw 31,12(1)
|
||||
stw 0,20(1)
|
||||
bl .LCF3
|
||||
.LCF3:
|
||||
mflr 30
|
||||
lwz 0,(.LCL3-.LCF3)(30)
|
||||
add 30,0,30
|
||||
lwz 9,.LC11(30)
|
||||
lwz 9,0(9)
|
||||
cmpwi 0,9,0
|
||||
bc 12,2,.L36
|
||||
lwz 0,152(9)
|
||||
mtlr 0
|
||||
blrl
|
||||
b .L37
|
||||
.L36:
|
||||
li 3,-1
|
||||
.L37:
|
||||
lwz 0,20(1)
|
||||
mtlr 0
|
||||
lwz 30,8(1)
|
||||
lwz 31,12(1)
|
||||
la 1,16(1)
|
||||
blr
|
||||
.Lfe5:
|
||||
.size _dlclose,.Lfe5-_dlclose
|
||||
.section ".got2","aw"
|
||||
.LC12 = .-.LCTOC1
|
||||
.long __mainprog_obj
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _dlsym
|
||||
.LCL4:
|
||||
.long .LCTOC1-.LCF4
|
||||
.type _dlsym,@function
|
||||
_dlsym:
|
||||
stwu 1,-16(1)
|
||||
mflr 0
|
||||
stw 30,8(1)
|
||||
stw 31,12(1)
|
||||
stw 0,20(1)
|
||||
bl .LCF4
|
||||
.LCF4:
|
||||
mflr 30
|
||||
lwz 0,(.LCL4-.LCF4)(30)
|
||||
add 30,0,30
|
||||
lwz 9,.LC12(30)
|
||||
lwz 9,0(9)
|
||||
cmpwi 0,9,0
|
||||
bc 12,2,.L39
|
||||
lwz 0,144(9)
|
||||
mtlr 0
|
||||
blrl
|
||||
b .L40
|
||||
.L39:
|
||||
li 3,0
|
||||
.L40:
|
||||
lwz 0,20(1)
|
||||
mtlr 0
|
||||
lwz 30,8(1)
|
||||
lwz 31,12(1)
|
||||
la 1,16(1)
|
||||
blr
|
||||
.Lfe6:
|
||||
.size _dlsym,.Lfe6-_dlsym
|
||||
.section ".data" # .rodata
|
||||
.align 2
|
||||
.LC14:
|
||||
.string "Dynamic linker interface not available"
|
||||
.section ".got2","aw"
|
||||
.LC13 = .-.LCTOC1
|
||||
.long __mainprog_obj
|
||||
.LC15 = .-.LCTOC1
|
||||
.long .LC14
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _dlerror
|
||||
.LCL5:
|
||||
.long .LCTOC1-.LCF5
|
||||
.type _dlerror,@function
|
||||
_dlerror:
|
||||
stwu 1,-16(1)
|
||||
mflr 0
|
||||
stw 30,8(1)
|
||||
stw 31,12(1)
|
||||
stw 0,20(1)
|
||||
bl .LCF5
|
||||
.LCF5:
|
||||
mflr 30
|
||||
lwz 0,(.LCL5-.LCF5)(30)
|
||||
add 30,0,30
|
||||
lwz 9,.LC13(30)
|
||||
lwz 9,0(9)
|
||||
cmpwi 0,9,0
|
||||
bc 12,2,.L42
|
||||
lwz 0,148(9)
|
||||
mtlr 0
|
||||
blrl
|
||||
b .L43
|
||||
.L42:
|
||||
lwz 3,.LC15(30)
|
||||
.L43:
|
||||
lwz 0,20(1)
|
||||
mtlr 0
|
||||
lwz 30,8(1)
|
||||
lwz 31,12(1)
|
||||
la 1,16(1)
|
||||
blr
|
||||
.Lfe7:
|
||||
.size _dlerror,.Lfe7-_dlerror
|
||||
.section ".got2","aw"
|
||||
.LC16 = .-.LCTOC1
|
||||
.long __mainprog_obj
|
||||
.section ".text"
|
||||
.align 2
|
||||
.globl _dladdr
|
||||
.LCL6:
|
||||
.long .LCTOC1-.LCF6
|
||||
.type _dladdr,@function
|
||||
_dladdr:
|
||||
stwu 1,-16(1)
|
||||
mflr 0
|
||||
stw 30,8(1)
|
||||
stw 31,12(1)
|
||||
stw 0,20(1)
|
||||
bl .LCF6
|
||||
.LCF6:
|
||||
mflr 30
|
||||
lwz 0,(.LCL6-.LCF6)(30)
|
||||
add 30,0,30
|
||||
lwz 9,.LC16(30)
|
||||
lwz 9,0(9)
|
||||
cmpwi 0,9,0
|
||||
bc 12,2,.L45
|
||||
lwz 0,156(9)
|
||||
mtlr 0
|
||||
blrl
|
||||
b .L46
|
||||
.L45:
|
||||
li 3,-1
|
||||
.L46:
|
||||
lwz 0,20(1)
|
||||
mtlr 0
|
||||
lwz 30,8(1)
|
||||
lwz 31,12(1)
|
||||
la 1,16(1)
|
||||
blr
|
||||
|
||||
.Lfe8:
|
||||
.size _dladdr,.Lfe8-_dladdr
|
||||
.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
|
Loading…
Reference in New Issue
Block a user