aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/sgi-gru/gruhandles.h
diff options
context:
space:
mode:
authorJack Steiner <steiner@sgi.com>2009-06-17 19:28:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-18 16:03:59 -0400
commitcd1334f03f7b799bc6893b511daf2080e8f73863 (patch)
tree468d9bc99e19aa7895321927eaf30c4dae55166f /drivers/misc/sgi-gru/gruhandles.h
parentd6580a9f15238b87e618310c862231ae3f352d2d (diff)
gru: bug fixes for GRU exception handling
Bug fixes for GRU exception handling. Additional fields from the CBR must be returned to the user to allow the user to correctly diagnose GRU exceptions. Handle endcase in TFH TLB miss handling. Verify that TFH actually indicates a pending exception. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/misc/sgi-gru/gruhandles.h')
-rw-r--r--drivers/misc/sgi-gru/gruhandles.h23
1 files changed, 4 insertions, 19 deletions
diff --git a/drivers/misc/sgi-gru/gruhandles.h b/drivers/misc/sgi-gru/gruhandles.h
index 1ed74d7508c8..03b76a1993c3 100644
--- a/drivers/misc/sgi-gru/gruhandles.h
+++ b/drivers/misc/sgi-gru/gruhandles.h
@@ -251,15 +251,14 @@ struct gru_tlb_fault_handle {
251 unsigned int fill1:9; 251 unsigned int fill1:9;
252 252
253 unsigned int status:2; 253 unsigned int status:2;
254 unsigned int fill2:1; 254 unsigned int fill2:2;
255 unsigned int color:1;
256 unsigned int state:3; 255 unsigned int state:3;
257 unsigned int fill3:1; 256 unsigned int fill3:1;
258 257
259 unsigned int cause:7; /* DW 0 - high 32 */ 258 unsigned int cause:7;
260 unsigned int fill4:1; 259 unsigned int fill4:1;
261 260
262 unsigned int indexway:12; 261 unsigned int indexway:12; /* DW 0 - high 32 */
263 unsigned int fill5:4; 262 unsigned int fill5:4;
264 263
265 unsigned int ctxnum:4; 264 unsigned int ctxnum:4;
@@ -457,21 +456,7 @@ enum gru_cbr_state {
457 CBRSTATE_BUSY_INTERRUPT, 456 CBRSTATE_BUSY_INTERRUPT,
458}; 457};
459 458
460/* CBE cbrexecstatus bits */ 459/* CBE cbrexecstatus bits - defined in gru_instructions.h*/
461#define CBR_EXS_ABORT_OCC_BIT 0
462#define CBR_EXS_INT_OCC_BIT 1
463#define CBR_EXS_PENDING_BIT 2
464#define CBR_EXS_QUEUED_BIT 3
465#define CBR_EXS_TLBHW_BIT 4
466#define CBR_EXS_EXCEPTION_BIT 5
467
468#define CBR_EXS_ABORT_OCC (1 << CBR_EXS_ABORT_OCC_BIT)
469#define CBR_EXS_INT_OCC (1 << CBR_EXS_INT_OCC_BIT)
470#define CBR_EXS_PENDING (1 << CBR_EXS_PENDING_BIT)
471#define CBR_EXS_QUEUED (1 << CBR_EXS_QUEUED_BIT)
472#define CBR_EXS_TLBHW (1 << CBR_EXS_TLBHW_BIT)
473#define CBR_EXS_EXCEPTION (1 << CBR_EXS_EXCEPTION_BIT)
474
475/* CBE ecause bits - defined in gru_instructions.h */ 460/* CBE ecause bits - defined in gru_instructions.h */
476 461
477/* 462/*