diff options
Diffstat (limited to 'arch/s390/kernel/setup.c')
-rw-r--r-- | arch/s390/kernel/setup.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index df83215beac3..b6d740ac0e6e 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -198,11 +198,11 @@ static void __init conmode_default(void) | |||
198 | char *ptr; | 198 | char *ptr; |
199 | 199 | ||
200 | if (MACHINE_IS_VM) { | 200 | if (MACHINE_IS_VM) { |
201 | __cpcmd("QUERY CONSOLE", query_buffer, 1024); | 201 | __cpcmd("QUERY CONSOLE", query_buffer, 1024, NULL); |
202 | console_devno = simple_strtoul(query_buffer + 5, NULL, 16); | 202 | console_devno = simple_strtoul(query_buffer + 5, NULL, 16); |
203 | ptr = strstr(query_buffer, "SUBCHANNEL ="); | 203 | ptr = strstr(query_buffer, "SUBCHANNEL ="); |
204 | console_irq = simple_strtoul(ptr + 13, NULL, 16); | 204 | console_irq = simple_strtoul(ptr + 13, NULL, 16); |
205 | __cpcmd("QUERY TERM", query_buffer, 1024); | 205 | __cpcmd("QUERY TERM", query_buffer, 1024, NULL); |
206 | ptr = strstr(query_buffer, "CONMODE"); | 206 | ptr = strstr(query_buffer, "CONMODE"); |
207 | /* | 207 | /* |
208 | * Set the conmode to 3215 so that the device recognition | 208 | * Set the conmode to 3215 so that the device recognition |
@@ -211,7 +211,7 @@ static void __init conmode_default(void) | |||
211 | * 3215 and the 3270 driver will try to access the console | 211 | * 3215 and the 3270 driver will try to access the console |
212 | * device (3215 as console and 3270 as normal tty). | 212 | * device (3215 as console and 3270 as normal tty). |
213 | */ | 213 | */ |
214 | __cpcmd("TERM CONMODE 3215", NULL, 0); | 214 | __cpcmd("TERM CONMODE 3215", NULL, 0, NULL); |
215 | if (ptr == NULL) { | 215 | if (ptr == NULL) { |
216 | #if defined(CONFIG_SCLP_CONSOLE) | 216 | #if defined(CONFIG_SCLP_CONSOLE) |
217 | SET_CONSOLE_SCLP; | 217 | SET_CONSOLE_SCLP; |
@@ -414,7 +414,8 @@ setup_lowcore(void) | |||
414 | lc->program_new_psw.mask = PSW_KERNEL_BITS; | 414 | lc->program_new_psw.mask = PSW_KERNEL_BITS; |
415 | lc->program_new_psw.addr = | 415 | lc->program_new_psw.addr = |
416 | PSW_ADDR_AMODE | (unsigned long)pgm_check_handler; | 416 | PSW_ADDR_AMODE | (unsigned long)pgm_check_handler; |
417 | lc->mcck_new_psw.mask = PSW_KERNEL_BITS; | 417 | lc->mcck_new_psw.mask = |
418 | PSW_KERNEL_BITS & ~PSW_MASK_MCHECK & ~PSW_MASK_DAT; | ||
418 | lc->mcck_new_psw.addr = | 419 | lc->mcck_new_psw.addr = |
419 | PSW_ADDR_AMODE | (unsigned long) mcck_int_handler; | 420 | PSW_ADDR_AMODE | (unsigned long) mcck_int_handler; |
420 | lc->io_new_psw.mask = PSW_KERNEL_BITS; | 421 | lc->io_new_psw.mask = PSW_KERNEL_BITS; |
@@ -424,12 +425,18 @@ setup_lowcore(void) | |||
424 | lc->kernel_stack = ((unsigned long) &init_thread_union) + THREAD_SIZE; | 425 | lc->kernel_stack = ((unsigned long) &init_thread_union) + THREAD_SIZE; |
425 | lc->async_stack = (unsigned long) | 426 | lc->async_stack = (unsigned long) |
426 | __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0) + ASYNC_SIZE; | 427 | __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0) + ASYNC_SIZE; |
427 | #ifdef CONFIG_CHECK_STACK | ||
428 | lc->panic_stack = (unsigned long) | 428 | lc->panic_stack = (unsigned long) |
429 | __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE; | 429 | __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE; |
430 | #endif | ||
431 | lc->current_task = (unsigned long) init_thread_union.thread_info.task; | 430 | lc->current_task = (unsigned long) init_thread_union.thread_info.task; |
432 | lc->thread_info = (unsigned long) &init_thread_union; | 431 | lc->thread_info = (unsigned long) &init_thread_union; |
432 | #ifndef CONFIG_ARCH_S390X | ||
433 | if (MACHINE_HAS_IEEE) { | ||
434 | lc->extended_save_area_addr = (__u32) | ||
435 | __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0); | ||
436 | /* enable extended save area */ | ||
437 | ctl_set_bit(14, 29); | ||
438 | } | ||
439 | #endif | ||
433 | #ifdef CONFIG_ARCH_S390X | 440 | #ifdef CONFIG_ARCH_S390X |
434 | if (MACHINE_HAS_DIAG44) | 441 | if (MACHINE_HAS_DIAG44) |
435 | lc->diag44_opcode = 0x83000044; | 442 | lc->diag44_opcode = 0x83000044; |