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