diff options
Diffstat (limited to 'drivers/misc/sgi-gru/gru_instructions.h')
| -rw-r--r-- | drivers/misc/sgi-gru/gru_instructions.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/misc/sgi-gru/gru_instructions.h b/drivers/misc/sgi-gru/gru_instructions.h index 48762e7b98be..3fde33c1e8f3 100644 --- a/drivers/misc/sgi-gru/gru_instructions.h +++ b/drivers/misc/sgi-gru/gru_instructions.h | |||
| @@ -19,8 +19,11 @@ | |||
| 19 | #ifndef __GRU_INSTRUCTIONS_H__ | 19 | #ifndef __GRU_INSTRUCTIONS_H__ |
| 20 | #define __GRU_INSTRUCTIONS_H__ | 20 | #define __GRU_INSTRUCTIONS_H__ |
| 21 | 21 | ||
| 22 | #define gru_flush_cache_hook(p) | 22 | extern int gru_check_status_proc(void *cb); |
| 23 | #define gru_emulator_wait_hook(p, w) | 23 | extern int gru_wait_proc(void *cb); |
| 24 | extern void gru_wait_abort_proc(void *cb); | ||
| 25 | |||
| 26 | |||
| 24 | 27 | ||
| 25 | /* | 28 | /* |
| 26 | * Architecture dependent functions | 29 | * Architecture dependent functions |
| @@ -29,16 +32,16 @@ | |||
| 29 | #if defined(CONFIG_IA64) | 32 | #if defined(CONFIG_IA64) |
| 30 | #include <linux/compiler.h> | 33 | #include <linux/compiler.h> |
| 31 | #include <asm/intrinsics.h> | 34 | #include <asm/intrinsics.h> |
| 32 | #define __flush_cache(p) ia64_fc(p) | 35 | #define __flush_cache(p) ia64_fc((unsigned long)p) |
| 33 | /* Use volatile on IA64 to ensure ordering via st4.rel */ | 36 | /* Use volatile on IA64 to ensure ordering via st4.rel */ |
| 34 | #define gru_ordered_store_int(p,v) \ | 37 | #define gru_ordered_store_int(p, v) \ |
| 35 | do { \ | 38 | do { \ |
| 36 | barrier(); \ | 39 | barrier(); \ |
| 37 | *((volatile int *)(p)) = v; /* force st.rel */ \ | 40 | *((volatile int *)(p)) = v; /* force st.rel */ \ |
| 38 | } while (0) | 41 | } while (0) |
| 39 | #elif defined(CONFIG_X86_64) | 42 | #elif defined(CONFIG_X86_64) |
| 40 | #define __flush_cache(p) clflush(p) | 43 | #define __flush_cache(p) clflush(p) |
| 41 | #define gru_ordered_store_int(p,v) \ | 44 | #define gru_ordered_store_int(p, v) \ |
| 42 | do { \ | 45 | do { \ |
| 43 | barrier(); \ | 46 | barrier(); \ |
| 44 | *(int *)p = v; \ | 47 | *(int *)p = v; \ |
| @@ -558,20 +561,19 @@ extern int gru_get_cb_exception_detail(void *cb, | |||
| 558 | 561 | ||
| 559 | #define GRU_EXC_STR_SIZE 256 | 562 | #define GRU_EXC_STR_SIZE 256 |
| 560 | 563 | ||
| 561 | extern int gru_check_status_proc(void *cb); | ||
| 562 | extern int gru_wait_proc(void *cb); | ||
| 563 | extern void gru_wait_abort_proc(void *cb); | ||
| 564 | 564 | ||
| 565 | /* | 565 | /* |
| 566 | * Control block definition for checking status | 566 | * Control block definition for checking status |
| 567 | */ | 567 | */ |
| 568 | struct gru_control_block_status { | 568 | struct gru_control_block_status { |
| 569 | unsigned int icmd :1; | 569 | unsigned int icmd :1; |
| 570 | unsigned int unused1 :31; | 570 | unsigned int ima :3; |
| 571 | unsigned int reserved0 :4; | ||
| 572 | unsigned int unused1 :24; | ||
| 571 | unsigned int unused2 :24; | 573 | unsigned int unused2 :24; |
| 572 | unsigned int istatus :2; | 574 | unsigned int istatus :2; |
| 573 | unsigned int isubstatus :4; | 575 | unsigned int isubstatus :4; |
| 574 | unsigned int inused3 :2; | 576 | unsigned int unused3 :2; |
| 575 | }; | 577 | }; |
| 576 | 578 | ||
| 577 | /* Get CB status */ | 579 | /* Get CB status */ |
