Mercurial > pub > dyncall > dyncall
diff dyncallback/dyncall_callback_ppc32_apple.s @ 239:c04be81f4874
- whitespace cleanup in ppc32 asm files
author | Tassilo Philipp |
---|---|
date | Tue, 02 May 2017 03:49:43 +0200 |
parents | df556fd8ea37 |
children | 891e8ba15862 |
line wrap: on
line diff
--- a/dyncallback/dyncall_callback_ppc32_apple.s Tue May 02 03:00:55 2017 +0200 +++ b/dyncallback/dyncall_callback_ppc32_apple.s Tue May 02 03:49:43 2017 +0200 @@ -23,90 +23,90 @@ */ - .machine ppc - .text - .align 2 +.machine ppc +.text +.align 2 /* Callback Thunk Entry code for PowerPC 32-bit Darwin/Apple Mac OS X. */ /* Stack Frame Layout: - - 204 DCValue ( ) - 56 DCArgs (32+104+4+8 = 148) - 24 Parameter area ( 4*8 = 32 ) - 0 Linkage area ( 24 ) + 204 DCValue () + 56 DCArgs (32+104+4+8 = 148) + 24 Parameter area (4*8 = 32) + 0 Linkage area (24) */ /* Constants. */ -INT_REGS = 8 -FLOAT_REGS = 13 -SIZEOF_INT = 4 -SIZEOF_DOUBLE = 8 +INT_REGS = 8 +FLOAT_REGS = 13 +SIZEOF_INT = 4 +SIZEOF_DOUBLE = 8 + - /* Linkage area. */ -LINK_SP = 0 -LINK_CR = 4 -LINK_LR = 8 -LINK_OFFSET = 0 -LINK_SIZE = 24 +LINK_SP = 0 +LINK_CR = 4 +LINK_LR = 8 +LINK_OFFSET = 0 +LINK_SIZE = 24 /* Parameter area. */ -PAR_OFFSET = LINK_SIZE -PAR_SIZE = 32 +PAR_OFFSET = LINK_SIZE +PAR_SIZE = 32 /* local struct DCArgs */ -ARGS_OFFSET = (PAR_OFFSET+PAR_SIZE) -ARGS_SIZE = (SIZEOF_INT*INT_REGS)+(SIZEOF_DOUBLE*FLOAT_REGS) /* = 136 */ +ARGS_OFFSET = (PAR_OFFSET+PAR_SIZE) +ARGS_SIZE = (SIZEOF_INT*INT_REGS)+(SIZEOF_DOUBLE*FLOAT_REGS) /* = 136 */ /* local struct DCValue */ -RESULT_OFFSET = (ARGS_OFFSET+ARGS_SIZE) -RESULT_SIZE = 16 +RESULT_OFFSET = (ARGS_OFFSET+ARGS_SIZE) +RESULT_SIZE = 16 /* additional locals (reg 30/31) */ -LOCALS_OFFSET = (RESULT_OFFSET+RESULT_SIZE) -LOCALS_SIZE = 2*SIZEOF_INT +LOCALS_OFFSET = (RESULT_OFFSET+RESULT_SIZE) +LOCALS_SIZE = 2*SIZEOF_INT /* total */ -FRAME_SIZE = ( (LOCALS_OFFSET+LOCALS_SIZE)+15 & (-16) ) +FRAME_SIZE = ((LOCALS_OFFSET+LOCALS_SIZE)+15 & (-16)) /* struct DCCallback */ -DCB_THUNK = 0 -DCB_HANDLER = 24 -DCB_STACKCLEAN = 28 -DCB_USERDATA = 32 +DCB_THUNK = 0 +DCB_HANDLER = 24 +DCB_STACKCLEAN = 28 +DCB_USERDATA = 32 /* struct DCArgs */ -DCA_IARRAY = 0 -DCA_FARRAY = SIZEOF_INT*INT_REGS -DCA_SP = DCA_FARRAY + SIZEOF_DOUBLE*FLOAT_REGS -DCA_ICOUNT = DCA_SP + 4 -DCA_FCOUNT = DCA_ICOUNT + 4 +DCA_IARRAY = 0 +DCA_FARRAY = SIZEOF_INT*INT_REGS +DCA_SP = DCA_FARRAY + SIZEOF_DOUBLE*FLOAT_REGS +DCA_ICOUNT = DCA_SP + 4 +DCA_FCOUNT = DCA_ICOUNT + 4 -iregfile = ARGS_OFFSET+DCA_IARRAY -fregfile = ARGS_OFFSET+DCA_FARRAY -save_sp = ARGS_OFFSET+DCA_SP -icount = ARGS_OFFSET+DCA_ICOUNT -fcount = ARGS_OFFSET+DCA_FCOUNT - .globl _dcCallbackThunkEntry +iregfile = ARGS_OFFSET+DCA_IARRAY +fregfile = ARGS_OFFSET+DCA_FARRAY +save_sp = ARGS_OFFSET+DCA_SP +icount = ARGS_OFFSET+DCA_ICOUNT +fcount = ARGS_OFFSET+DCA_FCOUNT - /* - Thunk entry: - r2 = DCCallback* - */ +.globl _dcCallbackThunkEntry + +/* + Thunk entry: + r2 = DCCallback* +*/ _dcCallbackThunkEntry: mflr r0 - stw r0, 8(r1) /* store return address */ - addi r12, r1, PAR_OFFSET /* temporary r12 = parameter area on callers stack frame */ - stwu r1, -FRAME_SIZE(r1) /* save callers stack pointer and make new stack frame. */ - stw r3, iregfile+0*4(r1) /* spill 8 integer parameter registers */ - stw r4, iregfile+1*4(r1) - stw r5, iregfile+2*4(r1) - stw r6, iregfile+3*4(r1) - stw r7, iregfile+4*4(r1) - stw r8, iregfile+5*4(r1) - stw r9, iregfile+6*4(r1) - stw r10,iregfile+7*4(r1) - stfd f1, fregfile+ 0*8(r1) /* spill 13 float parameter registers */ + stw r0, 8(r1) /* store return address */ + addi r12,r1, PAR_OFFSET /* temporary r12 = parameter area on callers stack frame */ + stwu r1, -FRAME_SIZE(r1) /* save callers stack pointer and make new stack frame. */ + stw r3, iregfile+ 0*4(r1) /* spill 8 integer parameter registers */ + stw r4, iregfile+ 1*4(r1) + stw r5, iregfile+ 2*4(r1) + stw r6, iregfile+ 3*4(r1) + stw r7, iregfile+ 4*4(r1) + stw r8, iregfile+ 5*4(r1) + stw r9, iregfile+ 6*4(r1) + stw r10,iregfile+ 7*4(r1) + stfd f1, fregfile+ 0*8(r1) /* spill 13 float parameter registers */ stfd f2, fregfile+ 1*8(r1) stfd f3, fregfile+ 2*8(r1) stfd f4, fregfile+ 3*8(r1) @@ -119,38 +119,38 @@ stfd f11,fregfile+10*8(r1) stfd f12,fregfile+11*8(r1) stfd f13,fregfile+12*8(r1) - /* initialize struct DCCallback */ - stw r12,save_sp(r1) /* init stack pointer */ - xor r0, r0, r0 /* init register counters */ - stw r0, icount(r1) - stw r0, fcount(r1) - /* invoke callback handler */ - mr r3, r2 /* arg 1: DCCallback* pcb */ - addi r4, r1, ARGS_OFFSET /* arg 2: DCArgs* args */ - addi r5, r1, RESULT_OFFSET /* arg 3: DCValue* result */ - lwz r6, DCB_USERDATA(r2) /* arg 4: void* userdata */ + /* initialize struct DCCallback */ + stw r12,save_sp(r1) /* init stack pointer */ + xor r0, r0, r0 /* init register counters */ + stw r0, icount(r1) + stw r0, fcount(r1) + /* invoke callback handler */ + mr r3, r2 /* arg 1: DCCallback* pcb */ + addi r4, r1, ARGS_OFFSET /* arg 2: DCArgs* args */ + addi r5, r1, RESULT_OFFSET /* arg 3: DCValue* result */ + lwz r6, DCB_USERDATA(r2) /* arg 4: void* userdata */ - /* branch-and-link to DCCallback.handler */ - lwz r12, DCB_HANDLER(r2) - mtctr r12 + /* branch-and-link to DCCallback.handler */ + lwz r12,DCB_HANDLER(r2) + mtctr r12 bctrl - /* switch on base result type */ - cmpi cr0, r3, 'f - beq .f32 - cmpi cr0, r3, 'd - beq .f64 -.i64: /* result is C double result */ - lwz r3, RESULT_OFFSET (r1) - lwz r4, RESULT_OFFSET + 4 (r1) + /* switch on base result type */ + cmpi cr0, r3, 'f + beq .f32 + cmpi cr0, r3, 'd + beq .f64 +.i64: + lwz r3, RESULT_OFFSET (r1) + lwz r4, RESULT_OFFSET + 4 (r1) .end: - lwz r1, 0(r1) /* restore stack pointer */ - lwz r0, 8(r1) /* load link register with return address */ - mtlr r0 - blr /* branch back to link register */ -.f32: /* result is C float result */ - lfs f1, RESULT_OFFSET(r1) - b .end + lwz r1, 0(r1) /* restore stack pointer */ + lwz r0, 8(r1) /* load link register with return address */ + mtlr r0 + blr /* branch back to link register */ +.f32: + lfs f1, RESULT_OFFSET(r1) + b .end .f64: - lfd f1, RESULT_OFFSET(r1) - b .end + lfd f1, RESULT_OFFSET(r1) + b .end