1 /* FEATCHK.H    (c) Copyright Jan Jaeger, 2000-2009                  */
2 /*              Feature definition consistency checks                */
3 
4 /*-------------------------------------------------------------------*/
5 /*  Perform various checks on feature combinations, and set          */
6 /*  additional flags to percolate certain features such as           */
7 /*  SIE down to lower architecture levels such that these            */
8 /*  can include emulation support                                    */
9 /*                                                                   */
10 /*  FEATURE_XXXX is defined per architecture mode, and               */
11 /*  _FEATURE_XXXX is defined across all architectures                */
12 /*  if FEATURE_ XXXX is defined for any architecture mode.           */
13 /*                                                                   */
14 /*-------------------------------------------------------------------*/
15 
16 #if defined(FEATCHK_CHECK_ALL)
17 
18 /* FEATURE_INTERPRETIVE_EXECUTION is related to host related issues
19    _FEATURE_SIE is related to guest (emulation) related issues.  This
20    because if FEATURE_INTERPRETIVE_EXECUTION is defined for say 390
21    mode, then _FEATURE_SIE will also need to be in 370 in order to
22    support 370 mode SIE emulation */
23 #if defined(FEATURE_INTERPRETIVE_EXECUTION)
24  #define _FEATURE_SIE
25  #if defined(FEATURE_ESAME)
26   #define _FEATURE_ZSIE
27  #endif
28  #if defined(FEATURE_PROTECTION_INTERCEPTION_CONTROL)
29   #define _FEATURE_PROTECTION_INTERCEPTION_CONTROL
30  #endif
31 #endif
32 
33 /* _FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE is used for host
34    related processing issues, FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE
35    is defined only in ESA/390 mode. MCDS is an ESA/390
36    feature that is supported under z/Architecture SIE */
37 #if defined(FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE)
38  #define _FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE
39 #endif
40 
41 #if defined(FEATURE_2K_STORAGE_KEYS)
42  #define _FEATURE_2K_STORAGE_KEYS
43 #endif
44 
45 #if defined(FEATURE_INTERVAL_TIMER)
46  #define _FEATURE_INTERVAL_TIMER
47 #endif
48 
49 #if defined(FEATURE_ECPSVM)
50  #define _FEATURE_ECPSVM
51 #endif
52 
53 #if defined(FEATURE_VECTOR_FACILITY)
54  #define _FEATURE_VECTOR_FACILITY
55 #endif
56 
57 #if defined(FEATURE_CHANNEL_SUBSYSTEM)
58  #define _FEATURE_CHANNEL_SUBSYSTEM
59 #endif
60 
61 #if defined(FEATURE_SYSTEM_CONSOLE)
62  #define _FEATURE_SYSTEM_CONSOLE
63 #endif
64 
65 #if defined(FEATURE_EXPANDED_STORAGE)
66  #define _FEATURE_EXPANDED_STORAGE
67 #endif
68 
69 #if defined(FEATURE_ECPSVM)
70  #define _FEATURE_ECPSVM
71 #endif
72 
73 #if defined(_FEATURE_SIE) && defined(FEATURE_STORAGE_KEY_ASSIST)
74  #define _FEATURE_STORAGE_KEY_ASSIST
75 #endif
76 
77 #if defined(FEATURE_CPU_RECONFIG)
78  #define _FEATURE_CPU_RECONFIG
79 #endif
80 
81 #if defined(FEATURE_PER)
82  #define _FEATURE_PER
83 #endif
84 
85 #if defined(FEATURE_PER2)
86  #define _FEATURE_PER2
87 #endif
88 
89 #if defined(FEATURE_EXPEDITED_SIE_SUBSET)
90 #define _FEATURE_EXPEDITED_SIE_SUBSET
91 #endif
92 
93 #if defined(FEATURE_REGION_RELOCATE)
94  #define _FEATURE_REGION_RELOCATE
95 #endif
96 
97 #if defined(FEATURE_IO_ASSIST)
98  #define _FEATURE_IO_ASSIST
99 #endif
100 
101 #if defined(FEATURE_WAITSTATE_ASSIST)
102  #define _FEATURE_WAITSTATE_ASSIST
103 #endif
104 
105 #if defined(FEATURE_EXTERNAL_INTERRUPT_ASSIST)
106  #define _FEATURE_EXTERNAL_INTERRUPT_ASSIST
107 #endif
108 
109 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST)
110  #define _FEATURE_MESSAGE_SECURITY_ASSIST
111 #endif
112 
113 #if defined(FEATURE_ASN_AND_LX_REUSE)
114  #define _FEATURE_ASN_AND_LX_REUSE
115 #endif
116 
117 #if defined(FEATURE_INTEGRATED_3270_CONSOLE)
118  #define _FEATURE_INTEGRATED_3270_CONSOLE
119 #endif
120 
121 #if defined(FEATURE_INTEGRATED_ASCII_CONSOLE)
122  #define _FEATURE_INTEGRATED_ASCII_CONSOLE
123 #endif
124 
125 #if defined(FEATURE_ESAME)
126  #define _FEATURE_ESAME
127 #endif
128 
129 #if defined(FEATURE_ESAME_N3_ESA390)
130  #define _FEATURE_ESAME_N3_ESA390
131 #endif
132 
133 #if defined(FEATURE_DAT_ENHANCEMENT)
134  #define _FEATURE_DAT_ENHANCEMENT
135 #endif
136 
137 #if defined(FEATURE_STORE_FACILITY_LIST_EXTENDED)
138  #define _FEATURE_STORE_FACILITY_LIST_EXTENDED
139 #endif
140 
141 #if defined(FEATURE_ENHANCED_DAT_FACILITY)
142  #define _FEATURE_ENHANCED_DAT_FACILITY
143 #endif
144 
145 #if defined(FEATURE_ENHANCED_DAT_FACILITY_2)
146  #define _FEATURE_ENHANCED_DAT_FACILITY_2
147 #endif
148 
149 #if defined(FEATURE_SENSE_RUNNING_STATUS)
150  #define _FEATURE_SENSE_RUNNING_STATUS
151 #endif
152 
153 #if defined(FEATURE_CONDITIONAL_SSKE)
154  #define _FEATURE_CONDITIONAL_SSKE
155 #endif
156 
157 #if defined(FEATURE_CONFIGURATION_TOPOLOGY_FACILITY)
158  #define _FEATURE_CONFIGURATION_TOPOLOGY_FACILITY
159 #endif
160 
161 #if defined(FEATURE_IPTE_RANGE_FACILITY)
162  #define _FEATURE_IPTE_RANGE_FACILITY
163 #endif
164 
165 #if defined(FEATURE_NONQUIESCING_KEY_SETTING_FACILITY)
166  #define _FEATURE_NONQUIESCING_KEY_SETTING_FACILITY
167 #endif
168 
169 #if defined(FEATURE_EXTENDED_TRANSLATION_FACILITY_2)
170  #define _FEATURE_EXTENDED_TRANSLATION_FACILITY_2
171 #endif
172 
173 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST)
174  #define _FEATURE_MESSAGE_SECURITY_ASSIST
175 #endif
176 
177 #if defined(FEATURE_LONG_DISPLACEMENT)
178  #define _FEATURE_LONG_DISPLACEMENT
179 #endif
180 
181 #if defined(FEATURE_HFP_MULTIPLY_ADD_SUBTRACT)
182  #define _FEATURE_HFP_MULTIPLY_ADD_SUBTRACT
183 #endif
184 
185 #if defined(FEATURE_EXTENDED_IMMEDIATE)
186  #define _FEATURE_EXTENDED_IMMEDIATE
187 #endif
188 
189 #if defined(FEATURE_EXTENDED_TRANSLATION_FACILITY_3)
190  #define _FEATURE_EXTENDED_TRANSLATION_FACILITY_3
191 #endif
192 
193 #if defined(FEATURE_HFP_UNNORMALIZED_EXTENSION)
194  #define _FEATURE_HFP_UNNORMALIZED_EXTENSION
195 #endif
196 
197 #if defined(FEATURE_ETF2_ENHANCEMENT)
198  #define _FEATURE_ETF2_ENHANCEMENT
199 #endif
200 
201 #if defined(FEATURE_STORE_CLOCK_FAST)
202  #define _FEATURE_STORE_CLOCK_FAST
203 #endif
204 
205 #if defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS)
206  #define _FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS
207 #endif
208 
209 #if defined(FEATURE_TOD_CLOCK_STEERING)
210  #define _FEATURE_TOD_CLOCK_STEERING
211 #endif
212 
213 #if defined(FEATURE_ETF3_ENHANCEMENT)
214  #define _FEATURE_ETF3_ENHANCEMENT
215 #endif
216 
217 #if defined(FEATURE_EXTRACT_CPU_TIME)
218  #define _FEATURE_EXTRACT_CPU_TIME
219 #endif
220 
221 #if defined(FEATURE_COMPARE_AND_SWAP_AND_STORE)
222  #define _FEATURE_COMPARE_AND_SWAP_AND_STORE
223 #endif
224 
225 #if defined(FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2)
226  #define _FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2
227 #endif
228 
229 #if defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY)
230  #define _FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY
231 #endif
232 
233 #if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)
234  #define _FEATURE_EXECUTE_EXTENSIONS_FACILITY
235 #endif
236 
237 #if defined(FEATURE_ENHANCED_MONITOR_FACILITY)
238  #define _FEATURE_ENHANCED_MONITOR_FACILITY
239 #endif
240 
241 #if defined(FEATURE_LOAD_PROGRAM_PARAMETER_FACILITY)
242  #define _FEATURE_LOAD_PROGRAM_PARAMETER_FACILITY
243 #endif
244 
245 #if defined(FEATURE_FPS_ENHANCEMENT)
246  #define _FEATURE_FPS_ENHANCEMENT
247 #endif
248 
249 #if defined(FEATURE_DECIMAL_FLOATING_POINT)
250  #define _FEATURE_DECIMAL_FLOATING_POINT
251 #endif
252 
253 #if defined(FEATURE_PFPO)
254  #define _FEATURE_PFPO
255 #endif
256 
257 #if defined(FEATURE_FAST_BCR_SERIALIZATION_FACILITY)
258  #define _FEATURE_FAST_BCR_SERIALIZATION_FACILITY
259 #endif
260 
261 #if defined(FEATURE_RESET_REFERENCE_BITS_MULTIPLE_FACILITY)
262  #define _FEATURE_RESET_REFERENCE_BITS_MULTIPLE_FACILITY
263 #endif
264 
265 #if defined(FEATURE_CPU_MEASUREMENT_COUNTER_FACILITY)
266  #define _FEATURE_CPU_MEASUREMENT_COUNTER_FACILITY
267 #endif
268 
269 #if defined(FEATURE_CPU_MEASUREMENT_SAMPLING_FACILITY)
270  #define _FEATURE_CPU_MEASUREMENT_SAMPLING_FACILITY
271 #endif
272 
273 #if defined(FEATURE_ACCESS_EXCEPTION_FETCH_STORE_INDICATION)
274  #define _FEATURE_ACCESS_EXCEPTION_FETCH_STORE_INDICATION
275 #endif
276 
277 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3)
278  #define _FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3
279 #endif
280 
281 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4)
282  #define _FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4
283 #endif
284 
285 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1)
286  #define _FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1
287 #endif
288 
289 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2)
290  #define _FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2
291 #endif
292 
293 #if defined(FEATURE_HERCULES_DIAGCALLS)
294  #define _FEATURE_HERCULES_DIAGCALLS
295 #endif
296 
297 #undef _VSTORE_C_STATIC
298 #if !defined(OPTION_NO_INLINE_VSTORE)
299  #define _VSTORE_C_STATIC static inline
300  #define _VSTORE_FULL_C_STATIC static
301 #else
302  #define _VSTORE_C_STATIC
303  #define _VSTORE_FULL_C_STATIC
304 #endif
305 
306 #undef _VFETCH_C_STATIC
307 #if !defined(OPTION_NO_INLINE_IFETCH)
308  #define _VFETCH_C_STATIC static inline
309 #else
310  #define _VFETCH_C_STATIC
311 #endif
312 
313 #undef _DAT_C_STATIC
314 #if !defined(OPTION_NO_INLINE_DAT)
315  #define _DAT_C_STATIC static inline
316 #else
317  #define _DAT_C_STATIC
318 #endif
319 
320 #undef _LOGICAL_C_STATIC
321 #if !defined(OPTION_NO_INLINE_LOGICAL)
322  #define _LOGICAL_C_STATIC static inline
323 #else
324  #define _LOGICAL_C_STATIC
325 #endif
326 
327 #if !defined(OPTION_370_MODE) \
328   && !defined(OPTION_390_MODE) \
329   && !defined(OPTION_900_MODE)
330  #error No Architecture mode
331 #endif
332 #if defined(OPTION_370_MODE)
333  #define _370
334  #define _ARCHMODE1 370
335  #define ARCH_370 0
336 #endif
337 
338 #if defined(OPTION_390_MODE)
339  #define _390
340  #if !defined(_ARCHMODE1)
341   #define _ARCHMODE1 390
342   #define ARCH_390 0
343  #else
344   #define _ARCHMODE2 390
345   #define ARCH_390 1
346  #endif
347 #endif
348 
349 #if defined(OPTION_900_MODE)
350  #define _900
351  #if !defined(_ARCHMODE2)
352   #define _ARCHMODE2 900
353   #define ARCH_900 1
354  #else
355   #define _ARCHMODE3 900
356   #define ARCH_900 2
357  #endif
358 #endif
359 
360 #if !defined(ARCH_370)
361  #define ARCH_370 -1
362 #endif
363 #if !defined(ARCH_390)
364  #define ARCH_390 -1
365 #endif
366 #if !defined(ARCH_900)
367  #define ARCH_900 -1
368 #endif
369 
370 #if defined(_ARCHMODE3)
371  #define GEN_MAXARCH    3+2
372 #elif defined(_ARCHMODE2)
373  #define GEN_MAXARCH    2+2
374 #else
375  #define GEN_MAXARCH    1+2
376 #endif
377 
378 #if defined(_900) && !defined(_390)
379  #error OPTION_390_MODE must be enabled for OPTION_900_MODE
380 #endif
381 
382 
383 #else /*!defined(FEATCHK_CHECK_ALL)*/
384 
385 /* When ESAME is installed then all instructions
386    marked N3 in the reference are also available
387    in ESA/390 mode */
388 #if defined(_900) && (__GEN_ARCH == 390)
389  #define FEATURE_ESAME_N3_ESA390
390 #endif
391 
392 #if !defined(FEATURE_2K_STORAGE_KEYS) \
393  && !defined(FEATURE_4K_STORAGE_KEYS)
394  #error Storage keys must be 2K or 4K
395 #endif
396 
397 #if defined(FEATURE_EXTENDED_STORAGE_KEYS)
398  #if !defined(FEATURE_S370E_EXTENDED_ADDRESSING)
399   #define FEATURE_S370E_EXTENDED_ADDRESSING
400  #endif
401 #endif
402 
403 #if defined(FEATURE_EXPANDED_STORAGE) \
404  && !defined(FEATURE_4K_STORAGE_KEYS)
405  #error Expanded storage cannot be defined with 2K storage keys
406 #endif
407 
408 #if defined(_900) && defined(FEATURE_VECTOR_FACILITY)
409  #error Vector Facility not supported on ESAME capable processors
410 #endif
411 
412 #if !defined(FEATURE_S370_CHANNEL) && !defined(FEATURE_CHANNEL_SUBSYSTEM)
413  #error Either S/370 Channel or Channel Subsystem must be defined
414 #endif
415 
416 #if defined(FEATURE_S370_CHANNEL) && defined(FEATURE_CHANNEL_SUBSYSTEM)
417  #error S/370 Channel and Channel Subsystem cannot both be defined
418 #endif
419 
420 #if defined(FEATURE_CANCEL_IO_FACILITY) \
421  && !defined(FEATURE_CHANNEL_SUBSYSTEM)
422  #error Cancel I/O facility requires Channel Subsystem
423 #endif
424 
425 #if defined(FEATURE_MOVE_PAGE_FACILITY_2) \
426  && !defined(FEATURE_4K_STORAGE_KEYS)
427  #error Move page facility cannot be defined with 2K storage keys
428 #endif
429 
430 #if defined(FEATURE_FAST_SYNC_DATA_MOVER) \
431  && !defined(FEATURE_MOVE_PAGE_FACILITY_2)
432  #error Fast sync data mover facility requires Move page facility
433 #endif
434 
435 #if defined(FEATURE_ESAME) \
436   && defined(FEATURE_INTERPRETIVE_EXECUTION) \
437   && !defined(_FEATURE_SIE)
438  #error ESA/390 SIE must be defined when defining ESAME SIE
439 #endif
440 
441 #if defined(FEATURE_ENHANCED_DAT_FACILITY_2) \
442   && !defined(FEATURE_ENHANCED_DAT_FACILITY)
443  #error Enhanced DAT facility 2 requires enhanced DAT facility
444 #endif
445 
446 #if defined(FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE) \
447  && !defined(FEATURE_INTERPRETIVE_EXECUTION)
448  #error MCDS only supported with SIE
449 #endif
450 
451 #if defined(FEATURE_PROTECTION_INTERCEPTION_CONTROL) \
452  && !defined(FEATURE_INTERPRETIVE_EXECUTION)
453  #error Protection Interception Control only supported with SIE
454 #endif
455 
456 #if defined(FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE) \
457  && !defined(FEATURE_STORAGE_KEY_ASSIST)
458  #error MCDS requires storage key assist
459 #endif
460 
461 #if defined(FEATURE_SIE) && defined(FEATURE_ESAME) \
462  && !defined(FEATURE_STORAGE_KEY_ASSIST)
463  #error ESAME SIE requires storage key assist
464 #endif
465 
466 #if defined(FEATURE_STORAGE_KEY_ASSIST) \
467  && !defined(FEATURE_INTERPRETIVE_EXECUTION)
468  #error Storage Key assist only supported with SIE
469 #endif
470 
471 #if defined(FEATURE_REGION_RELOCATE) \
472  && !defined(FEATURE_INTERPRETIVE_EXECUTION)
473  #error Region Relocate Facility only supported with SIE
474 #endif
475 
476 #if defined(FEATURE_IO_ASSIST) \
477  && !defined(_FEATURE_SIE)
478  #error I/O Assist Feature only supported with SIE
479 #endif
480 
481 #if defined(FEATURE_IO_ASSIST) \
482  && !defined(_FEATURE_REGION_RELOCATE)
483  #error Region Relocate Facility required for IO Assist
484 #endif
485 
486 #if defined(FEATURE_EXTERNAL_INTERRUPT_ASSIST) \
487  && !defined(_FEATURE_SIE)
488  #error External Interruption assist only supported with SIE
489 #endif
490 
491 #if defined(FEATURE_EXPEDITED_SIE_SUBSET) \
492  && !defined(_FEATURE_SIE)
493  #error Expedited SIE Subset only supported with SIE
494 #endif
495 
496 #if defined(FEATURE_ASN_AND_LX_REUSE)
497  #if !defined(FEATURE_DUAL_ADDRESS_SPACE)
498   #error ASN-and-LX-Reuse requires Dual Address-Space feature
499  #endif
500  #if !defined(FEATURE_ESAME)
501   #error ASN-and-LX-Reuse is only supported with ESAME
502  #endif
503 #endif
504 
505 #if defined(FEATURE_ESAME) \
506  && defined(FEATURE_VECTOR_FACILITY)
507  #error Vector Facility not supported in ESAME mode
508 #endif
509 
510 #if defined(FEATURE_BINARY_FLOATING_POINT) \
511  && !defined(FEATURE_BASIC_FP_EXTENSIONS)
512  #error Binary floating point requires basic FP extensions
513 #endif
514 
515 #if defined(FEATURE_DECIMAL_FLOATING_POINT) \
516  && !defined(FEATURE_BASIC_FP_EXTENSIONS)
517  #error Decimal floating point requires basic FP extensions
518 #endif
519 
520 #if defined(FEATURE_BASIC_FP_EXTENSIONS) \
521  && !defined(FEATURE_HEXADECIMAL_FLOATING_POINT)
522  #error Basic FP extensions requires hexadecimal floating point
523 #endif
524 
525 #if !defined(FEATURE_BASIC_FP_EXTENSIONS)
526  #if defined(FEATURE_HFP_EXTENSIONS) \
527   || defined(FEATURE_FPS_EXTENSIONS)
528   #error Floating point extensions require basic FP extensions
529  #endif
530 #endif
531 
532 #if defined(FEATURE_FPS_EXTENSIONS) \
533  && !defined(FEATURE_BINARY_FLOATING_POINT)
534  #error FP support extensions requires binary floating point
535 #endif
536 
537 #if defined(FEATURE_HFP_MULTIPLY_ADD_SUBTRACT) \
538  && !defined(FEATURE_HEXADECIMAL_FLOATING_POINT)
539  #error HFP multiply add/subtract requires hexadecimal floating point
540 #endif
541 
542 #if defined(FEATURE_HFP_UNNORMALIZED_EXTENSION) \
543  && !defined(FEATURE_HEXADECIMAL_FLOATING_POINT)
544  #error HFP unnormalized extension requires hexadecimal floating point
545 #endif
546 
547 #if defined(FEATURE_FLOATING_POINT_EXTENSION_FACILITY) \
548  && !defined(FEATURE_BINARY_FLOATING_POINT)
549  #error Floating point extension facility requires binary floating point
550 #endif
551 
552 #if defined(FEATURE_FLOATING_POINT_EXTENSION_FACILITY) \
553  && !defined(FEATURE_DECIMAL_FLOATING_POINT)
554  #error Floating point extension facility requires decimal floating point
555 #endif
556 
557 #if defined(FEATURE_PER2) && !defined(FEATURE_PER)
558  #error FEATURE_PER must be defined when using FEATURE_PER2
559 #endif
560 
561 #if defined(FEATURE_PER3) && !defined(FEATURE_PER)
562  #error FEATURE_PER must be defined when using FEATURE_PER3
563 #endif
564 
565 #if defined(FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2) && !defined(FEATURE_COMPARE_AND_SWAP_AND_STORE)
566  #error FEATURE_COMPARE_AND_SWAP_AND_STORE must be defined when using FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2
567 #endif
568 
569 #if defined(FEATURE_INTEGRATED_3270_CONSOLE) && !defined(FEATURE_SYSTEM_CONSOLE)
570  #error Integrated 3270 console requires FEATURE_SYSTEM_CONSOLE
571 #endif
572 
573 #if defined(FEATURE_INTEGRATED_ASCII_CONSOLE) && !defined(FEATURE_SYSTEM_CONSOLE)
574  #error Integrated ASCII console requires FEATURE_SYSTEM_CONSOLE
575 #endif
576 
577 #if defined(FEATURE_VM_BLOCKIO) && !defined(FEATURE_EMULATE_VM)
578  #error VM Standard Block I/O DIAGNOSE 0x250 requires FEATURE_EMULATE_VM
579 #endif
580 
581 #if defined(FEATURE_MESSAGE_SECURITY_ASSIST)
582  #if defined(_370)
583   #define _370_FEATURE_MESSAGE_SECURITY_ASSIST
584  #endif
585  #if defined(_390)
586   #define _390_FEATURE_MESSAGE_SECURITY_ASSIST
587  #endif
588  #if defined(_900)
589   #define _900_FEATURE_MESSAGE_SECURITY_ASSIST
590  #endif
591 #endif /*defined(FEATURE_MESSAGE_SECURITY_ASSIST)*/
592 
593 #if defined(FEATURE_STORE_FACILITY_LIST_EXTENDED)
594   #if !defined(FEATURE_STORE_FACILITY_LIST)
595     #error STFLE requires STFL (FEATURE_STORE_FACILITY_LIST_EXTENDED requires FEATURE_STORE_FACILITY_LIST)
596   #endif
597 #endif
598 
599 #if defined(FEATURE_ACCESS_EXCEPTION_FETCH_STORE_INDICATION)         /*810*/
600   #if !defined(FEATURE_ENHANCED_SUPPRESSION_ON_PROTECTION)
601     #error Access-Exception Fetch/Store Indication facility requires Enhanced Suppression on Protection
602   #endif
603 #endif
604 
605 #if defined(FEATURE_ENHANCED_SUPPRESSION_ON_PROTECTION)              /*208*/
606   #if !defined(FEATURE_SUPPRESSION_ON_PROTECTION)
607     #error Enhanced Suppression on Protection facility requires Suppression on Protection
608   #endif
609 #endif
610 
611 #if defined(FEATURE_CPU_MEASUREMENT_COUNTER_FACILITY)\
612     || defined(FEATURE_CPU_MEASUREMENT_SAMPLING_FACILITY)
613   #if !defined(FEATURE_LOAD_PROGRAM_PARAMETER_FACILITY)
614     #error CPU Measurement facilities requires Load Program Parameter facility
615   #endif
616 #endif
617 
618 #endif /*!defined(FEATALL_CHECKALL)*/
619 
620 /* end of FEATCHK.H */
621