|
@@ -58,6 +58,7 @@
|
|
|
#define MMX_SIZE (0x98)
|
|
|
|
|
|
.text
|
|
|
+ .arm
|
|
|
|
|
|
/*
|
|
|
* Lazy switching of Concan coprocessor context
|
|
@@ -182,6 +183,8 @@ concan_load:
|
|
|
tmcr wCon, r2
|
|
|
ret lr
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_enable)
|
|
|
+
|
|
|
/*
|
|
|
* Back up Concan regs to save area and disable access to them
|
|
|
* (mainly for gdb or sleep mode usage)
|
|
@@ -232,6 +235,8 @@ ENTRY(iwmmxt_task_disable)
|
|
|
1: msr cpsr_c, ip @ restore interrupt mode
|
|
|
ldmfd sp!, {r4, pc}
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_disable)
|
|
|
+
|
|
|
/*
|
|
|
* Copy Concan state to given memory address
|
|
|
*
|
|
@@ -268,6 +273,8 @@ ENTRY(iwmmxt_task_copy)
|
|
|
msr cpsr_c, ip @ restore interrupt mode
|
|
|
ret r3
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_copy)
|
|
|
+
|
|
|
/*
|
|
|
* Restore Concan state from given memory address
|
|
|
*
|
|
@@ -304,6 +311,8 @@ ENTRY(iwmmxt_task_restore)
|
|
|
msr cpsr_c, ip @ restore interrupt mode
|
|
|
ret r3
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_restore)
|
|
|
+
|
|
|
/*
|
|
|
* Concan handling on task switch
|
|
|
*
|
|
@@ -335,6 +344,8 @@ ENTRY(iwmmxt_task_switch)
|
|
|
mrc p15, 0, r1, c2, c0, 0
|
|
|
sub pc, lr, r1, lsr #32 @ cpwait and return
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_switch)
|
|
|
+
|
|
|
/*
|
|
|
* Remove Concan ownership of given task
|
|
|
*
|
|
@@ -353,6 +364,8 @@ ENTRY(iwmmxt_task_release)
|
|
|
msr cpsr_c, r2 @ restore interrupts
|
|
|
ret lr
|
|
|
|
|
|
+ENDPROC(iwmmxt_task_release)
|
|
|
+
|
|
|
.data
|
|
|
concan_owner:
|
|
|
.word 0
|