mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 05:20:16 +02:00
117 lines
2 KiB
ArmAsm
117 lines
2 KiB
ArmAsm
/*
|
|
* QuickThreads -- Threads-building toolkit.
|
|
* Copyright (c) 1993 by David Keppel
|
|
*
|
|
* Permission to use, copy, modify and distribute this software and
|
|
* its documentation for any purpose and without fee is hereby
|
|
* granted, provided that the above copyright notice and this notice
|
|
* appear in all copies. This software is provided as a
|
|
* proof-of-concept and for demonstration purposes; there is no
|
|
* representation about the suitability of this software for any
|
|
* purpose.
|
|
*/
|
|
|
|
.text
|
|
.globl _b_call_reg
|
|
.globl _b_call_imm
|
|
.globl _b_add
|
|
.globl _b_load
|
|
|
|
_b_null:
|
|
jmp r1
|
|
|
|
_b_call_reg:
|
|
subu r31, r31,8 /* Alloc ret pc save space. */
|
|
st r1, r31,32 /* Save ret pc. */
|
|
or.u r3, r0,hi16(_b_null) /* Put call addr in a reg. */
|
|
or r3, r3,lo16(_b_null)
|
|
jsr r3
|
|
L0:
|
|
jsr r3
|
|
jsr r3
|
|
jsr r3
|
|
jsr.n r3
|
|
subu r2, r2,5 /* Decrement #of iter to go. */
|
|
bcnd.n gt0,r2,L0
|
|
jsr r3
|
|
|
|
ld r1, r31,32
|
|
jmp r1
|
|
|
|
|
|
_b_call_imm:
|
|
subu r31, r31,8 /* Alloc ret pc save space. */
|
|
st r1, r31,32 /* Save ret pc. */
|
|
bsr _b_null
|
|
L1:
|
|
bsr _b_null
|
|
bsr _b_null
|
|
bsr _b_null
|
|
bsr.n _b_null
|
|
subu r2, r2,5 /* Decrement #of iter to go. */
|
|
bcnd.n gt0,r2,L1
|
|
bsr _b_null
|
|
|
|
ld r1, r31,32
|
|
jmp r1
|
|
|
|
_b_add:
|
|
add r0, r3,r4
|
|
L2:
|
|
add r3, r4,r5
|
|
add r4, r5,r6
|
|
add r5, r6,r7
|
|
add r8, r9,r0
|
|
add r0, r3,r4
|
|
add r3, r4,r5
|
|
add r4, r5,r6
|
|
add r5, r6,r7
|
|
add r8, r9,r0
|
|
|
|
add r0, r3,r4
|
|
add r3, r4,r5
|
|
add r4, r5,r6
|
|
add r5, r6,r7
|
|
add r8, r9,r0
|
|
add r0, r3,r4
|
|
add r3, r4,r5
|
|
add r4, r5,r6
|
|
add r5, r6,r7
|
|
add r8, r9,r0
|
|
|
|
subu r2, r2,20 /* Decrement #of iter to go. */
|
|
bcnd.n gt0,r2,L2
|
|
add r0, r3,r4
|
|
|
|
jmp r1
|
|
|
|
|
|
_b_load:
|
|
ld r0, r31,0
|
|
L3:
|
|
ld r3, r31,4
|
|
ld r4, r31,8
|
|
ld r5, r31,12
|
|
ld r6, r31,16
|
|
ld r0, r31,0
|
|
ld r3, r31,4
|
|
ld r4, r31,8
|
|
ld r5, r31,12
|
|
ld r6, r31,16
|
|
|
|
ld r0, r31,0
|
|
ld r3, r31,4
|
|
ld r4, r31,8
|
|
ld r5, r31,12
|
|
ld r6, r31,16
|
|
ld r0, r31,0
|
|
ld r3, r31,4
|
|
ld r4, r31,8
|
|
ld r5, r31,12
|
|
ld r6, r31,16
|
|
|
|
subu r2, r2,20 /* Decrement #of iter to go. */
|
|
bcnd.n gt0,r2,L3
|
|
ld r0, r31,0
|
|
|
|
jmp r1
|