1/* 2 * include/asm-s390/setup.h 3 * 4 * S390 version 5 * Copyright IBM Corp. 1999,2010 6 */ 7 8#ifndef _ASM_S390_SETUP_H 9#define _ASM_S390_SETUP_H 10 11#define COMMAND_LINE_SIZE 4096 12 13#define ARCH_COMMAND_LINE_SIZE 896 14 15#ifdef __KERNEL__ 16 17#define PARMAREA 0x10400 18#define MEMORY_CHUNKS 256 19 20#ifndef __ASSEMBLY__ 21 22#include <asm/lowcore.h> 23#include <asm/types.h> 24 25#ifndef __s390x__ 26#define IPL_DEVICE (*(unsigned long *) (0x10404)) 27#define INITRD_START (*(unsigned long *) (0x1040C)) 28#define INITRD_SIZE (*(unsigned long *) (0x10414)) 29#else /* __s390x__ */ 30#define IPL_DEVICE (*(unsigned long *) (0x10400)) 31#define INITRD_START (*(unsigned long *) (0x10408)) 32#define INITRD_SIZE (*(unsigned long *) (0x10410)) 33#endif /* __s390x__ */ 34#define COMMAND_LINE ((char *) (0x10480)) 35 36#define CHUNK_READ_WRITE 0 37#define CHUNK_READ_ONLY 1 38 39struct mem_chunk { 40 unsigned long addr; 41 unsigned long size; 42 int type; 43}; 44 45extern struct mem_chunk memory_chunk[]; 46extern unsigned long real_memory_size; 47extern int memory_end_set; 48extern unsigned long memory_end; 49 50void detect_memory_layout(struct mem_chunk chunk[]); 51 52#define PRIMARY_SPACE_MODE 0 53#define ACCESS_REGISTER_MODE 1 54#define SECONDARY_SPACE_MODE 2 55#define HOME_SPACE_MODE 3 56 57extern unsigned int user_mode; 58 59/* 60 * Machine features detected in head.S 61 */ 62 63#define MACHINE_FLAG_VM (1UL << 0) 64#define MACHINE_FLAG_IEEE (1UL << 1) 65#define MACHINE_FLAG_CSP (1UL << 3) 66#define MACHINE_FLAG_MVPG (1UL << 4) 67#define MACHINE_FLAG_DIAG44 (1UL << 5) 68#define MACHINE_FLAG_IDTE (1UL << 6) 69#define MACHINE_FLAG_DIAG9C (1UL << 7) 70#define MACHINE_FLAG_MVCOS (1UL << 8) 71#define MACHINE_FLAG_KVM (1UL << 9) 72#define MACHINE_FLAG_HPAGE (1UL << 10) 73#define MACHINE_FLAG_PFMF (1UL << 11) 74#define MACHINE_FLAG_LPAR (1UL << 12) 75#define MACHINE_FLAG_SPP (1UL << 13) 76 77#define MACHINE_IS_VM (S390_lowcore.machine_flags & MACHINE_FLAG_VM) 78#define MACHINE_IS_KVM (S390_lowcore.machine_flags & MACHINE_FLAG_KVM) 79#define MACHINE_IS_LPAR (S390_lowcore.machine_flags & MACHINE_FLAG_LPAR) 80 81#define MACHINE_HAS_DIAG9C (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG9C) 82 83#ifndef __s390x__ 84#define MACHINE_HAS_IEEE (S390_lowcore.machine_flags & MACHINE_FLAG_IEEE) 85#define MACHINE_HAS_CSP (S390_lowcore.machine_flags & MACHINE_FLAG_CSP) 86#define MACHINE_HAS_IDTE (0) 87#define MACHINE_HAS_DIAG44 (1) 88#define MACHINE_HAS_MVPG (S390_lowcore.machine_flags & MACHINE_FLAG_MVPG) 89#define MACHINE_HAS_MVCOS (0) 90#define MACHINE_HAS_HPAGE (0) 91#define MACHINE_HAS_PFMF (0) 92#define MACHINE_HAS_SPP (0) 93#else /* __s390x__ */ 94#define MACHINE_HAS_IEEE (1) 95#define MACHINE_HAS_CSP (1) 96#define MACHINE_HAS_IDTE (S390_lowcore.machine_flags & MACHINE_FLAG_IDTE) 97#define MACHINE_HAS_DIAG44 (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG44) 98#define MACHINE_HAS_MVPG (1) 99#define MACHINE_HAS_MVCOS (S390_lowcore.machine_flags & MACHINE_FLAG_MVCOS) 100#define MACHINE_HAS_HPAGE (S390_lowcore.machine_flags & MACHINE_FLAG_HPAGE) 101#define MACHINE_HAS_PFMF (S390_lowcore.machine_flags & MACHINE_FLAG_PFMF) 102#define MACHINE_HAS_SPP (S390_lowcore.machine_flags & MACHINE_FLAG_SPP) 103#endif /* __s390x__ */ 104 105#define ZFCPDUMP_HSA_SIZE (32UL<<20) 106 107/* 108 * Console mode. Override with conmode= 109 */ 110extern unsigned int console_mode; 111extern unsigned int console_devno; 112extern unsigned int console_irq; 113 114extern char vmhalt_cmd[]; 115extern char vmpoff_cmd[]; 116 117#define CONSOLE_IS_UNDEFINED (console_mode == 0) 118#define CONSOLE_IS_SCLP (console_mode == 1) 119#define CONSOLE_IS_3215 (console_mode == 2) 120#define CONSOLE_IS_3270 (console_mode == 3) 121#define SET_CONSOLE_SCLP do { console_mode = 1; } while (0) 122#define SET_CONSOLE_3215 do { console_mode = 2; } while (0) 123#define SET_CONSOLE_3270 do { console_mode = 3; } while (0) 124 125#define NSS_NAME_SIZE 8 126extern char kernel_nss_name[]; 127 128#else /* __ASSEMBLY__ */ 129 130#ifndef __s390x__ 131#define IPL_DEVICE 0x10404 132#define INITRD_START 0x1040C 133#define INITRD_SIZE 0x10414 134#else /* __s390x__ */ 135#define IPL_DEVICE 0x10400 136#define INITRD_START 0x10408 137#define INITRD_SIZE 0x10410 138#endif /* __s390x__ */ 139#define COMMAND_LINE 0x10480 140 141#endif /* __ASSEMBLY__ */ 142#endif /* __KERNEL__ */ 143#endif /* _ASM_S390_SETUP_H */ 144