📄 sys_support.s
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * Copyright (C) 2000-2003 by Industrial Technology Institute, * Miyagi Prefectural Government, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ */#define _MACRO_ONLY#include "jsp_kernel.h" .set noreorder .align 2/* * タ〖ゲットハ〖ドウェア巴赂する介袋步借妄 (reset.S から钙び叫される) */ .section .reset .global hardware_init_hookhardware_init_hook: /* * バスコントロ〖ルユニット(BCU)簇犯の介袋肋年 */ li t0, ROMSIZEREG lh t1, (t0) ori t1, t1, SIZE3_4 | SIZE2_4 | SIZE1_4 | SIZE0_4 sh t1, (t0) li t0, ROMSPEEDREG lh t1, (t0) ori t1, t1, ROM4_WAIT_5VTClock | ROM2_WAIT_8VTClock sh t1, (t0) li t0, BCUCNTREG3 lh t1, (t0) ori t1, t1, EXT_ROMCS_3ROM_2ROM | IO32 | LCDSEL1_BUFFER | LCDSEL0_BUFFER sh t1, (t0) /* * SDRAMコントロ〖ルユニット(SDRAMU)簇犯の介袋肋年 */ li t0, SDRAMMODEREG lh t1, (t0) ori t1, t1, SCLK | LTMODE_2 sh t1, (t0) li t0, SDRAMCNTREG lh t1, (t0) ori t1, t1, TRC_3VTClock | TDAL_2VTClock | TRCD_2VTClock sh t1, (t0) li t0, BCURFCNTREG lh t1, (t0) ori t1, t1, 0x3ec sh t1, (t0) li t0, BCURFCNTREG lh t1, (t0) ori t1, t1, 0x3ec sh t1, (t0) li t0, RAMSIZEREG lh t1, (t0) ori t1, t1, SIZE3_64 | SIZE2_64 | SIZE1_64 | SIZE0_64 sh t1, (t0) /* * バスコントロ〖ルユニット(BCU)簇犯の介袋肋年 */ li t0, IO0SPEEDREG lh t1, (t0) ori t1, t1, IO0_1_WAIT_4 sh t1, (t0) li t0, IO1SPEEDREG lh t1, (t0) ori t1, t1, IO1_3_WAIT_11 sh t1, (t0) /* * HALTimerシャットダウンのクリア * CPU弹瓢稿、4擅笆柒に乖わなければならない * PMUコントロ〖ルレジスタのHALTimerリセットビットに1を今き哈む */ li t0, PMUCNTREG lh t1, (t0) ori t1, t1, HALTIMERRST sh t1, (t0) /* * HALTimerリセットのクリア * PMU充哈み】ステ〖タスレジスタのTIMOUTRSTビットに1を今き哈む */ li t0, PMUINTREG lh t1, (t0) ori t1, t1, TIMOUTRST sh t1, (t0) /* * TLBの介袋步 */tlb_initialize: mtc0 zero, PageMask mtc0 zero, EntryLo0 mtc0 zero, EntryLo1 li t0, TMAX_TLB li t1, 0xA0000000 /* kseg1 の面のDRAMの疥を蝗脱 */loop_TLB_clear: mtc0 t0, Index mtc0 t1, EntryHi addiu t0, t0, -1 addiu t1, t1, TLB_VPN2 /* 1ペ〖ジが4kバイトで、2ペ〖ジ尸をマッピ ングするため */ tlbwi bgez t0, loop_TLB_clear nop /* * キャッシュの介袋步 */cache_initialize: mtc0 zero, TagLo mtc0 zero, TagHi li t0, 0x80001ff0 /* 512 line 尸 (1 line = 16 byte) */ li t1, 0x80000000loop_I_cache_clear: cache Index_Invalidate_I, 0x0000(t0) cache Index_Invalidate_I, 0x2000(t0) bne t0, t1, loop_I_cache_clear addiu t0, t0, -I_CACHE_LINE_SIZE li t0, 0x80001ff0 /* 512 line 尸 (1 line = 16 byte) */ li t1, 0x80000000loop_D_cache_clear: cache Index_Store_Tag_D, 0x0000(t0) cache Index_Store_Tag_D, 0x2000(t0) bne t0, t1, loop_D_cache_clear addiu t0, t0, -D_CACHE_LINE_SIZE /* * 钙び叫し傅へリタ〖ン */return_to_common: j ra nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -