int main(void) { INTR_DISABLE; /* 割込み無効にする */ #ifdef SIMULATOR extern int bss_start, ebss; memset(&bss_start, 0, (long)&ebss - (long)&bss_start); /* ソフトウエア・割り込みベクタを初期化する */ softvec_init(); /* シリアルの初期化 */ serial_init(SERIAL_DEFAULT_DEVICE); #if 0 /* DRAMの初期化 */ dram_init(); #endif #endif puts("kozos boot succeed!\n"); /* OSの動作開始 */ kz_start(start_threads, "idle", 0, 0x100, 0, NULL); /* ここには戻ってこない */ return 0; }
static int init(void) { extern int erodata, data_start, edata, bss_start, ebss; memcpy(&data_start, &erodata, (long)&edata - (long)&data_start); memset(&bss_start, 0, (long)&ebss - (long)&bss_start); softvec_init(); serial_init(SERIAL_DEFAULT_DEVICE); return 0; }
static int init(void) { // 以下はリンカ・スクリプトで定義してあるシンボル。 extern int erodata, data_start, edata, bss_start, ebss; // データ領域とBSS領域を初期化する。 memcpy(&data_start, &erodata, (long)&edata - (long)&data_start); memset(&bss_start, 0, (long)&ebss - (long)&bss_start); // ソフトウェア・割込みベクタを初期化する softvec_init(); // シリアルの初期化。 serial_init(SERIAL_DEFAULT_DEVICE); return 0; }
void init() { extern int bss_start, bss_end, data_start, data_end, rodata_end; memset(&bss_start, 0, (long)&bss_end - (long)&bss_start); // Bssセクション初期化 memcpy(&data_start, &rodata_end, (long)&data_end - (long)&data_start); // dataセクション初期化 memset(&buf_start, 0, (long*)0x600); // bufセクション初期化 // 割り込みDISABLE INTERUUPT_DISABLE // ソフト割り込み初期化 softvec_init(); // シリアル通信初期化 sci_init(SCI_NO_1, BitRate_type_br9600); boot_main(); }
static int init(void) { /* 以下はリンカ・スクリプトで定義してあるシンボル */ extern int erodata, data_start, edata, bss_start, ebss; /* * データ領域とBSS領域を初期化する。この処理以降でないと、 * グローバル変数が初期化されていないので注意。 */ memcpy(&data_start, &erodata, (long)&edata - (long)&data_start); memset(&bss_start, 0, (long)&ebss - (long)&bss_start); /* ソフトウェア割込みベクタを初期化する */ softvec_init(); /* シリアルの初期化 */ serial_init(SERIAL_DEFAULT_DEVICE); return 0; }
static int init(void) { /* Followings are the symbols defined in linker script. */ extern int erodata, data_start, edata, bss_start, ebss; /* * Initialize the data area and BSS area. After the procedure, * global variables are initialized. */ memcpy(&data_start, &erodata, (long)&edata - (long)&data_start); memset(&bss_start, 0, (long)&ebss - (long)&bss_start); /* initialize the software interruption vector */ softvec_init(); /* Initialize the serial device. */ serial_init(SERIAL_DEFAULT_DEVICE); return 0; }