diff options
Diffstat (limited to 'include/asm-s390')
-rw-r--r-- | include/asm-s390/bug.h | 69 | ||||
-rw-r--r-- | include/asm-s390/ccwgroup.h | 1 | ||||
-rw-r--r-- | include/asm-s390/chpid.h | 53 | ||||
-rw-r--r-- | include/asm-s390/cio.h | 8 | ||||
-rw-r--r-- | include/asm-s390/ipl.h | 35 | ||||
-rw-r--r-- | include/asm-s390/lowcore.h | 46 | ||||
-rw-r--r-- | include/asm-s390/pgtable.h | 15 | ||||
-rw-r--r-- | include/asm-s390/processor.h | 2 | ||||
-rw-r--r-- | include/asm-s390/sclp.h | 14 | ||||
-rw-r--r-- | include/asm-s390/setup.h | 2 | ||||
-rw-r--r-- | include/asm-s390/smp.h | 6 |
11 files changed, 224 insertions, 27 deletions
diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index 876898363944..838684dc6d35 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h | |||
@@ -1,27 +1,70 @@ | |||
1 | #ifndef _S390_BUG_H | 1 | #ifndef _ASM_S390_BUG_H |
2 | #define _S390_BUG_H | 2 | #define _ASM_S390_BUG_H |
3 | 3 | ||
4 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
5 | 5 | ||
6 | #ifdef CONFIG_BUG | 6 | #ifdef CONFIG_BUG |
7 | 7 | ||
8 | static inline __attribute__((noreturn)) void __do_illegal_op(void) | 8 | #ifdef CONFIG_64BIT |
9 | { | 9 | #define S390_LONG ".quad" |
10 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) | ||
11 | __builtin_trap(); | ||
12 | #else | 10 | #else |
13 | asm volatile(".long 0"); | 11 | #define S390_LONG ".long" |
14 | #endif | 12 | #endif |
15 | } | ||
16 | 13 | ||
17 | #define BUG() do { \ | 14 | #ifdef CONFIG_DEBUG_BUGVERBOSE |
18 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | 15 | |
19 | __do_illegal_op(); \ | 16 | #define __EMIT_BUG(x) do { \ |
17 | asm volatile( \ | ||
18 | "0: j 0b+2\n" \ | ||
19 | "1:\n" \ | ||
20 | ".section .rodata.str,\"aMS\",@progbits,1\n" \ | ||
21 | "2: .asciz \""__FILE__"\"\n" \ | ||
22 | ".previous\n" \ | ||
23 | ".section __bug_table,\"a\"\n" \ | ||
24 | "3:\t" S390_LONG "\t1b,2b\n" \ | ||
25 | " .short %0,%1\n" \ | ||
26 | " .org 3b+%2\n" \ | ||
27 | ".previous\n" \ | ||
28 | : : "i" (__LINE__), \ | ||
29 | "i" (x), \ | ||
30 | "i" (sizeof(struct bug_entry))); \ | ||
20 | } while (0) | 31 | } while (0) |
21 | 32 | ||
33 | #else /* CONFIG_DEBUG_BUGVERBOSE */ | ||
34 | |||
35 | #define __EMIT_BUG(x) do { \ | ||
36 | asm volatile( \ | ||
37 | "0: j 0b+2\n" \ | ||
38 | "1:\n" \ | ||
39 | ".section __bug_table,\"a\"\n" \ | ||
40 | "2:\t" S390_LONG "\t1b\n" \ | ||
41 | " .short %0\n" \ | ||
42 | " .org 2b+%1\n" \ | ||
43 | ".previous\n" \ | ||
44 | : : "i" (x), \ | ||
45 | "i" (sizeof(struct bug_entry))); \ | ||
46 | } while (0) | ||
47 | |||
48 | #endif /* CONFIG_DEBUG_BUGVERBOSE */ | ||
49 | |||
50 | #define BUG() __EMIT_BUG(0) | ||
51 | |||
52 | #define WARN_ON(x) ({ \ | ||
53 | typeof(x) __ret_warn_on = (x); \ | ||
54 | if (__builtin_constant_p(__ret_warn_on)) { \ | ||
55 | if (__ret_warn_on) \ | ||
56 | __EMIT_BUG(BUGFLAG_WARNING); \ | ||
57 | } else { \ | ||
58 | if (unlikely(__ret_warn_on)) \ | ||
59 | __EMIT_BUG(BUGFLAG_WARNING); \ | ||
60 | } \ | ||
61 | unlikely(__ret_warn_on); \ | ||
62 | }) | ||
63 | |||
22 | #define HAVE_ARCH_BUG | 64 | #define HAVE_ARCH_BUG |
23 | #endif | 65 | #define HAVE_ARCH_WARN_ON |
66 | #endif /* CONFIG_BUG */ | ||
24 | 67 | ||
25 | #include <asm-generic/bug.h> | 68 | #include <asm-generic/bug.h> |
26 | 69 | ||
27 | #endif | 70 | #endif /* _ASM_S390_BUG_H */ |
diff --git a/include/asm-s390/ccwgroup.h b/include/asm-s390/ccwgroup.h index d2f9c0d53a97..925b3ddfa141 100644 --- a/include/asm-s390/ccwgroup.h +++ b/include/asm-s390/ccwgroup.h | |||
@@ -11,6 +11,7 @@ struct ccwgroup_device { | |||
11 | CCWGROUP_ONLINE, | 11 | CCWGROUP_ONLINE, |
12 | } state; | 12 | } state; |
13 | atomic_t onoff; | 13 | atomic_t onoff; |
14 | struct mutex reg_mutex; | ||
14 | unsigned int count; /* number of attached slave devices */ | 15 | unsigned int count; /* number of attached slave devices */ |
15 | struct device dev; /* master device */ | 16 | struct device dev; /* master device */ |
16 | struct ccw_device *cdev[0]; /* variable number, allocate as needed */ | 17 | struct ccw_device *cdev[0]; /* variable number, allocate as needed */ |
diff --git a/include/asm-s390/chpid.h b/include/asm-s390/chpid.h new file mode 100644 index 000000000000..b203336fd892 --- /dev/null +++ b/include/asm-s390/chpid.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * drivers/s390/cio/chpid.h | ||
3 | * | ||
4 | * Copyright IBM Corp. 2007 | ||
5 | * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | ||
6 | */ | ||
7 | |||
8 | #ifndef _ASM_S390_CHPID_H | ||
9 | #define _ASM_S390_CHPID_H _ASM_S390_CHPID_H | ||
10 | |||
11 | #include <linux/string.h> | ||
12 | #include <asm/types.h> | ||
13 | #include <asm/cio.h> | ||
14 | |||
15 | #define __MAX_CHPID 255 | ||
16 | |||
17 | struct chp_id { | ||
18 | u8 reserved1; | ||
19 | u8 cssid; | ||
20 | u8 reserved2; | ||
21 | u8 id; | ||
22 | } __attribute__((packed)); | ||
23 | |||
24 | static inline void chp_id_init(struct chp_id *chpid) | ||
25 | { | ||
26 | memset(chpid, 0, sizeof(struct chp_id)); | ||
27 | } | ||
28 | |||
29 | static inline int chp_id_is_equal(struct chp_id *a, struct chp_id *b) | ||
30 | { | ||
31 | return (a->id == b->id) && (a->cssid == b->cssid); | ||
32 | } | ||
33 | |||
34 | static inline void chp_id_next(struct chp_id *chpid) | ||
35 | { | ||
36 | if (chpid->id < __MAX_CHPID) | ||
37 | chpid->id++; | ||
38 | else { | ||
39 | chpid->id = 0; | ||
40 | chpid->cssid++; | ||
41 | } | ||
42 | } | ||
43 | |||
44 | static inline int chp_id_is_valid(struct chp_id *chpid) | ||
45 | { | ||
46 | return (chpid->cssid <= __MAX_CSSID); | ||
47 | } | ||
48 | |||
49 | |||
50 | #define chp_id_for_each(c) \ | ||
51 | for (chp_id_init(c); chp_id_is_valid(c); chp_id_next(c)) | ||
52 | |||
53 | #endif /* _ASM_S390_CHPID_H */ | ||
diff --git a/include/asm-s390/cio.h b/include/asm-s390/cio.h index d92785030980..f738d2827582 100644 --- a/include/asm-s390/cio.h +++ b/include/asm-s390/cio.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #ifdef __KERNEL__ | 13 | #ifdef __KERNEL__ |
14 | 14 | ||
15 | #define LPM_ANYPATH 0xff | 15 | #define LPM_ANYPATH 0xff |
16 | #define __MAX_CSSID 0 | ||
16 | 17 | ||
17 | /* | 18 | /* |
18 | * subchannel status word | 19 | * subchannel status word |
@@ -292,6 +293,13 @@ extern void css_schedule_reprobe(void); | |||
292 | 293 | ||
293 | extern void reipl_ccw_dev(struct ccw_dev_id *id); | 294 | extern void reipl_ccw_dev(struct ccw_dev_id *id); |
294 | 295 | ||
296 | struct cio_iplinfo { | ||
297 | u16 devno; | ||
298 | int is_qdio; | ||
299 | }; | ||
300 | |||
301 | extern int cio_get_iplinfo(struct cio_iplinfo *iplinfo); | ||
302 | |||
295 | #endif | 303 | #endif |
296 | 304 | ||
297 | #endif | 305 | #endif |
diff --git a/include/asm-s390/ipl.h b/include/asm-s390/ipl.h index 0eb64083480a..bdcd448d43fb 100644 --- a/include/asm-s390/ipl.h +++ b/include/asm-s390/ipl.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #define _ASM_S390_IPL_H | 8 | #define _ASM_S390_IPL_H |
9 | 9 | ||
10 | #include <asm/types.h> | 10 | #include <asm/types.h> |
11 | #include <asm/cio.h> | ||
12 | #include <asm/setup.h> | ||
11 | 13 | ||
12 | #define IPL_PARMBLOCK_ORIGIN 0x2000 | 14 | #define IPL_PARMBLOCK_ORIGIN 0x2000 |
13 | 15 | ||
@@ -74,12 +76,12 @@ struct ipl_parameter_block { | |||
74 | } __attribute__((packed)); | 76 | } __attribute__((packed)); |
75 | 77 | ||
76 | /* | 78 | /* |
77 | * IPL validity flags and parameters as detected in head.S | 79 | * IPL validity flags |
78 | */ | 80 | */ |
79 | extern u32 ipl_flags; | 81 | extern u32 ipl_flags; |
80 | extern u16 ipl_devno; | ||
81 | 82 | ||
82 | extern u32 dump_prefix_page; | 83 | extern u32 dump_prefix_page; |
84 | |||
83 | extern void do_reipl(void); | 85 | extern void do_reipl(void); |
84 | extern void ipl_save_parameters(void); | 86 | extern void ipl_save_parameters(void); |
85 | 87 | ||
@@ -89,6 +91,35 @@ enum { | |||
89 | IPL_NSS_VALID = 4, | 91 | IPL_NSS_VALID = 4, |
90 | }; | 92 | }; |
91 | 93 | ||
94 | enum ipl_type { | ||
95 | IPL_TYPE_UNKNOWN = 1, | ||
96 | IPL_TYPE_CCW = 2, | ||
97 | IPL_TYPE_FCP = 4, | ||
98 | IPL_TYPE_FCP_DUMP = 8, | ||
99 | IPL_TYPE_NSS = 16, | ||
100 | }; | ||
101 | |||
102 | struct ipl_info | ||
103 | { | ||
104 | enum ipl_type type; | ||
105 | union { | ||
106 | struct { | ||
107 | struct ccw_dev_id dev_id; | ||
108 | } ccw; | ||
109 | struct { | ||
110 | struct ccw_dev_id dev_id; | ||
111 | u64 wwpn; | ||
112 | u64 lun; | ||
113 | } fcp; | ||
114 | struct { | ||
115 | char name[NSS_NAME_SIZE + 1]; | ||
116 | } nss; | ||
117 | } data; | ||
118 | }; | ||
119 | |||
120 | extern struct ipl_info ipl_info; | ||
121 | extern void setup_ipl_info(void); | ||
122 | |||
92 | /* | 123 | /* |
93 | * DIAG 308 support | 124 | * DIAG 308 support |
94 | */ | 125 | */ |
diff --git a/include/asm-s390/lowcore.h b/include/asm-s390/lowcore.h index 4a31d0a7ee83..ffc9788a21a7 100644 --- a/include/asm-s390/lowcore.h +++ b/include/asm-s390/lowcore.h | |||
@@ -147,6 +147,52 @@ void pgm_check_handler(void); | |||
147 | void mcck_int_handler(void); | 147 | void mcck_int_handler(void); |
148 | void io_int_handler(void); | 148 | void io_int_handler(void); |
149 | 149 | ||
150 | struct save_area_s390 { | ||
151 | u32 ext_save; | ||
152 | u64 timer; | ||
153 | u64 clk_cmp; | ||
154 | u8 pad1[24]; | ||
155 | u8 psw[8]; | ||
156 | u32 pref_reg; | ||
157 | u8 pad2[20]; | ||
158 | u32 acc_regs[16]; | ||
159 | u64 fp_regs[4]; | ||
160 | u32 gp_regs[16]; | ||
161 | u32 ctrl_regs[16]; | ||
162 | } __attribute__((packed)); | ||
163 | |||
164 | struct save_area_s390x { | ||
165 | u64 fp_regs[16]; | ||
166 | u64 gp_regs[16]; | ||
167 | u8 psw[16]; | ||
168 | u8 pad1[8]; | ||
169 | u32 pref_reg; | ||
170 | u32 fp_ctrl_reg; | ||
171 | u8 pad2[4]; | ||
172 | u32 tod_reg; | ||
173 | u64 timer; | ||
174 | u64 clk_cmp; | ||
175 | u8 pad3[8]; | ||
176 | u32 acc_regs[16]; | ||
177 | u64 ctrl_regs[16]; | ||
178 | } __attribute__((packed)); | ||
179 | |||
180 | union save_area { | ||
181 | struct save_area_s390 s390; | ||
182 | struct save_area_s390x s390x; | ||
183 | }; | ||
184 | |||
185 | #define SAVE_AREA_BASE_S390 0xd4 | ||
186 | #define SAVE_AREA_BASE_S390X 0x1200 | ||
187 | |||
188 | #ifndef __s390x__ | ||
189 | #define SAVE_AREA_SIZE sizeof(struct save_area_s390) | ||
190 | #define SAVE_AREA_BASE SAVE_AREA_BASE_S390 | ||
191 | #else | ||
192 | #define SAVE_AREA_SIZE sizeof(struct save_area_s390x) | ||
193 | #define SAVE_AREA_BASE SAVE_AREA_BASE_S390X | ||
194 | #endif | ||
195 | |||
150 | struct _lowcore | 196 | struct _lowcore |
151 | { | 197 | { |
152 | #ifndef __s390x__ | 198 | #ifndef __s390x__ |
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index 13c16546eff5..8fe8d42e64c3 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h | |||
@@ -753,14 +753,14 @@ ptep_establish(struct vm_area_struct *vma, | |||
753 | * should therefore only be called if it is not mapped in any | 753 | * should therefore only be called if it is not mapped in any |
754 | * address space. | 754 | * address space. |
755 | */ | 755 | */ |
756 | static inline int page_test_and_clear_dirty(struct page *page) | 756 | static inline int page_test_dirty(struct page *page) |
757 | { | 757 | { |
758 | unsigned long physpage = page_to_phys(page); | 758 | return (page_get_storage_key(page_to_phys(page)) & _PAGE_CHANGED) != 0; |
759 | int skey = page_get_storage_key(physpage); | 759 | } |
760 | 760 | ||
761 | if (skey & _PAGE_CHANGED) | 761 | static inline void page_clear_dirty(struct page *page) |
762 | page_set_storage_key(physpage, skey & ~_PAGE_CHANGED); | 762 | { |
763 | return skey & _PAGE_CHANGED; | 763 | page_set_storage_key(page_to_phys(page), PAGE_DEFAULT_KEY); |
764 | } | 764 | } |
765 | 765 | ||
766 | /* | 766 | /* |
@@ -953,7 +953,8 @@ extern void memmap_init(unsigned long, int, unsigned long, unsigned long); | |||
953 | #define __HAVE_ARCH_PTEP_CLEAR_FLUSH | 953 | #define __HAVE_ARCH_PTEP_CLEAR_FLUSH |
954 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 954 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
955 | #define __HAVE_ARCH_PTE_SAME | 955 | #define __HAVE_ARCH_PTE_SAME |
956 | #define __HAVE_ARCH_PAGE_TEST_AND_CLEAR_DIRTY | 956 | #define __HAVE_ARCH_PAGE_TEST_DIRTY |
957 | #define __HAVE_ARCH_PAGE_CLEAR_DIRTY | ||
957 | #define __HAVE_ARCH_PAGE_TEST_AND_CLEAR_YOUNG | 958 | #define __HAVE_ARCH_PAGE_TEST_AND_CLEAR_YOUNG |
958 | #include <asm-generic/pgtable.h> | 959 | #include <asm-generic/pgtable.h> |
959 | 960 | ||
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h index 33b80ced4bc1..e0fcea8c64c3 100644 --- a/include/asm-s390/processor.h +++ b/include/asm-s390/processor.h | |||
@@ -57,6 +57,7 @@ struct cpuinfo_S390 | |||
57 | 57 | ||
58 | extern void s390_adjust_jiffies(void); | 58 | extern void s390_adjust_jiffies(void); |
59 | extern void print_cpu_info(struct cpuinfo_S390 *); | 59 | extern void print_cpu_info(struct cpuinfo_S390 *); |
60 | extern int get_cpu_capability(unsigned int *); | ||
60 | 61 | ||
61 | /* Lazy FPU handling on uni-processor */ | 62 | /* Lazy FPU handling on uni-processor */ |
62 | extern struct task_struct *last_task_used_math; | 63 | extern struct task_struct *last_task_used_math; |
@@ -196,6 +197,7 @@ extern unsigned long thread_saved_pc(struct task_struct *t); | |||
196 | extern char *task_show_regs(struct task_struct *task, char *buffer); | 197 | extern char *task_show_regs(struct task_struct *task, char *buffer); |
197 | 198 | ||
198 | extern void show_registers(struct pt_regs *regs); | 199 | extern void show_registers(struct pt_regs *regs); |
200 | extern void show_code(struct pt_regs *regs); | ||
199 | extern void show_trace(struct task_struct *task, unsigned long *sp); | 201 | extern void show_trace(struct task_struct *task, unsigned long *sp); |
200 | 202 | ||
201 | unsigned long get_wchan(struct task_struct *p); | 203 | unsigned long get_wchan(struct task_struct *p); |
diff --git a/include/asm-s390/sclp.h b/include/asm-s390/sclp.h index 468b97018405..21ed64773210 100644 --- a/include/asm-s390/sclp.h +++ b/include/asm-s390/sclp.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #define _ASM_S390_SCLP_H | 9 | #define _ASM_S390_SCLP_H |
10 | 10 | ||
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <asm/chpid.h> | ||
12 | 13 | ||
13 | struct sccb_header { | 14 | struct sccb_header { |
14 | u16 length; | 15 | u16 length; |
@@ -33,7 +34,20 @@ struct sclp_readinfo_sccb { | |||
33 | u8 _reserved3[4096 - 112]; /* 112-4095 */ | 34 | u8 _reserved3[4096 - 112]; /* 112-4095 */ |
34 | } __attribute__((packed, aligned(4096))); | 35 | } __attribute__((packed, aligned(4096))); |
35 | 36 | ||
37 | #define SCLP_CHP_INFO_MASK_SIZE 32 | ||
38 | |||
39 | struct sclp_chp_info { | ||
40 | u8 recognized[SCLP_CHP_INFO_MASK_SIZE]; | ||
41 | u8 standby[SCLP_CHP_INFO_MASK_SIZE]; | ||
42 | u8 configured[SCLP_CHP_INFO_MASK_SIZE]; | ||
43 | }; | ||
44 | |||
36 | extern struct sclp_readinfo_sccb s390_readinfo_sccb; | 45 | extern struct sclp_readinfo_sccb s390_readinfo_sccb; |
37 | extern void sclp_readinfo_early(void); | 46 | extern void sclp_readinfo_early(void); |
47 | extern int sclp_sdias_blk_count(void); | ||
48 | extern int sclp_sdias_copy(void *dest, int blk_num, int nr_blks); | ||
49 | extern int sclp_chp_configure(struct chp_id chpid); | ||
50 | extern int sclp_chp_deconfigure(struct chp_id chpid); | ||
51 | extern int sclp_chp_read_info(struct sclp_chp_info *info); | ||
38 | 52 | ||
39 | #endif /* _ASM_S390_SCLP_H */ | 53 | #endif /* _ASM_S390_SCLP_H */ |
diff --git a/include/asm-s390/setup.h b/include/asm-s390/setup.h index 44c7aee2bd34..a76a6b8fd887 100644 --- a/include/asm-s390/setup.h +++ b/include/asm-s390/setup.h | |||
@@ -40,6 +40,7 @@ struct mem_chunk { | |||
40 | }; | 40 | }; |
41 | 41 | ||
42 | extern struct mem_chunk memory_chunk[]; | 42 | extern struct mem_chunk memory_chunk[]; |
43 | extern unsigned long real_memory_size; | ||
43 | 44 | ||
44 | #ifdef CONFIG_S390_SWITCH_AMODE | 45 | #ifdef CONFIG_S390_SWITCH_AMODE |
45 | extern unsigned int switch_amode; | 46 | extern unsigned int switch_amode; |
@@ -77,6 +78,7 @@ extern unsigned long machine_flags; | |||
77 | #endif /* __s390x__ */ | 78 | #endif /* __s390x__ */ |
78 | 79 | ||
79 | #define MACHINE_HAS_SCLP (!MACHINE_IS_P390) | 80 | #define MACHINE_HAS_SCLP (!MACHINE_IS_P390) |
81 | #define ZFCPDUMP_HSA_SIZE (32UL<<20) | ||
80 | 82 | ||
81 | /* | 83 | /* |
82 | * Console mode. Override with conmode= | 84 | * Console mode. Override with conmode= |
diff --git a/include/asm-s390/smp.h b/include/asm-s390/smp.h index b957e4cda464..0a28e6d6ef40 100644 --- a/include/asm-s390/smp.h +++ b/include/asm-s390/smp.h | |||
@@ -54,9 +54,6 @@ extern int smp_call_function_on(void (*func) (void *info), void *info, | |||
54 | 54 | ||
55 | #define raw_smp_processor_id() (S390_lowcore.cpu_data.cpu_nr) | 55 | #define raw_smp_processor_id() (S390_lowcore.cpu_data.cpu_nr) |
56 | 56 | ||
57 | extern int smp_get_cpu(cpumask_t cpu_map); | ||
58 | extern void smp_put_cpu(int cpu); | ||
59 | |||
60 | static inline __u16 hard_smp_processor_id(void) | 57 | static inline __u16 hard_smp_processor_id(void) |
61 | { | 58 | { |
62 | __u16 cpu_address; | 59 | __u16 cpu_address; |
@@ -114,9 +111,8 @@ static inline void smp_send_stop(void) | |||
114 | } | 111 | } |
115 | 112 | ||
116 | #define smp_cpu_not_running(cpu) 1 | 113 | #define smp_cpu_not_running(cpu) 1 |
117 | #define smp_get_cpu(cpu) ({ 0; }) | ||
118 | #define smp_put_cpu(cpu) ({ 0; }) | ||
119 | #define smp_setup_cpu_possible_map() do { } while (0) | 114 | #define smp_setup_cpu_possible_map() do { } while (0) |
120 | #endif | 115 | #endif |
121 | 116 | ||
117 | extern union save_area *zfcpdump_save_areas[NR_CPUS + 1]; | ||
122 | #endif | 118 | #endif |