aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-s390/setup.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-s390/setup.h')
-rw-r--r--include/asm-s390/setup.h67
1 files changed, 46 insertions, 21 deletions
diff --git a/include/asm-s390/setup.h b/include/asm-s390/setup.h
index 19e31979309a..5d72eda8a11b 100644
--- a/include/asm-s390/setup.h
+++ b/include/asm-s390/setup.h
@@ -14,8 +14,6 @@
14 14
15#define PARMAREA 0x10400 15#define PARMAREA 0x10400
16#define COMMAND_LINE_SIZE 896 16#define COMMAND_LINE_SIZE 896
17#define RAMDISK_ORIGIN 0x800000
18#define RAMDISK_SIZE 0x800000
19#define MEMORY_CHUNKS 16 /* max 0x7fff */ 17#define MEMORY_CHUNKS 16 /* max 0x7fff */
20#define IPL_PARMBLOCK_ORIGIN 0x2000 18#define IPL_PARMBLOCK_ORIGIN 0x2000
21 19
@@ -41,15 +39,18 @@ extern unsigned long machine_flags;
41#define MACHINE_IS_P390 (machine_flags & 4) 39#define MACHINE_IS_P390 (machine_flags & 4)
42#define MACHINE_HAS_MVPG (machine_flags & 16) 40#define MACHINE_HAS_MVPG (machine_flags & 16)
43#define MACHINE_HAS_IDTE (machine_flags & 128) 41#define MACHINE_HAS_IDTE (machine_flags & 128)
42#define MACHINE_HAS_DIAG9C (machine_flags & 256)
44 43
45#ifndef __s390x__ 44#ifndef __s390x__
46#define MACHINE_HAS_IEEE (machine_flags & 2) 45#define MACHINE_HAS_IEEE (machine_flags & 2)
47#define MACHINE_HAS_CSP (machine_flags & 8) 46#define MACHINE_HAS_CSP (machine_flags & 8)
48#define MACHINE_HAS_DIAG44 (1) 47#define MACHINE_HAS_DIAG44 (1)
48#define MACHINE_HAS_MVCOS (0)
49#else /* __s390x__ */ 49#else /* __s390x__ */
50#define MACHINE_HAS_IEEE (1) 50#define MACHINE_HAS_IEEE (1)
51#define MACHINE_HAS_CSP (1) 51#define MACHINE_HAS_CSP (1)
52#define MACHINE_HAS_DIAG44 (machine_flags & 32) 52#define MACHINE_HAS_DIAG44 (machine_flags & 32)
53#define MACHINE_HAS_MVCOS (machine_flags & 512)
53#endif /* __s390x__ */ 54#endif /* __s390x__ */
54 55
55 56
@@ -70,52 +71,76 @@ extern unsigned int console_irq;
70#define SET_CONSOLE_3215 do { console_mode = 2; } while (0) 71#define SET_CONSOLE_3215 do { console_mode = 2; } while (0)
71#define SET_CONSOLE_3270 do { console_mode = 3; } while (0) 72#define SET_CONSOLE_3270 do { console_mode = 3; } while (0)
72 73
73struct ipl_list_header { 74
74 u32 length; 75struct ipl_list_hdr {
75 u8 reserved[3]; 76 u32 len;
77 u8 reserved1[3];
76 u8 version; 78 u8 version;
79 u32 blk0_len;
80 u8 pbt;
81 u8 flags;
82 u16 reserved2;
77} __attribute__((packed)); 83} __attribute__((packed));
78 84
79struct ipl_block_fcp { 85struct ipl_block_fcp {
80 u32 length; 86 u8 reserved1[313-1];
81 u8 pbt; 87 u8 opt;
82 u8 reserved1[322-1]; 88 u8 reserved2[3];
89 u16 reserved3;
83 u16 devno; 90 u16 devno;
84 u8 reserved2[4]; 91 u8 reserved4[4];
85 u64 wwpn; 92 u64 wwpn;
86 u64 lun; 93 u64 lun;
87 u32 bootprog; 94 u32 bootprog;
88 u8 reserved3[12]; 95 u8 reserved5[12];
89 u64 br_lba; 96 u64 br_lba;
90 u32 scp_data_len; 97 u32 scp_data_len;
91 u8 reserved4[260]; 98 u8 reserved6[260];
92 u8 scp_data[]; 99 u8 scp_data[];
93} __attribute__((packed)); 100} __attribute__((packed));
94 101
102struct ipl_block_ccw {
103 u8 load_param[8];
104 u8 reserved1[84];
105 u8 reserved2[2];
106 u16 devno;
107 u8 vm_flags;
108 u8 reserved3[3];
109 u32 vm_parm_len;
110} __attribute__((packed));
111
95struct ipl_parameter_block { 112struct ipl_parameter_block {
113 struct ipl_list_hdr hdr;
96 union { 114 union {
97 u32 length; 115 struct ipl_block_fcp fcp;
98 struct ipl_list_header header; 116 struct ipl_block_ccw ccw;
99 } hdr; 117 } ipl_info;
100 struct ipl_block_fcp fcp;
101} __attribute__((packed)); 118} __attribute__((packed));
102 119
103#define IPL_MAX_SUPPORTED_VERSION (0) 120#define IPL_PARM_BLK_FCP_LEN (sizeof(struct ipl_list_hdr) + \
121 sizeof(struct ipl_block_fcp))
104 122
105#define IPL_TYPE_FCP (0) 123#define IPL_PARM_BLK_CCW_LEN (sizeof(struct ipl_list_hdr) + \
124 sizeof(struct ipl_block_ccw))
125
126#define IPL_MAX_SUPPORTED_VERSION (0)
106 127
107/* 128/*
108 * IPL validity flags and parameters as detected in head.S 129 * IPL validity flags and parameters as detected in head.S
109 */ 130 */
110extern u32 ipl_parameter_flags; 131extern u32 ipl_flags;
111extern u16 ipl_devno; 132extern u16 ipl_devno;
112 133
113#define IPL_DEVNO_VALID (ipl_parameter_flags & 1) 134void do_reipl(void);
114#define IPL_PARMBLOCK_VALID (ipl_parameter_flags & 2) 135
136enum {
137 IPL_DEVNO_VALID = 1,
138 IPL_PARMBLOCK_VALID = 2,
139};
115 140
116#define IPL_PARMBLOCK_START ((struct ipl_parameter_block *) \ 141#define IPL_PARMBLOCK_START ((struct ipl_parameter_block *) \
117 IPL_PARMBLOCK_ORIGIN) 142 IPL_PARMBLOCK_ORIGIN)
118#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START->hdr.length) 143#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START->hdr.len)
119 144
120#else /* __ASSEMBLY__ */ 145#else /* __ASSEMBLY__ */
121 146