Enable thumb support, add thumb patches from cssu-kernel
[kernel-power] / kernel-power-2.6.28 / debian / patches / clear_the_it_state_when_invoking_a_thumb_2_signal_handler.diff
1 Index: kernel-cssu-2.6.28/arch/arm/include/asm/ptrace.h
2 ===================================================================
3 --- kernel-cssu-2.6.28.orig/arch/arm/include/asm/ptrace.h       2012-06-18 17:42:46.279853899 -0400
4 +++ kernel-cssu-2.6.28/arch/arm/include/asm/ptrace.h    2012-06-18 17:45:47.075328476 -0400
5 @@ -65,6 +65,13 @@
6  #define PSR_x          0x0000ff00      /* Extension            */
7  #define PSR_c          0x000000ff      /* Control              */
8  
9 +/*
10 + * ARMv7 groups of APSR bits
11 + */
12 +#define PSR_ISET_MASK  0x01000010      /* ISA state (J, T) mask */
13 +#define PSR_IT_MASK    0x0600fc00      /* If-Then execution state mask */
14 +#define PSR_ENDIAN_MASK        0x00000200      /* Endianness state mask */
15 +
16  #ifndef __ASSEMBLY__
17  
18  /*
19 Index: kernel-cssu-2.6.28/arch/arm/kernel/signal.c
20 ===================================================================
21 --- kernel-cssu-2.6.28.orig/arch/arm/kernel/signal.c    2012-06-18 17:43:06.354996651 -0400
22 +++ kernel-cssu-2.6.28/arch/arm/kernel/signal.c 2012-06-18 17:48:41.731936840 -0400
23 @@ -487,9 +487,13 @@
24                  */
25                 thumb = handler & 1;
26  
27 -               if (thumb)
28 +               if (thumb) {
29                         cpsr |= PSR_T_BIT;
30 -               else
31 +#if __LINUX_ARM_ARCH__ >= 7
32 +                       /* clear the If-Then Thumb-2 execution state */
33 +                       cpsr &= ~PSR_IT_MASK;
34 +#endif
35 +               } else
36                         cpsr &= ~PSR_T_BIT;
37         }
38  #endif