[SPARC64]: Correctable ECC errors cannot occur at trap level > 0.
authorDavid S. Miller <davem@davemloft.net>
Thu, 2 Feb 2006 09:20:18 +0000 (01:20 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 20 Mar 2006 09:11:33 +0000 (01:11 -0800)
The are distrupting, which by the sparc v9 definition means they
can only occur when interrupts are enabled in the %pstate register.
This never occurs in any of the trap handling code running at
trap levels > 0.

So just mark it as an unexpected trap.

This allows us to kill off the cee_stuff member of struct thread_info.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/traps.c
arch/sparc64/kernel/ttable.S
include/asm-sparc64/thread_info.h

index f47f4874253cb12e8897f047814292b96aed5da5..7e52e89726684c2a46c9d2ef1bbbfd00a116ddd3 100644 (file)
@@ -2169,7 +2169,6 @@ void __init trap_init(void)
            TI_KERN_CNTD0 != offsetof(struct thread_info, kernel_cntd0) ||
            TI_KERN_CNTD1 != offsetof(struct thread_info, kernel_cntd1) ||
            TI_PCR != offsetof(struct thread_info, pcr_reg) ||
-           TI_CEE_STUFF != offsetof(struct thread_info, cee_stuff) ||
            TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) ||
            TI_NEW_CHILD != offsetof(struct thread_info, new_child) ||
            TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) ||
index 2fb7a33993c0d57299327756f14fbc076b498362..99531424c598ae21a62b97129c9c6c692bd70ef1 100644 (file)
@@ -222,23 +222,7 @@ tl1_resv05c:       BTRAPTL1(0x5c) BTRAPTL1(0x5d) BTRAPTL1(0x5e) BTRAPTL1(0x5f)
 tl1_ivec:      TRAP_IVEC
 tl1_paw:       TRAPTL1(do_paw_tl1)
 tl1_vaw:       TRAPTL1(do_vaw_tl1)
-
-               /* The grotty trick to save %g1 into current->thread.cee_stuff
-                * is because when we take this trap we could be interrupting
-                * trap code already using the trap alternate global registers.
-                *
-                * We cross our fingers and pray that this store/load does
-                * not cause yet another CEE trap.
-                */
-tl1_cee:       membar  #Sync
-               stx     %g1, [%g6 + TI_CEE_STUFF]
-               ldxa    [%g0] ASI_AFSR, %g1
-               membar  #Sync
-               stxa    %g1, [%g0] ASI_AFSR
-               membar  #Sync
-               ldx     [%g6 + TI_CEE_STUFF], %g1
-               retry
-
+tl1_cee:       BTRAPTL1(0x63)
 tl1_iamiss:    BTRAPTL1(0x64) BTRAPTL1(0x65) BTRAPTL1(0x66) BTRAPTL1(0x67)
 tl1_damiss:
 #include       "dtlb_miss.S"
index ac9d068aab4f43d9beab4e6df2847616f09788a0..2ebf7f27bf918cb2394da774ecc970c5877e3a24 100644 (file)
@@ -64,8 +64,6 @@ struct thread_info {
        __u64                   kernel_cntd0, kernel_cntd1;
        __u64                   pcr_reg;
 
-       __u64                   cee_stuff;
-
        struct restart_block    restart_block;
 
        struct pt_regs          *kern_una_regs;
@@ -104,10 +102,9 @@ struct thread_info {
 #define TI_KERN_CNTD0  0x00000480
 #define TI_KERN_CNTD1  0x00000488
 #define TI_PCR         0x00000490
-#define TI_CEE_STUFF   0x00000498
-#define TI_RESTART_BLOCK 0x000004a0
-#define TI_KUNA_REGS   0x000004c8
-#define TI_KUNA_INSN   0x000004d0
+#define TI_RESTART_BLOCK 0x00000498
+#define TI_KUNA_REGS   0x000004c0
+#define TI_KUNA_INSN   0x000004c8
 #define TI_FPREGS      0x00000500
 
 /* We embed this in the uppermost byte of thread_info->flags */