123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /*
- * 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
|