/* speed test for basic CPU operations */ /* Marco Bucci */ /* This code was developed with the Code Warrior integrate ppc assembler. * Macros are use to hide illegal constructs whether you are using a * "normal" assembler or the "C integrated" assembler. */ #if 0 .text .align 4 .globl b_call_reg .globl _b_call_reg .globl b_call_imm .globl _b_call_imm .globl b_add .globl _b_add .globl b_load .globl _b_load .set fsize, 64 .set lrsave, 8 #else #define fsize 64 #define lrsave 8 #endif #if 0 .if 0 #endif asm void b_null(void) { #if 0 .endif #endif #if 0 b_null: #endif blr #if 0 .if 0 #endif } #if 0 .endif #endif /* actually the same as the following. How to get "b_null" address? * I didnt find the right sintax or the right way. * I should take the current PC, then the difference to "b_null" * (making the difference beween the labels), perform the sum and go?! */ #if 0 .if 0 #endif asm void b_call_reg(long n) { #if 0 .endif #endif #if 0 b_call_reg: _b_call_reg: #endif mflr r0 stw r31,-4(r1) stw r30,-8(r1) stw r0,lrsave(r1) stwu r1,-fsize(r1) mr r30,r3 li r31,0 b L1 L0: bl b_null bl b_null bl b_null bl b_null bl b_null addi r31,r31,5 L1: cmpw r31,r30 blt L0 lwz r0,lrsave+fsize(r1) mtlr r0 lwz r31,-4+fsize(r1) lwz r30,-8+fsize(r1) addi r1,r1,fsize blr #if 0 .if 0 #endif } #if 0 .endif #endif #if 0 .if 0 #endif asm void b_call_imm(long n) { #if 0 .endif #endif #if 0 b_call_imm: _b_call_imm: #endif mflr r0 stw r31,-4(r1) stw r30,-8(r1) stw r0,lrsave(r1) stwu r1,-fsize(r1) mr r30,r3 li r31,0 b L3 L2: bl b_null bl b_null bl b_null bl b_null bl b_null addi r31,r31,5 L3: cmpw r31,r30 blt L2 lwz r0,lrsave+fsize(r1) mtlr r0 lwz r31,-4+fsize(r1) lwz r30,-8+fsize(r1) addi r1,r1,fsize blr #if 0 .if 0 #endif } #if 0 .endif #endif #if 0 .if 0 #endif asm void b_add(long n) { #if 0 .endif #endif #if 0 b_add: _b_add: #endif mflr r0 stw r31,-4(r1) stw r30,-8(r1) stw r0,lrsave(r1) stwu r1,-fsize(r1) mr r30,r3 li r31,0 b L5 L4: addi r3,r3,5 addi r4,r4,5 addi r5,r5,5 addi r6,r6,5 addi r7,r7,5 addi r3,r3,5 addi r4,r4,5 addi r5,r5,5 addi r6,r6,5 addi r7,r7,5 addi r31,r31,10 L5: cmpw r31,r30 blt L4 lwz r0,lrsave+fsize(r1) mtlr r0 lwz r31,-4+fsize(r1) lwz r30,-8+fsize(r1) addi r1,r1,fsize blr #if 0 .if 0 #endif } #if 0 .endif #endif #if 0 .if 0 #endif asm void b_load(long n) { #if 0 .endif #endif #if 0 b_load: _b_load: #endif mflr r0 stw r31,-4(r1) stw r30,-8(r1) stw r0,lrsave(r1) stwu r1,-fsize(r1) mr r30,r3 li r31,0 b L7 L6: lwz r3,4(r1) lwz r4,8(r1) lwz r5,12(r1) lwz r6,16(r1) lwz r7,20(r1) lwz r3,24(r1) lwz r4,28(r1) lwz r5,32(r1) lwz r6,36(r1) lwz r7,40(r1) addi r31,r31,10 L7: cmpw r31,r30 blt L6 lwz r0,lrsave+fsize(r1) mtlr r0 lwz r31,-4+fsize(r1) lwz r30,-8+fsize(r1) addi r1,r1,fsize blr #if 0 .if 0 #endif } #if 0 .endif #endif