/* * target dependent exit processing */ void target_exit(void) { extern void software_term_hook(void); void (*volatile fp)(void) = software_term_hook; /* * use volatile to omit optimization. */ if (fp != 0) { (*fp)(); } /* * mask out all interrupts */ /* * core dependent termination processing */ core_terminate(); /* * tool chain dependent termination processing */ while (1); }
/* * ターゲット依存の終了処理 */ void target_exit(void) { extern void software_term_hook(void); void (*volatile fp)(void) = software_term_hook; /* * software_term_hookへのポインタを,一旦volatile指定のあるfpに代 * 入してから使うのは,0との比較が最適化で削除されないようにするた * めである. */ if (fp != 0) { (*fp)(); } /* * ARM依存の終了処理 */ core_terminate(); /* * すべての割込みをマスクする. */ at91sam7s_disable_int(~0U); /* * 開発環境依存の終了処理 */ at91sam7s_exit(); while(1); }
/* * ターゲット依存部 終了処理 */ void target_exit(void) { /* チップ依存部の終了処理 */ core_terminate(); while(1); }
/* * チップ依存の終了処理 */ void chip_exit(void) { /* * プロセッサ依存部の終了処理 */ core_terminate(); }