diff options
author | Keith Owens <kaos@ocs.com.au> | 2006-04-07 04:08:11 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-06-21 17:44:26 -0400 |
commit | d270acbc24f0ce451c773c214ac0e92e95396b2f (patch) | |
tree | 46fb1417fd85a4fe477afe391975bc3bc3dec1ab /include/asm-ia64/mca.h | |
parent | b7bb575c3fa3694811a072109f4e9c2f4705d8f5 (diff) |
[IA64] Sanitize assembler code for ia64_sal_os_state
struct ia64_sal_os_state has three semi-independent sections. The code
in mca_asm.S assumes that these three sections are contiguous, which
makes it very awkward to add new data to this structure. Remove the
assumption that the sections are contiguous. Define a macro to shorten
references to offsets in ia64_sal_os_state.
This patch does not change the way that the code behaves. It just
makes it easier to update the code in future and to add fields to
ia64_sal_os_state when debugging the MCA/INIT handlers.
Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64/mca.h')
-rw-r--r-- | include/asm-ia64/mca.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h index 9c5389b7e623..ee97f7c2d462 100644 --- a/include/asm-ia64/mca.h +++ b/include/asm-ia64/mca.h | |||
@@ -69,14 +69,16 @@ typedef struct ia64_mc_info_s { | |||
69 | */ | 69 | */ |
70 | 70 | ||
71 | struct ia64_sal_os_state { | 71 | struct ia64_sal_os_state { |
72 | /* SAL to OS, must be at offset 0 */ | 72 | |
73 | /* SAL to OS */ | ||
73 | u64 os_gp; /* GP of the os registered with the SAL, physical */ | 74 | u64 os_gp; /* GP of the os registered with the SAL, physical */ |
74 | u64 pal_proc; /* PAL_PROC entry point, physical */ | 75 | u64 pal_proc; /* PAL_PROC entry point, physical */ |
75 | u64 sal_proc; /* SAL_PROC entry point, physical */ | 76 | u64 sal_proc; /* SAL_PROC entry point, physical */ |
76 | u64 rv_rc; /* MCA - Rendezvous state, INIT - reason code */ | 77 | u64 rv_rc; /* MCA - Rendezvous state, INIT - reason code */ |
77 | u64 proc_state_param; /* from R18 */ | 78 | u64 proc_state_param; /* from R18 */ |
78 | u64 monarch; /* 1 for a monarch event, 0 for a slave */ | 79 | u64 monarch; /* 1 for a monarch event, 0 for a slave */ |
79 | /* common, must follow SAL to OS */ | 80 | |
81 | /* common */ | ||
80 | u64 sal_ra; /* Return address in SAL, physical */ | 82 | u64 sal_ra; /* Return address in SAL, physical */ |
81 | u64 sal_gp; /* GP of the SAL - physical */ | 83 | u64 sal_gp; /* GP of the SAL - physical */ |
82 | pal_min_state_area_t *pal_min_state; /* from R17. physical in asm, virtual in C */ | 84 | pal_min_state_area_t *pal_min_state; /* from R17. physical in asm, virtual in C */ |
@@ -98,7 +100,8 @@ struct ia64_sal_os_state { | |||
98 | u64 iipa; | 100 | u64 iipa; |
99 | u64 iim; | 101 | u64 iim; |
100 | u64 iha; | 102 | u64 iha; |
101 | /* OS to SAL, must follow common */ | 103 | |
104 | /* OS to SAL */ | ||
102 | u64 os_status; /* OS status to SAL, enum below */ | 105 | u64 os_status; /* OS status to SAL, enum below */ |
103 | u64 context; /* 0 if return to same context | 106 | u64 context; /* 0 if return to same context |
104 | 1 if return to new context */ | 107 | 1 if return to new context */ |