summaryrefslogtreecommitdiff
path: root/packages/linux/nslu2-kernel
diff options
context:
space:
mode:
authorJohn Bowler <jbowler@nslu2-linux.org>2005-09-22 20:02:05 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-09-22 20:02:05 +0000
commit3d947aa7a969ef9343e1d64b055d37d0ce856fb0 (patch)
treee64c0ac92ef3228cc5aa2476ccc2b2285c92af7d /packages/linux/nslu2-kernel
parent1b30b03d22ce1adab22427bf6674ef3d5fc96c50 (diff)
nslu2-kernel_2.6.12.2: add a patch for thumb breakpoints (via a thumb SWI)
Diffstat (limited to 'packages/linux/nslu2-kernel')
-rw-r--r--packages/linux/nslu2-kernel/2.6/thumb-swi.patch19
1 files changed, 19 insertions, 0 deletions
diff --git a/packages/linux/nslu2-kernel/2.6/thumb-swi.patch b/packages/linux/nslu2-kernel/2.6/thumb-swi.patch
new file mode 100644
index 0000000000..2e73bb103f
--- /dev/null
+++ b/packages/linux/nslu2-kernel/2.6/thumb-swi.patch
@@ -0,0 +1,19 @@
+# This patch changes the thumb swi handling for any thumb swi with
+# an immediate value != 0, those swis are mapped into the arm
+# specific swis. This implements a thumb breakpoint swi.
+--- linux-2.6.12.2/arch/arm/kernel/entry-common.S.orig 2005-09-19 12:48:42.323365573 -0700
++++ linux-2.6.12.2/arch/arm/kernel/entry-common.S 2005-09-19 13:31:19.004247358 -0700
+@@ -137,8 +137,11 @@
+ */
+ #ifdef CONFIG_ARM_THUMB
+ tst r8, #PSR_T_BIT @ this is SPSR from save_user_regs
+- addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in
+- ldreq scno, [lr, #-4]
++ ldrneh ip, [lr, #-2] @ thumb swi instruction
++ ldreq scno, [lr, #-4] @ arm swi instruction
++ addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in to thumb r7 value
++ bicnes ip, ip, #0xff00 @ clear thumb swi bits
++ addne scno, ip, #__ARM_NR_BASE @ thumb swi0->r7, swi!0->arm swi
+ #else
+ ldr scno, [lr, #-4] @ get SWI instruction
+ #endif