summaryrefslogtreecommitdiff
path: root/config/bsd/powerpc.s
diff options
context:
space:
mode:
Diffstat (limited to 'config/bsd/powerpc.s')
-rw-r--r--config/bsd/powerpc.s78
1 files changed, 0 insertions, 78 deletions
diff --git a/config/bsd/powerpc.s b/config/bsd/powerpc.s
deleted file mode 100644
index 8044959..0000000
--- a/config/bsd/powerpc.s
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# coswitch for the PowerPC architecture
-#
-
- .file "rswitch.s"
-
- .data
-errmsg: .string "new_context() returned in coswitch\n"
-
- .text
- .align 2
- .globl coswitch
- .type coswitch,@function
-
-coswitch:
- stwu 1, -80(1) # allocate stack frame
-
- # Save Old Context:
- stw 1, 0(3) # SP
- mflr 0
- stw 0, 4(3) # LR (return address)
- stw 14, 0(1) # GPRs 14-31 (save on stack)
- stw 15, 4(1)
- stw 16, 8(1)
- stw 17, 12(1)
- stw 18, 16(1)
- stw 19, 20(1)
- stw 20, 24(1)
- stw 21, 28(1)
- stw 22, 32(1)
- stw 23, 36(1)
- stw 24, 40(1)
- stw 25, 44(1)
- stw 26, 48(1)
- stw 27, 52(1)
- stw 28, 56(1)
- stw 29, 60(1)
- stw 30, 64(1)
- stw 31, 68(1)
-
- cmpi 0, 5, 0
- beq first # if first time
-
- # Restore new context:
- lwz 1, 0(4) # SP
- lwz 0, 4(4) # LR
- mtlr 0
- lwz 14, 0(1) # GPRs 14-31 (from stack)
- lwz 15, 4(1)
- lwz 16, 8(1)
- lwz 17, 12(1)
- lwz 18, 16(1)
- lwz 19, 20(1)
- lwz 20, 24(1)
- lwz 21, 28(1)
- lwz 22, 32(1)
- lwz 23, 36(1)
- lwz 24, 40(1)
- lwz 25, 44(1)
- lwz 26, 48(1)
- lwz 27, 52(1)
- lwz 28, 56(1)
- lwz 29, 60(1)
- lwz 30, 64(1)
- lwz 31, 68(1)
-
- addic 1, 1, 80 # deallocate stack frame
- blr # return into new context
-
-first: # First-time call:
- lwz 1, 0(4) # SP as figured by Icon
- addic 1, 1, -64 # save area for callee
- addi 3, 0, 0 # arg1
- addi 4, 0, 0 # arg2
- bl new_context # new_context(0,0)
- lis 3, errmsg@ha
- la 3, errmsg@l(3)
- bl syserr