diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-ia64/asmmacro.h | 10 | ||||
-rw-r--r-- | include/asm-ia64/io.h | 6 | ||||
-rw-r--r-- | include/asm-ia64/kregs.h | 3 | ||||
-rw-r--r-- | include/asm-ia64/pal.h | 33 | ||||
-rw-r--r-- | include/asm-ia64/patch.h | 1 | ||||
-rw-r--r-- | include/asm-ia64/processor.h | 1 | ||||
-rw-r--r-- | include/asm-ia64/sections.h | 1 |
7 files changed, 48 insertions, 7 deletions
diff --git a/include/asm-ia64/asmmacro.h b/include/asm-ia64/asmmacro.h index c22b4658fc61..c1642fd64029 100644 --- a/include/asm-ia64/asmmacro.h +++ b/include/asm-ia64/asmmacro.h | |||
@@ -104,6 +104,16 @@ name: | |||
104 | #endif | 104 | #endif |
105 | 105 | ||
106 | /* | 106 | /* |
107 | * If physical stack register size is different from DEF_NUM_STACK_REG, | ||
108 | * dynamically patch the kernel for correct size. | ||
109 | */ | ||
110 | .section ".data.patch.phys_stack_reg", "a" | ||
111 | .previous | ||
112 | #define LOAD_PHYS_STACK_REG_SIZE(reg) \ | ||
113 | [1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \ | ||
114 | .xdata4 ".data.patch.phys_stack_reg", 1b-. | ||
115 | |||
116 | /* | ||
107 | * Up until early 2004, use of .align within a function caused bad unwind info. | 117 | * Up until early 2004, use of .align within a function caused bad unwind info. |
108 | * TEXT_ALIGN(n) expands into ".align n" if a fixed GAS is available or into nothing | 118 | * TEXT_ALIGN(n) expands into ".align n" if a fixed GAS is available or into nothing |
109 | * otherwise. | 119 | * otherwise. |
diff --git a/include/asm-ia64/io.h b/include/asm-ia64/io.h index 6311e168cd34..eb17a8692967 100644 --- a/include/asm-ia64/io.h +++ b/include/asm-ia64/io.h | |||
@@ -421,11 +421,7 @@ __writeq (unsigned long val, volatile void __iomem *addr) | |||
421 | 421 | ||
422 | extern void __iomem * ioremap(unsigned long offset, unsigned long size); | 422 | extern void __iomem * ioremap(unsigned long offset, unsigned long size); |
423 | extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size); | 423 | extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size); |
424 | 424 | extern void iounmap (volatile void __iomem *addr); | |
425 | static inline void | ||
426 | iounmap (volatile void __iomem *addr) | ||
427 | { | ||
428 | } | ||
429 | 425 | ||
430 | /* Use normal IO mappings for DMI */ | 426 | /* Use normal IO mappings for DMI */ |
431 | #define dmi_ioremap ioremap | 427 | #define dmi_ioremap ioremap |
diff --git a/include/asm-ia64/kregs.h b/include/asm-ia64/kregs.h index 221b5cb564b2..7e55a584975c 100644 --- a/include/asm-ia64/kregs.h +++ b/include/asm-ia64/kregs.h | |||
@@ -29,8 +29,7 @@ | |||
29 | */ | 29 | */ |
30 | #define IA64_TR_KERNEL 0 /* itr0, dtr0: maps kernel image (code & data) */ | 30 | #define IA64_TR_KERNEL 0 /* itr0, dtr0: maps kernel image (code & data) */ |
31 | #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as required by EFI */ | 31 | #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as required by EFI */ |
32 | #define IA64_TR_PERCPU_DATA 1 /* dtr1: percpu data */ | 32 | #define IA64_TR_CURRENT_STACK 1 /* dtr1: maps kernel's memory- & register-stacks */ |
33 | #define IA64_TR_CURRENT_STACK 2 /* dtr2: maps kernel's memory- & register-stacks */ | ||
34 | 33 | ||
35 | /* Processor status register bits: */ | 34 | /* Processor status register bits: */ |
36 | #define IA64_PSR_BE_BIT 1 | 35 | #define IA64_PSR_BE_BIT 1 |
diff --git a/include/asm-ia64/pal.h b/include/asm-ia64/pal.h index 67656ce767c2..abfcb3a2588f 100644 --- a/include/asm-ia64/pal.h +++ b/include/asm-ia64/pal.h | |||
@@ -89,6 +89,8 @@ | |||
89 | #define PAL_GET_PSTATE_TYPE_AVGNORESET 2 | 89 | #define PAL_GET_PSTATE_TYPE_AVGNORESET 2 |
90 | #define PAL_GET_PSTATE_TYPE_INSTANT 3 | 90 | #define PAL_GET_PSTATE_TYPE_INSTANT 3 |
91 | 91 | ||
92 | #define PAL_MC_ERROR_INJECT 276 /* Injects processor error or returns injection capabilities */ | ||
93 | |||
92 | #ifndef __ASSEMBLY__ | 94 | #ifndef __ASSEMBLY__ |
93 | 95 | ||
94 | #include <linux/types.h> | 96 | #include <linux/types.h> |
@@ -1235,6 +1237,37 @@ ia64_pal_mc_error_info (u64 info_index, u64 type_index, u64 *size, u64 *error_in | |||
1235 | return iprv.status; | 1237 | return iprv.status; |
1236 | } | 1238 | } |
1237 | 1239 | ||
1240 | /* Injects the requested processor error or returns info on | ||
1241 | * supported injection capabilities for current processor implementation | ||
1242 | */ | ||
1243 | static inline s64 | ||
1244 | ia64_pal_mc_error_inject_phys (u64 err_type_info, u64 err_struct_info, | ||
1245 | u64 err_data_buffer, u64 *capabilities, u64 *resources) | ||
1246 | { | ||
1247 | struct ia64_pal_retval iprv; | ||
1248 | PAL_CALL_PHYS_STK(iprv, PAL_MC_ERROR_INJECT, err_type_info, | ||
1249 | err_struct_info, err_data_buffer); | ||
1250 | if (capabilities) | ||
1251 | *capabilities= iprv.v0; | ||
1252 | if (resources) | ||
1253 | *resources= iprv.v1; | ||
1254 | return iprv.status; | ||
1255 | } | ||
1256 | |||
1257 | static inline s64 | ||
1258 | ia64_pal_mc_error_inject_virt (u64 err_type_info, u64 err_struct_info, | ||
1259 | u64 err_data_buffer, u64 *capabilities, u64 *resources) | ||
1260 | { | ||
1261 | struct ia64_pal_retval iprv; | ||
1262 | PAL_CALL_STK(iprv, PAL_MC_ERROR_INJECT, err_type_info, | ||
1263 | err_struct_info, err_data_buffer); | ||
1264 | if (capabilities) | ||
1265 | *capabilities= iprv.v0; | ||
1266 | if (resources) | ||
1267 | *resources= iprv.v1; | ||
1268 | return iprv.status; | ||
1269 | } | ||
1270 | |||
1238 | /* Inform PALE_CHECK whether a machine check is expected so that PALE_CHECK willnot | 1271 | /* Inform PALE_CHECK whether a machine check is expected so that PALE_CHECK willnot |
1239 | * attempt to correct any expected machine checks. | 1272 | * attempt to correct any expected machine checks. |
1240 | */ | 1273 | */ |
diff --git a/include/asm-ia64/patch.h b/include/asm-ia64/patch.h index 4797f3535e6d..a71543084fb4 100644 --- a/include/asm-ia64/patch.h +++ b/include/asm-ia64/patch.h | |||
@@ -20,6 +20,7 @@ extern void ia64_patch_imm60 (u64 insn_addr, u64 val); /* patch "brl" w/ip-rel | |||
20 | 20 | ||
21 | extern void ia64_patch_mckinley_e9 (unsigned long start, unsigned long end); | 21 | extern void ia64_patch_mckinley_e9 (unsigned long start, unsigned long end); |
22 | extern void ia64_patch_vtop (unsigned long start, unsigned long end); | 22 | extern void ia64_patch_vtop (unsigned long start, unsigned long end); |
23 | extern void ia64_patch_phys_stack_reg(unsigned long val); | ||
23 | extern void ia64_patch_gate (void); | 24 | extern void ia64_patch_gate (void); |
24 | 25 | ||
25 | #endif /* _ASM_IA64_PATCH_H */ | 26 | #endif /* _ASM_IA64_PATCH_H */ |
diff --git a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h index 4f4ee1c2db2f..db81ba406cef 100644 --- a/include/asm-ia64/processor.h +++ b/include/asm-ia64/processor.h | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/ustack.h> | 20 | #include <asm/ustack.h> |
21 | 21 | ||
22 | #define IA64_NUM_PHYS_STACK_REG 96 | ||
22 | #define IA64_NUM_DBG_REGS 8 | 23 | #define IA64_NUM_DBG_REGS 8 |
23 | 24 | ||
24 | #define DEFAULT_MAP_BASE __IA64_UL_CONST(0x2000000000000000) | 25 | #define DEFAULT_MAP_BASE __IA64_UL_CONST(0x2000000000000000) |
diff --git a/include/asm-ia64/sections.h b/include/asm-ia64/sections.h index e9eb7f62d32b..dc42a359894f 100644 --- a/include/asm-ia64/sections.h +++ b/include/asm-ia64/sections.h | |||
@@ -11,6 +11,7 @@ | |||
11 | extern char __per_cpu_start[], __per_cpu_end[], __phys_per_cpu_start[]; | 11 | extern char __per_cpu_start[], __per_cpu_end[], __phys_per_cpu_start[]; |
12 | extern char __start___vtop_patchlist[], __end___vtop_patchlist[]; | 12 | extern char __start___vtop_patchlist[], __end___vtop_patchlist[]; |
13 | extern char __start___mckinley_e9_bundles[], __end___mckinley_e9_bundles[]; | 13 | extern char __start___mckinley_e9_bundles[], __end___mckinley_e9_bundles[]; |
14 | extern char __start___phys_stack_reg_patchlist[], __end___phys_stack_reg_patchlist[]; | ||
14 | extern char __start_gate_section[]; | 15 | extern char __start_gate_section[]; |
15 | extern char __start_gate_mckinley_e9_patchlist[], __end_gate_mckinley_e9_patchlist[]; | 16 | extern char __start_gate_mckinley_e9_patchlist[], __end_gate_mckinley_e9_patchlist[]; |
16 | extern char __start_gate_vtop_patchlist[], __end_gate_vtop_patchlist[]; | 17 | extern char __start_gate_vtop_patchlist[], __end_gate_vtop_patchlist[]; |