summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/coproc/coproc.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/coproc/coproc.S')
-rw-r--r--c/src/lib/libbsp/arm/nds/coproc/coproc.S112
1 files changed, 0 insertions, 112 deletions
diff --git a/c/src/lib/libbsp/arm/nds/coproc/coproc.S b/c/src/lib/libbsp/arm/nds/coproc/coproc.S
deleted file mode 100644
index f1bc2bac61..0000000000
--- a/c/src/lib/libbsp/arm/nds/coproc/coproc.S
+++ /dev/null
@@ -1,112 +0,0 @@
-@---------------------------------------------------------------------------------
- .section ".init"
- .global _start
- .global _init
-@---------------------------------------------------------------------------------
- .align 4
- .arm
-@---------------------------------------------------------------------------------
-_start:
-@---------------------------------------------------------------------------------
- mov r0, #0x04000000 @ IME = 0;
- str r0, [r0, #0x208]
-
- mov r0, #0x12 @ Switch to IRQ Mode
- msr cpsr, r0
- ldr sp, =__sp_irq @ Set IRQ stack
-
- mov r0, #0x13 @ Switch to SVC Mode
- msr cpsr, r0
- ldr sp, =__sp_svc @ Set SVC stack
-
- mov r0, #0x1F @ Switch to System Mode
- msr cpsr, r0
- ldr sp, =__sp_usr @ Set user stack
-
- ldr r0, =__bss_start @ Clear BSS section to 0x00
- ldr r1, =__bss_end
- sub r1, r1, r0
- bl ClearMem
-
- ldr r3, =__libc_init_array @ global constructors
- bl _call_via_r3
-
- mov r0, #0 @ int argc
- mov r1, #0 @ char *argv[]
- ldr r3, =main
- bl _call_via_r3 @ jump to user code
-
- @ If the user ever returns, return to flash cartridge
- mov r0, #0x08000000
- bx r0
-
-@---------------------------------------------------------------------------------
-@ Clear memory to 0x00 if length != 0
-@ r0 = Start Address
-@ r1 = Length
-@---------------------------------------------------------------------------------
-ClearMem:
-@---------------------------------------------------------------------------------
- mov r2, #3 @ Round down to nearest word boundary
- add r1, r1, r2 @ Shouldn't be needed
- bics r1, r1, r2 @ Clear 2 LSB (and set Z)
- bxeq lr @ Quit if copy size is 0
-
- mov r2, #0
-ClrLoop:
- stmia r0!, {r2}
- subs r1, r1, #4
- bne ClrLoop
- bx lr
-
-@---------------------------------------------------------------------------------
-@ Copy memory if length != 0
-@ r1 = Source Address
-@ r2 = Dest Address
-@ r4 = Dest Address + Length
-@---------------------------------------------------------------------------------
-CopyMemCheck:
-@---------------------------------------------------------------------------------
- sub r3, r4, r2 @ Is there any data to copy?
-@---------------------------------------------------------------------------------
-@ Copy memory
-@ r1 = Source Address
-@ r2 = Dest Address
-@ r3 = Length
-@---------------------------------------------------------------------------------
-CopyMem:
-@---------------------------------------------------------------------------------
- mov r0, #3 @ These commands are used in cases where
- add r3, r3, r0 @ the length is not a multiple of 4,
- bics r3, r3, r0 @ even though it should be.
- bxeq lr @ Length is zero, so exit
-CIDLoop:
- ldmia r1!, {r0}
- stmia r2!, {r0}
- subs r3, r3, #4
- bne CIDLoop
- bx lr
-
-_init:
- bx lr
-
-@---------------------------------------------------------------------------------
- .align
-@ .pool
-@ .end
-@---------------------------------------------------------------------------------
-
-@---------------------------------------------------------------------------------
- .section ".fini"
- .global _fini
-@---------------------------------------------------------------------------------
- .align 4
- .arm
-@---------------------------------------------------------------------------------
-_fini:
- bx lr
-@---------------------------------------------------------------------------------
- .align
- .pool
- .end
-@---------------------------------------------------------------------------------