at v2.6.20 170 lines 4.0 kB view raw
1/* 2 * include/asm-s390/setup.h 3 * 4 * S390 version 5 * Copyright IBM Corp. 1999,2006 6 */ 7 8#ifndef _ASM_S390_SETUP_H 9#define _ASM_S390_SETUP_H 10 11#define COMMAND_LINE_SIZE 896 12 13#ifdef __KERNEL__ 14 15#include <asm/types.h> 16 17#define PARMAREA 0x10400 18#define MEMORY_CHUNKS 16 /* max 0x7fff */ 19#define IPL_PARMBLOCK_ORIGIN 0x2000 20 21#ifndef __ASSEMBLY__ 22 23#ifndef __s390x__ 24#define IPL_DEVICE (*(unsigned long *) (0x10404)) 25#define INITRD_START (*(unsigned long *) (0x1040C)) 26#define INITRD_SIZE (*(unsigned long *) (0x10414)) 27#else /* __s390x__ */ 28#define IPL_DEVICE (*(unsigned long *) (0x10400)) 29#define INITRD_START (*(unsigned long *) (0x10408)) 30#define INITRD_SIZE (*(unsigned long *) (0x10410)) 31#endif /* __s390x__ */ 32#define COMMAND_LINE ((char *) (0x10480)) 33 34#define CHUNK_READ_WRITE 0 35#define CHUNK_READ_ONLY 1 36 37struct mem_chunk { 38 unsigned long addr; 39 unsigned long size; 40 unsigned long type; 41}; 42 43extern struct mem_chunk memory_chunk[]; 44 45/* 46 * Machine features detected in head.S 47 */ 48extern unsigned long machine_flags; 49 50#define MACHINE_IS_VM (machine_flags & 1) 51#define MACHINE_IS_P390 (machine_flags & 4) 52#define MACHINE_HAS_MVPG (machine_flags & 16) 53#define MACHINE_HAS_IDTE (machine_flags & 128) 54#define MACHINE_HAS_DIAG9C (machine_flags & 256) 55 56#ifndef __s390x__ 57#define MACHINE_HAS_IEEE (machine_flags & 2) 58#define MACHINE_HAS_CSP (machine_flags & 8) 59#define MACHINE_HAS_DIAG44 (1) 60#define MACHINE_HAS_MVCOS (0) 61#else /* __s390x__ */ 62#define MACHINE_HAS_IEEE (1) 63#define MACHINE_HAS_CSP (1) 64#define MACHINE_HAS_DIAG44 (machine_flags & 32) 65#define MACHINE_HAS_MVCOS (machine_flags & 512) 66#endif /* __s390x__ */ 67 68#define MACHINE_HAS_SCLP (!MACHINE_IS_P390) 69 70/* 71 * Console mode. Override with conmode= 72 */ 73extern unsigned int console_mode; 74extern unsigned int console_devno; 75extern unsigned int console_irq; 76 77#define CONSOLE_IS_UNDEFINED (console_mode == 0) 78#define CONSOLE_IS_SCLP (console_mode == 1) 79#define CONSOLE_IS_3215 (console_mode == 2) 80#define CONSOLE_IS_3270 (console_mode == 3) 81#define SET_CONSOLE_SCLP do { console_mode = 1; } while (0) 82#define SET_CONSOLE_3215 do { console_mode = 2; } while (0) 83#define SET_CONSOLE_3270 do { console_mode = 3; } while (0) 84 85struct ipl_list_hdr { 86 u32 len; 87 u8 reserved1[3]; 88 u8 version; 89 u32 blk0_len; 90 u8 pbt; 91 u8 flags; 92 u16 reserved2; 93} __attribute__((packed)); 94 95struct ipl_block_fcp { 96 u8 reserved1[313-1]; 97 u8 opt; 98 u8 reserved2[3]; 99 u16 reserved3; 100 u16 devno; 101 u8 reserved4[4]; 102 u64 wwpn; 103 u64 lun; 104 u32 bootprog; 105 u8 reserved5[12]; 106 u64 br_lba; 107 u32 scp_data_len; 108 u8 reserved6[260]; 109 u8 scp_data[]; 110} __attribute__((packed)); 111 112struct ipl_block_ccw { 113 u8 load_param[8]; 114 u8 reserved1[84]; 115 u8 reserved2[2]; 116 u16 devno; 117 u8 vm_flags; 118 u8 reserved3[3]; 119 u32 vm_parm_len; 120} __attribute__((packed)); 121 122struct ipl_parameter_block { 123 struct ipl_list_hdr hdr; 124 union { 125 struct ipl_block_fcp fcp; 126 struct ipl_block_ccw ccw; 127 } ipl_info; 128} __attribute__((packed)); 129 130#define IPL_PARM_BLK_FCP_LEN (sizeof(struct ipl_list_hdr) + \ 131 sizeof(struct ipl_block_fcp)) 132 133#define IPL_PARM_BLK_CCW_LEN (sizeof(struct ipl_list_hdr) + \ 134 sizeof(struct ipl_block_ccw)) 135 136#define IPL_MAX_SUPPORTED_VERSION (0) 137 138/* 139 * IPL validity flags and parameters as detected in head.S 140 */ 141extern u32 ipl_flags; 142extern u16 ipl_devno; 143 144void do_reipl(void); 145 146enum { 147 IPL_DEVNO_VALID = 1, 148 IPL_PARMBLOCK_VALID = 2, 149}; 150 151#define IPL_PARMBLOCK_START ((struct ipl_parameter_block *) \ 152 IPL_PARMBLOCK_ORIGIN) 153#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START->hdr.len) 154 155#else /* __ASSEMBLY__ */ 156 157#ifndef __s390x__ 158#define IPL_DEVICE 0x10404 159#define INITRD_START 0x1040C 160#define INITRD_SIZE 0x10414 161#else /* __s390x__ */ 162#define IPL_DEVICE 0x10400 163#define INITRD_START 0x10408 164#define INITRD_SIZE 0x10410 165#endif /* __s390x__ */ 166#define COMMAND_LINE 0x10480 167 168#endif /* __ASSEMBLY__ */ 169#endif /* __KERNEL__ */ 170#endif /* _ASM_S390_SETUP_H */