📄 sysinit.c
字号:
#include "board.h"#include "utils.h"#include "bios.h"/* * Caculate system registers */int sys_init(struct system_table_struct *system_table, unsigned long rom_base, unsigned dram_base){ struct sys_regs_struct sys_regs; unsigned long base; unsigned long r; int i; sys_regs.extdbwth = 0; for (i = 0; i < 6; i++) sys_regs.extdbwth |= (system_table->rom_table[i].width) << (i * 2); for (i = 0; i < 4; i++) sys_regs.extdbwth |= (system_table->dram_table[i].width) << (i * 2 + 12); for (i = 0; i < 4; i++) sys_regs.extdbwth |= (system_table->ext_table[i].width) << (i * 2 + 20); base = rom_base; for (i = 0; i < 6; i++) { sys_regs.romcon[i] = (system_table->rom_table[i].flag & ~0x3ffffc00) | (((base + system_table->rom_table[i].size) & 0x03ff0000) << 4) | ((base & 0x03ff0000) >> 6); base += system_table->rom_table[i].size; } base = dram_base; for (i = 0; i < 4; i++) { sys_regs.dramcon[i] = (system_table->dram_table[i].flag & ~0x3ffffc00) | (((base + system_table->dram_table[i].size) & 0x03ff0000) << 4) | ((base & 0x03ff0000) >> 6); base += system_table->dram_table[i].size; } sys_regs.refextcon = system_table->dram_table[0].refresh; outl(sys_regs.extdbwth, EXTDBWTH); outl(sys_regs.romcon[0], ROMCON0); outl(sys_regs.romcon[1], ROMCON1); outl(sys_regs.romcon[2], ROMCON2); outl(sys_regs.romcon[3], ROMCON3); outl(sys_regs.romcon[4], ROMCON4); outl(sys_regs.romcon[5], ROMCON5); outl(sys_regs.dramcon[0], DRAMCON0); outl(sys_regs.dramcon[1], DRAMCON1); outl(sys_regs.dramcon[2], DRAMCON2); outl(sys_regs.dramcon[3], DRAMCON3); outl(sys_regs.refextcon, REFEXTCON); r = (system_table->ext_table[0].flag & 0xffff) | ((system_table->ext_table[1].flag & 0xffff) << 16); outl(r, EXTACON0); r = (system_table->ext_table[2].flag & 0xffff) | ((system_table->ext_table[3].flag & 0xffff) << 16); outl(r, EXTACON1); outl(system_table->iop.iopmod, IOPMOD); outl(system_table->iop.iopcon, IOPCON); outl(system_table->iop.iopdata, IOPDATA); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -