1 /* HDLMAIN.C (c) Copyright Jan Jaeger, 2003-2010 */ 2 /* Hercules Dynamic Loader */ 3 4 #include "hstdinc.h" 5 6 #define _HDLMAIN_C_ 7 #define _HERCULES_EXE_ 8 9 #include "hercules.h" 10 11 #include "httpmisc.h" 12 13 #define CRYPTO_EXTERN extern 14 #include "crypto.h" 15 16 17 #if !defined(_GEN_ARCH) 18 19 20 #if defined(_ARCHMODE2) 21 #define _GEN_ARCH _ARCHMODE2 22 #include "hdlmain.c" 23 #endif 24 25 #if defined(_ARCHMODE3) 26 #undef _GEN_ARCH 27 #define _GEN_ARCH _ARCHMODE3 28 #include "hdlmain.c" 29 #endif 30 31 32 #if defined(OPTION_DYNAMIC_LOAD) 33 34 /* Following block moved to 'hdl.c' */ 35 /* this is so that */ 36 /* hdlmain.c can be moved to the executable portion */ 37 /* hdl_main can find hdl_preload */ 38 /* 39 HDLPRE hdl_preload[] = { 40 { "hdteq", HDL_LOAD_NOMSG }, 41 { "dyncrypt", HDL_LOAD_NOMSG }, 42 #if 0 43 { "dyn_test1", HDL_LOAD_DEFAULT }, 44 { "dyn_test2", HDL_LOAD_NOMSG }, 45 { "dyn_test3", HDL_LOAD_NOMSG | HDL_LOAD_NOUNLOAD }, 46 #endif 47 { NULL, 0 } }; 48 */ 49 50 51 HDL_DEPENDENCY_SECTION; 52 { 53 HDL_DEPENDENCY(HERCULES); 54 HDL_DEPENDENCY(REGS); 55 HDL_DEPENDENCY(DEVBLK); 56 HDL_DEPENDENCY(SYSBLK); 57 HDL_DEPENDENCY(WEBBLK); 58 } 59 END_DEPENDENCY_SECTION 60 61 62 HDL_REGISTER_SECTION; 63 { 64 HDL_REGISTER( parse_args, parse_args ); 65 HDL_REGISTER( panel_command, panel_command_r ); 66 HDL_REGISTER( panel_display, panel_display_r ); 67 HDL_REGISTER( config_command, UNRESOLVED ); 68 HDL_REGISTER( system_command, UNRESOLVED ); 69 HDL_REGISTER( daemon_task, UNRESOLVED ); 70 HDL_REGISTER( debug_cpu_state, UNRESOLVED ); 71 HDL_REGISTER( debug_cd_cmd, UNRESOLVED ); 72 HDL_REGISTER( debug_device_state, UNRESOLVED ); 73 HDL_REGISTER( debug_program_interrupt, UNRESOLVED ); 74 HDL_REGISTER( debug_diagnose, UNRESOLVED ); 75 HDL_REGISTER( debug_iucv, UNRESOLVED ); 76 HDL_REGISTER( debug_sclp_unknown_command, UNRESOLVED ); 77 HDL_REGISTER( debug_sclp_unknown_event, UNRESOLVED ); 78 HDL_REGISTER( debug_sclp_unknown_event_mask, UNRESOLVED ); 79 HDL_REGISTER( debug_sclp_event_data, UNRESOLVED ); 80 HDL_REGISTER( debug_chsc_unknown_request, UNRESOLVED ); 81 HDL_REGISTER( debug_watchdog_signal, UNRESOLVED ); 82 #if defined(OPTION_W32_CTCI) 83 HDL_REGISTER( debug_tt32_stats, UNRESOLVED ); 84 HDL_REGISTER( debug_tt32_tracing, UNRESOLVED ); 85 #endif 86 87 HDL_REGISTER( hdl_device_type_equates, UNRESOLVED ); 88 89 #if defined(_390_FEATURE_MESSAGE_SECURITY_ASSIST) 90 HDL_REGISTER( s390_cipher_message, UNRESOLVED ); 91 HDL_REGISTER( s390_cipher_message_with_chaining, UNRESOLVED ); 92 HDL_REGISTER( s390_compute_intermediate_message_digest, UNRESOLVED ); 93 HDL_REGISTER( s390_compute_last_message_digest, UNRESOLVED ); 94 HDL_REGISTER( s390_compute_message_authentication_code, UNRESOLVED ); 95 #endif /*defined(_390_FEATURE_MESSAGE_SECURITY_ASSIST)*/ 96 #if defined(_900_FEATURE_MESSAGE_SECURITY_ASSIST) 97 HDL_REGISTER( z900_cipher_message, UNRESOLVED ); 98 HDL_REGISTER( z900_cipher_message_with_chaining, UNRESOLVED ); 99 HDL_REGISTER( z900_compute_intermediate_message_digest, UNRESOLVED ); 100 HDL_REGISTER( z900_compute_last_message_digest, UNRESOLVED ); 101 HDL_REGISTER( z900_compute_message_authentication_code, UNRESOLVED ); 102 #endif /*defined(_900_FEATURE_MESSAGE_SECURITY_ASSIST)*/ 103 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3) 104 HDL_REGISTER( s390_perform_cryptographic_key_management_operation, UNRESOLVED ); 105 #endif 106 #if defined(_900) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3) 107 HDL_REGISTER( z900_perform_cryptographic_key_management_operation, UNRESOLVED ); 108 #endif 109 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4) 110 HDL_REGISTER( s390_cipher_message_with_cipher_feedback, UNRESOLVED ); 111 HDL_REGISTER( s390_cipher_message_with_counter, UNRESOLVED ); 112 HDL_REGISTER( s390_cipher_message_with_output_feedback, UNRESOLVED ); 113 HDL_REGISTER( s390_perform_cryptographic_computation, UNRESOLVED ); 114 #endif 115 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4) 116 HDL_REGISTER( z900_cipher_message_with_cipher_feedback, UNRESOLVED ); 117 HDL_REGISTER( z900_cipher_message_with_counter, UNRESOLVED ); 118 HDL_REGISTER( z900_cipher_message_with_output_feedback, UNRESOLVED ); 119 HDL_REGISTER( z900_perform_cryptographic_computation, UNRESOLVED ); 120 #endif 121 122 } 123 END_REGISTER_SECTION 124 125 126 HDL_RESOLVER_SECTION; 127 { 128 HDL_RESOLVE( panel_command ); 129 HDL_RESOLVE( panel_display ); 130 HDL_RESOLVE( config_command ); 131 HDL_RESOLVE( system_command ); 132 HDL_RESOLVE( daemon_task ); 133 HDL_RESOLVE( debug_cpu_state ); 134 HDL_RESOLVE( debug_cd_cmd ); 135 HDL_RESOLVE( debug_device_state ); 136 HDL_RESOLVE( debug_program_interrupt ); 137 HDL_RESOLVE( debug_diagnose ); 138 HDL_RESOLVE( debug_sclp_unknown_command ); 139 HDL_RESOLVE( debug_sclp_unknown_event ); 140 HDL_RESOLVE( debug_sclp_unknown_event_mask ); 141 HDL_RESOLVE( debug_sclp_event_data ); 142 HDL_RESOLVE( debug_chsc_unknown_request ); 143 #if defined(OPTION_W32_CTCI) 144 HDL_RESOLVE( debug_tt32_stats ); 145 HDL_RESOLVE( debug_tt32_tracing ); 146 #endif 147 148 HDL_RESOLVE( hdl_device_type_equates ); 149 150 #if defined(_390_FEATURE_MESSAGE_SECURITY_ASSIST) 151 HDL_RESOLVE( s390_cipher_message ); 152 HDL_RESOLVE( s390_cipher_message_with_chaining ); 153 HDL_RESOLVE( s390_compute_intermediate_message_digest ); 154 HDL_RESOLVE( s390_compute_last_message_digest ); 155 HDL_RESOLVE( s390_compute_message_authentication_code ); 156 #endif /*defined(_390_FEATURE_MESSAGE_SECURITY_ASSIST)*/ 157 #if defined(_900_FEATURE_MESSAGE_SECURITY_ASSIST) 158 HDL_RESOLVE( z900_cipher_message ); 159 HDL_RESOLVE( z900_cipher_message_with_chaining ); 160 HDL_RESOLVE( z900_compute_intermediate_message_digest ); 161 HDL_RESOLVE( z900_compute_last_message_digest ); 162 HDL_RESOLVE( z900_compute_message_authentication_code ); 163 #endif /*defined(_900_FEATURE_MESSAGE_SECURITY_ASSIST)*/ 164 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3) 165 HDL_RESOLVE( s390_perform_cryptographic_key_management_operation ); 166 #endif 167 #if defined(_900) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3) 168 HDL_RESOLVE( z900_perform_cryptographic_key_management_operation ); 169 #endif 170 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4) 171 HDL_RESOLVE( s390_cipher_message_with_cipher_feedback ); 172 HDL_RESOLVE( s390_cipher_message_with_counter ); 173 HDL_RESOLVE( s390_cipher_message_with_output_feedback ); 174 HDL_RESOLVE( s390_perform_cryptographic_computation ); 175 #endif 176 #if defined(_390) && defined(FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_4) 177 HDL_RESOLVE( z900_cipher_message_with_cipher_feedback ); 178 HDL_RESOLVE( z900_cipher_message_with_counter ); 179 HDL_RESOLVE( z900_cipher_message_with_output_feedback ); 180 HDL_RESOLVE( z900_perform_cryptographic_computation ); 181 #endif 182 } 183 END_RESOLVER_SECTION 184 185 186 HDL_FINAL_SECTION; 187 { 188 system_cleanup(); 189 } 190 END_FINAL_SECTION 191 192 193 #endif /*defined(OPTION_DYNAMIC_LOAD)*/ 194 195 196 HDL_DEVICE_SECTION; 197 { 198 #if !defined(OPTION_DYNAMIC_LOAD) 199 /* TTY consoles */ 200 HDL_DEVICE(1052, constty_device_hndinfo ); 201 HDL_DEVICE(3215, constty_device_hndinfo ); 202 203 /* 3270 consoles */ 204 HDL_DEVICE(3270, loc3270_device_hndinfo ); 205 HDL_DEVICE(3287, loc3270_device_hndinfo ); 206 207 /* Communication line devices */ 208 HDL_DEVICE(2703, comadpt_device_hndinfo ); 209 210 /* Card readers */ 211 HDL_DEVICE(1442, cardrdr_device_hndinfo ); 212 HDL_DEVICE(2501, cardrdr_device_hndinfo ); 213 HDL_DEVICE(3505, cardrdr_device_hndinfo ); 214 215 /* Card punches */ 216 HDL_DEVICE(3525, cardpch_device_hndinfo ); 217 218 /* Printers */ 219 HDL_DEVICE(1403, printer_device_hndinfo ); 220 HDL_DEVICE(3211, printer_device_hndinfo ); 221 222 /* Tape drives */ 223 HDL_DEVICE(3410, tapedev_device_hndinfo ); 224 HDL_DEVICE(3411, tapedev_device_hndinfo ); 225 HDL_DEVICE(3420, tapedev_device_hndinfo ); 226 HDL_DEVICE(3480, tapedev_device_hndinfo ); 227 HDL_DEVICE(3490, tapedev_device_hndinfo ); 228 HDL_DEVICE(9347, tapedev_device_hndinfo ); 229 HDL_DEVICE(9348, tapedev_device_hndinfo ); 230 HDL_DEVICE(8809, tapedev_device_hndinfo ); 231 HDL_DEVICE(3422, tapedev_device_hndinfo ); 232 HDL_DEVICE(3430, tapedev_device_hndinfo ); 233 234 /* Communications devices */ 235 HDL_DEVICE(3088, ctcadpt_device_hndinfo ); 236 HDL_DEVICE(CTCI, ctci_device_hndinfo ); 237 HDL_DEVICE(CTCT, ctct_device_hndinfo ); 238 HDL_DEVICE(CTCE, ctce_device_hndinfo ); 239 HDL_DEVICE(LCS, lcs_device_hndinfo ); 240 HDL_DEVICE(VMNET,vmnet_device_hndinfo ); 241 #if defined(WIN32) 242 HDL_DEVICE(CTCI-W32, ctci_device_hndinfo); 243 #endif /*defined(WIN32)*/ 244 245 #endif /*!defined(OPTION_DYNAMIC_LOAD)*/ 246 247 /* Count Key Data Direct Access Storage Devices */ 248 HDL_DEVICE(2305, ckddasd_device_hndinfo ); 249 HDL_DEVICE(2311, ckddasd_device_hndinfo ); 250 HDL_DEVICE(2314, ckddasd_device_hndinfo ); 251 HDL_DEVICE(3330, ckddasd_device_hndinfo ); 252 HDL_DEVICE(3340, ckddasd_device_hndinfo ); 253 HDL_DEVICE(3350, ckddasd_device_hndinfo ); 254 HDL_DEVICE(3375, ckddasd_device_hndinfo ); 255 HDL_DEVICE(3380, ckddasd_device_hndinfo ); 256 HDL_DEVICE(3390, ckddasd_device_hndinfo ); 257 HDL_DEVICE(9345, ckddasd_device_hndinfo ); 258 259 /* Fixed Block Architecture Direct Access Storage Devices */ 260 HDL_DEVICE(0671, fbadasd_device_hndinfo ); 261 HDL_DEVICE(3310, fbadasd_device_hndinfo ); 262 HDL_DEVICE(3370, fbadasd_device_hndinfo ); 263 HDL_DEVICE(9313, fbadasd_device_hndinfo ); 264 HDL_DEVICE(9332, fbadasd_device_hndinfo ); 265 HDL_DEVICE(9335, fbadasd_device_hndinfo ); 266 HDL_DEVICE(9336, fbadasd_device_hndinfo ); 267 } 268 END_DEVICE_SECTION 269 270 271 #endif /*!defined(_GEN_ARCH)*/ 272