summaryrefslogtreecommitdiff
path: root/ext/systemc/src/sysc/qt/md/powerpc_mach_b.s
diff options
context:
space:
mode:
Diffstat (limited to 'ext/systemc/src/sysc/qt/md/powerpc_mach_b.s')
-rw-r--r--ext/systemc/src/sysc/qt/md/powerpc_mach_b.s290
1 files changed, 290 insertions, 0 deletions
diff --git a/ext/systemc/src/sysc/qt/md/powerpc_mach_b.s b/ext/systemc/src/sysc/qt/md/powerpc_mach_b.s
new file mode 100644
index 000000000..f0fd23fcb
--- /dev/null
+++ b/ext/systemc/src/sysc/qt/md/powerpc_mach_b.s
@@ -0,0 +1,290 @@
+/* speed test for basic CPU operations */
+
+
+/* Marco Bucci <marco.bucci@inwind.it> */
+
+/* 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