mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-03 03:38:37 +02:00
* some cleanup, comments added
This commit is contained in:
parent
433693deca
commit
9d93c8421c
@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
This file is part of the Free Pascal run time library.
|
This file is part of the Free Pascal run time library.
|
||||||
Copyright (c) 2004 by Karoly Balogh for Genesi Sarl.
|
Copyright (c) 2004 by Karoly Balogh for Genesi Sarl
|
||||||
|
|
||||||
Thanks for Martin 'MarK' Kuchinka <kuchinka@volny.cz>
|
Thanks for Martin 'MarK' Kuchinka <kuchinka@volny.cz>
|
||||||
for his help.
|
for his help.
|
||||||
@ -15,189 +15,193 @@
|
|||||||
but WITHOUT ANY WARRANTY;without even the implied warranty of
|
but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*/
|
*/
|
||||||
.section ".text"
|
.section ".text"
|
||||||
.globl _start
|
.globl _start
|
||||||
.align 4
|
.align 4
|
||||||
_start:
|
_start:
|
||||||
stwu 1,-16(1)
|
stwu 1,-16(1)
|
||||||
mflr 0
|
mflr 0
|
||||||
stw 0,20(1)
|
stw 0,20(1)
|
||||||
|
|
||||||
/* Get ExecBase */
|
/* Get ExecBase */
|
||||||
lwz 3,4(0)
|
lwz 3,4(0)
|
||||||
lis 4,_ExecBase@ha
|
lis 4,_ExecBase@ha
|
||||||
stw 3,_ExecBase@l(4)
|
stw 3,_ExecBase@l(4)
|
||||||
|
|
||||||
/* Allocating new stack */
|
/* Allocating new stack */
|
||||||
lis 4,__stklen@ha
|
lis 4,__stklen@ha
|
||||||
lwz 3,__stklen@l(4)
|
lwz 3,__stklen@l(4)
|
||||||
stw 3,0(2)
|
stw 3,0(2)
|
||||||
li 3,1
|
li 3,1
|
||||||
stw 3,4(2)
|
stw 3,4(2)
|
||||||
lwz 3,4(0)
|
lwz 3,4(0)
|
||||||
stw 3,56(2)
|
stw 3,56(2)
|
||||||
lwz 3,100(2)
|
lwz 3,100(2)
|
||||||
mtlr 3
|
mtlr 3
|
||||||
li 3,-684
|
li 3,-684 /* AllocVec */
|
||||||
blrl
|
blrl
|
||||||
lis 4,stackArea@ha
|
/* FIXME: check for successful allocation! */
|
||||||
stw 3,stackArea@l(4)
|
|
||||||
|
|
||||||
/* Setting up stackSwap struct */
|
lis 4,stackArea@ha
|
||||||
lis 4,stackSwap@ha
|
stw 3,stackArea@l(4)
|
||||||
addi 4,4,stackSwap@l
|
|
||||||
stw 3,0(4)
|
|
||||||
lis 5,__stklen@ha
|
|
||||||
lwz 6,__stklen@l(5)
|
|
||||||
add 3,3,6
|
|
||||||
stw 3,4(4)
|
|
||||||
stw 3,8(4)
|
|
||||||
|
|
||||||
/* Calling main function with the new stack */
|
/* Setting up stackSwap struct */
|
||||||
stw 4,32(2)
|
lis 4,stackSwap@ha
|
||||||
lis 4,_initproc@ha
|
addi 4,4,stackSwap@l
|
||||||
addi 4,4,_initproc@l
|
stw 3,0(4)
|
||||||
stw 4,36(2)
|
lis 5,__stklen@ha
|
||||||
li 3,0
|
lwz 6,__stklen@l(5)
|
||||||
stw 3,40(2)
|
add 3,3,6
|
||||||
lwz 4,100(2)
|
stw 3,4(4)
|
||||||
mtlr 4
|
stw 3,8(4)
|
||||||
li 3,-804
|
|
||||||
blrl
|
|
||||||
|
|
||||||
/* Freeing up stack area */
|
/* Calling main function with the new stack */
|
||||||
lis 4,stackArea@ha
|
stw 4,32(2)
|
||||||
lwz 3,stackArea@l(4)
|
lis 4,_initproc@ha
|
||||||
stw 3,36(2)
|
addi 4,4,_initproc@l
|
||||||
lwz 3,4(0)
|
stw 4,36(2)
|
||||||
stw 3,56(2)
|
li 3,0
|
||||||
lwz 3,100(2)
|
stw 3,40(2)
|
||||||
mtlr 3
|
lwz 4,100(2)
|
||||||
li 3,-690
|
mtlr 4
|
||||||
blrl
|
li 3,-804 /* NewPPCStackSwap */
|
||||||
|
blrl
|
||||||
|
|
||||||
/* Setting return value */
|
/* Freeing up stack area */
|
||||||
lis 4,returnValue@ha
|
lis 4,stackArea@ha
|
||||||
lwz 3,returnValue@l(4)
|
lwz 3,stackArea@l(4)
|
||||||
|
stw 3,36(2)
|
||||||
|
lwz 3,4(0)
|
||||||
|
stw 3,56(2)
|
||||||
|
lwz 3,100(2)
|
||||||
|
mtlr 3
|
||||||
|
li 3,-690 /* FreeVec */
|
||||||
|
blrl
|
||||||
|
|
||||||
lwz 4,0(1)
|
/* Setting return value */
|
||||||
lwz 0,4(4)
|
lis 4,returnValue@ha
|
||||||
mtlr 0
|
lwz 3,returnValue@l(4)
|
||||||
mr 1,4
|
|
||||||
blr
|
lwz 4,0(1)
|
||||||
|
lwz 0,4(4)
|
||||||
|
mtlr 0
|
||||||
|
mr 1,4
|
||||||
|
blr
|
||||||
|
|
||||||
_initproc:
|
_initproc:
|
||||||
/* Save Linkregister */
|
stwu 1,-128(1)
|
||||||
stwu 1,-128(1)
|
mflr 0
|
||||||
mflr 0
|
stw 13,52(1)
|
||||||
stw 13,52(1)
|
stw 14,56(1)
|
||||||
stw 14,56(1)
|
stw 15,60(1)
|
||||||
stw 15,60(1)
|
stw 16,64(1)
|
||||||
stw 16,64(1)
|
stw 17,68(1)
|
||||||
stw 17,68(1)
|
stw 18,72(1)
|
||||||
stw 18,72(1)
|
stw 19,76(1)
|
||||||
stw 19,76(1)
|
stw 20,80(1)
|
||||||
stw 20,80(1)
|
stw 21,84(1)
|
||||||
stw 21,84(1)
|
stw 22,88(1)
|
||||||
stw 22,88(1)
|
stw 23,92(1)
|
||||||
stw 23,92(1)
|
stw 24,96(1)
|
||||||
stw 24,96(1)
|
stw 25,100(1)
|
||||||
stw 25,100(1)
|
stw 26,104(1)
|
||||||
stw 26,104(1)
|
stw 27,108(1)
|
||||||
stw 27,108(1)
|
stw 28,112(1)
|
||||||
stw 28,112(1)
|
stw 29,116(1)
|
||||||
stw 29,116(1)
|
stw 30,120(1)
|
||||||
stw 30,120(1)
|
stw 31,124(1)
|
||||||
stw 31,124(1)
|
stw 0,132(1)
|
||||||
stw 0,132(1)
|
|
||||||
|
|
||||||
/* Save Stackpointer */
|
/* Save Stackpointer */
|
||||||
lis 4,OriginalStkPtr@ha
|
lis 4,OriginalStkPtr@ha
|
||||||
stw 1,OriginalStkPtr@l(4)
|
stw 1,OriginalStkPtr@l(4)
|
||||||
|
|
||||||
bl PASCALMAIN
|
bl PASCALMAIN
|
||||||
|
|
||||||
.globl _haltproc
|
.globl _haltproc
|
||||||
_haltproc:
|
_haltproc:
|
||||||
/* Restore Stackpointer */
|
/* Restore Stackpointer */
|
||||||
lis 4,OriginalStkPtr@ha
|
lis 4,OriginalStkPtr@ha
|
||||||
lwz 1,OriginalStkPtr@l(4)
|
lwz 1,OriginalStkPtr@l(4)
|
||||||
|
|
||||||
/* Store return value */
|
/* Store return value */
|
||||||
lis 4,returnValue@ha
|
lis 4,returnValue@ha
|
||||||
stw 3,returnValue@l(4)
|
stw 3,returnValue@l(4)
|
||||||
|
|
||||||
lwz 4,0(1)
|
lwz 4,0(1)
|
||||||
lwz 0,4(4)
|
lwz 0,4(4)
|
||||||
mtlr 0
|
mtlr 0
|
||||||
lwz 13,-76(4)
|
lwz 13,-76(4)
|
||||||
lwz 14,-72(4)
|
lwz 14,-72(4)
|
||||||
lwz 15,-68(4)
|
lwz 15,-68(4)
|
||||||
lwz 16,-64(4)
|
lwz 16,-64(4)
|
||||||
lwz 17,-60(4)
|
lwz 17,-60(4)
|
||||||
lwz 18,-56(4)
|
lwz 18,-56(4)
|
||||||
lwz 19,-52(4)
|
lwz 19,-52(4)
|
||||||
lwz 20,-48(4)
|
lwz 20,-48(4)
|
||||||
lwz 21,-44(4)
|
lwz 21,-44(4)
|
||||||
lwz 22,-40(4)
|
lwz 22,-40(4)
|
||||||
lwz 23,-36(4)
|
lwz 23,-36(4)
|
||||||
lwz 24,-32(4)
|
lwz 24,-32(4)
|
||||||
lwz 25,-28(4)
|
lwz 25,-28(4)
|
||||||
lwz 26,-24(4)
|
lwz 26,-24(4)
|
||||||
lwz 27,-20(4)
|
lwz 27,-20(4)
|
||||||
lwz 28,-16(4)
|
lwz 28,-16(4)
|
||||||
lwz 29,-12(4)
|
lwz 29,-12(4)
|
||||||
lwz 30,-8(4)
|
lwz 30,-8(4)
|
||||||
lwz 31,-4(4)
|
lwz 31,-4(4)
|
||||||
mr 1,4
|
mr 1,4
|
||||||
blr
|
blr
|
||||||
|
|
||||||
.globl _ExecBase
|
.globl _ExecBase
|
||||||
.globl SysBase
|
.globl SysBase
|
||||||
.align 4
|
.align 4
|
||||||
SysBase:
|
SysBase:
|
||||||
_ExecBase:
|
_ExecBase:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
.globl OriginalStkPtr
|
.globl OriginalStkPtr
|
||||||
.align 4
|
.align 4
|
||||||
OriginalStkPtr:
|
OriginalStkPtr:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
.globl OriginalLinkRegister
|
.globl OriginalLinkRegister
|
||||||
.align 4
|
.align 4
|
||||||
OriginalLinkRegister:
|
OriginalLinkRegister:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
.globl returnValue
|
.globl returnValue
|
||||||
.align 4
|
.align 4
|
||||||
returnValue:
|
returnValue:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
.globl stackArea
|
.globl stackArea
|
||||||
.align 4
|
.align 4
|
||||||
stackArea:
|
stackArea:
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
.globl stackSwap
|
.globl stackSwap
|
||||||
.align 4
|
.align 4
|
||||||
stackSwap:
|
stackSwap:
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
/* This is needed to be a proper MOS ABox executable */
|
/* This is needed to be a proper MOS ABox executable */
|
||||||
/* This symbol _MUST NOT_ be stripped out from the executable */
|
/* This symbol _MUST NOT_ be stripped out from the executable */
|
||||||
/* or else... */
|
/* or else... */
|
||||||
.globl __abox__
|
.globl __abox__
|
||||||
.type __abox__,@object
|
.type __abox__,@object
|
||||||
.size __abox__,4
|
.size __abox__,4
|
||||||
__abox__:
|
__abox__:
|
||||||
.long 1
|
.long 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.8 2004-06-05 19:25:12 karoly
|
Revision 1.9 2004-06-06 12:47:57 karoly
|
||||||
|
* some cleanup, comments added
|
||||||
|
|
||||||
|
Revision 1.8 2004/06/05 19:25:12 karoly
|
||||||
+ reworked to support resizing of stack
|
+ reworked to support resizing of stack
|
||||||
|
|
||||||
Revision 1.7 2004/05/13 01:15:42 karoly
|
Revision 1.7 2004/05/13 01:15:42 karoly
|
||||||
|
Loading…
Reference in New Issue
Block a user