/* * __start_ccommand - Optional special startup routine for Metrowerks C++ (PowerPC) * * This routine should be specified as the PEF main routine in the container * for any monolithic application that requires arguments via argc/argv. * The program startup/termination sequence is: * * 1. Register the exception-handling info for the application * 2. Call all static initializers * 3. Call ccommand to set up default values for 'argc' and 'argv' and call main() * 4. Call exit() to perform required cleanup and termination, including * destroying all static objects, closing open files, closing console window, etc. * * We defer all details of proper program termination to the ANSI exit() routine. * */ pascal void __start_ccommand(void) { int argc; char **argv; // set the stack frame back-link to 0 to improve debugger stack display clear_stackframe_backlink(); // register this code fragment with the Exception Handling mechanism fragmentID = __register_fragment(__code_start__, __code_end__, __data_start__, __data_end__, __exception_table_start__, __exception_table_end__, __RTOC()); __init_critical_regions(); // call all static initializers __sinit(); argc = ccommand(&argv); // call main(argc, argv) main(argc, argv); // call exit() to terminate the program properly--will not return exit(0); // unregister this code fragment with the Exception Handling mechanism // __unregister_fragment(fragmentID); }
static void __ewl_setup_criticals(void) { __init_critical_regions(); }