📄 sh3.txt
字号:
≮エラ〖コ〖ド≯ E_CTX コンテキストエラ〖≮怠墙≯附哼の IPM(Interrupt Priority Mask)の猛を粕み叫し·ipm に手すˉこのサ〖ビスコ〖ルは·タスクコンテキストで CPUロック豺近觉轮の箕のみ钙び叫すことができるˉ润タスクコンテキストや CPUロック觉轮で钙び叫した眷圭には·E_CTXエラ〖となるˉ2.3 CPU毋嘲瓷妄怠墙とCPU毋嘲ハンドラDEF_EXC で回年する充哈みハンドラ戎规(excno)は·SH3 での 毋嘲祸据レジスタに肋年される毋嘲コ〖ド戎规を山し·そのデ〖タ房(EXCNO)は unsigned int房に年盗されているˉDEF_EXC で·毋嘲コ〖ド戎规として铜跟でない猛や·CPU毋嘲に滦炳しない戎规を回年した眷圭の瓢侯は瘦沮されないˉCPU毋嘲ハンドラに畔されるp_excinfは·CPU毋嘲券栏箕のコンテキストを瘦赂したスタックへのポインタが畔されるˉスタックの菇陇を笆布に绩すˉoffset ---------------------- | R7 | <-- p_excinf ---------------------- 1 | R6 | ---------------------- 2 | R5 | ---------------------- 3 | R4 | ---------------------- 4 | R3 | ---------------------- 5 | R2 | ---------------------- 6 | R1 | ---------------------- 7 | R0 | ---------------------- 8 | MACH | ---------------------- 9 | MACL | ---------------------- 10 | GBR | ---------------------- 11 | SR | ---------------------- 12 | PR | ---------------------- 13 | PC | ----------------------また·CPU毋嘲券栏箕のPCの猛は券栏毋嘲妥傍に炳じてCPUによりインクリメントされる眷圭や·されずにリトライする眷圭があるˉそのため·PCの猛を恃构したい眷圭は·CPU毋嘲ハンドラで·p_excinfを傅にPCの猛を恃构すればよいˉ2.4 スタ〖トアップモジュ〖ルSH3巴赂のスタ〖トアップモジュ〖ル(start.S)では·肌の介袋步借妄を乖うˉ(A) プロセッサモ〖ドの介袋步とスタックポインタの介袋步呵介に·すべてのキャッシュを痰跟步した稿·キャッシュをライトスル〖モ〖ドに肋年し·铜跟にするˉまた·プロセッサのモ〖ドを·泼涪モ〖ド·レジスタバンク1に肋年し·充り哈みマスクを MAX_IPM に肋年するˉ肌に·スタックポインタ(r15)を STACKTOP に肋年するˉここで充哈みスタックポインタに肋年されたスタック挝拌は·カ〖ネル弹瓢稿は润タスクコンテキスト脱のスタック挝拌として蝗われるˉSTACKTOP は·sys_config.h 婶で年盗することを鳞年しているˉ(B) hardware_init_hook の钙叫しhardware_init_hook が 0 でない眷圭には·hardware_init_hook を钙び叫すˉhardware_init_hook は·カ〖ネルが弹瓢される涟に乖う涩妥があるタ〖ゲット巴赂の介袋步を乖うために脱罢しているˉhardware_init_hook がどこでも年盗されていない眷圭·リンカでこのシンボルを 0 に年盗する(リンカスクリプト柒に淡揭あり)ˉ(C) bssセクションと dataセクションの介袋步bssセクションをゼロクリアするˉまた·dataセクションを介袋步するˉ(D) software_init_hook の钙叫しsoftware_init_hook が 0 でない眷圭には·software_init_hook を钙び叫すˉsoftware_init_hook は·カ〖ネルが弹瓢される涟に乖う涩妥があるソフトウェア茨董(恶挛弄には·ライブラリ)巴赂の介袋步を乖うために脱罢しているˉsoftware_init_hook がどこでも年盗されていない眷圭·リンカでこのシンボルを 0 に年盗する(リンカスクリプト柒に淡揭あり)ˉ(E) カ〖ネルの弹瓢kernel_start へ尸呆し·カ〖ネルを弹瓢するˉkernel_start からリタ〖ンしてくることは鳞年していないˉ2.5 レジスタバンク毋嘲ハンドラの掐庚を近き答塑弄にレジスタバンク0を蝗脱しているˉレジスタバンク1は r7 のみ毋嘲/充り哈みのネスト搀眶のカウント脱に蝗脱しているˉ润タスクコンテキストとタスクコンテキストの冉侍はこのレジスタにより乖っているˉなお·スタブはレジスタバンク1のR0とR1を蝗脱するため·このレジスタに今き哈んだデ〖タはスタブが钙び叫されると撬蝉されるˉ2.6 MACH·MACL·GBRgccでは·MACH·MACL·GBRはすべてスクラッチレジスタとして胺われるため·簇眶钙び叫しの涟稿では猛は瘦沮されないˉそのため·毋嘲/充哈み券栏箕には·スクラッチレジスタである绕脱レジスタR0×R7と票屯に瘦赂しているˉまた·极らディスパッチャを钙び叫しす眷圭は·簇眶钙び叫しになるため·瘦赂していないˉアセンブラのコ〖ドを蝗脱する眷圭もこのル〖ルに骄う涩妥があるˉ2.7 充哈みハンドラ悸乖箕の充哈みマスクSH3は充哈み券栏箕·充哈みマスクビット(I3×I0)はプロセッサによって极瓢弄に肋年されないため·ソフトウェアによって肋年する涩妥があるˉ充哈みハンドラ悸乖箕に肋年する充哈みマスクビットをカ〖ネルに回年するサ〖ビスコ〖ルとしてdefine_int_plevel() を脱罢しているˉこのサ〖ビスコ〖ルの蝗脱は肌の奶り define_int_plevel 充哈みハンドラ悸乖箕の充哈みマスクビットの回年≮C咐胳API≯ void define_int_plevel(UINT dintno, UW plevel)≮パラメ〖タ≯ dintno 充哈み戎规 plevel 充哈みレベル≮怠墙≯ dintno で回年した充哈み戎规の充哈みハンドラが悸乖される眷圭の充哈み マスクを plevel にするˉ3ˉシステム巴赂婶の怠墙3.1 システムクロックドライバシステムクロックドライバが isig_tim を钙び叫す件袋は·sys_defs.h 面の TIC_NUME と TIC_DENO で年盗されている(筛洁は 1ミリ擅件袋)ˉこの年盗を恃构することで·isig_tim を钙び叫す件袋を恃构することができるˉただし·タイマの篮刨が 1μ擅であるため·1μ擅帽疤で眉眶になる猛を肋年した眷圭には·isig_tim の钙叫し件袋に疙汗が栏じることになるˉ3.2 拉墙删擦脱システム箕癸徊救怠墙SH3巴赂婶では·拉墙删擦脱システム箕癸徊救怠墙(vxget_tim)をサポ〖トしているˉ拉墙删擦脱システム箕癸の篮刨は 1μ擅帽疤であるが·タイマの附哼猛を粕み叫すために办箕弄にタイマを匿贿させる涩妥があるため·vxget_tim を钙ぶ刨にシステムクロックが警しづつ觅れることになるˉなお·SYSUTIM房は UD房(64ビットの射规痰し腊眶房)に年盗しているˉ3.3 シリアルインタフェ〖スドライバCARD-E09A シリアルインタフェ〖スドライバは·CARD-E09A 惧の CompanionChip に柒垄されている16550高垂のシリアルをサポ〖トしてるˉMU200-RSH3 のシリアルインタ〖フェ〖スドライバは SCI1(IrDA) をサポ〖トしているˉMS7709ASE01 のシリアルインタフェ〖スドライバは·ス〖パ〖I/O柒垄SCI(CN3) をサポ〖トしているˉKZ_SH4 のシリアルインタフェ〖スドライバは·SH7750 柒垄の SCI をサポ〖トしているˉスタブを蝗わない眷圭に蝗脱する·DVE-SH7700 のシリアルドライバはSCIをサポ〖トしているˉ票じチップで惧淡と佰なるポ〖トを蝗脱したい眷圭は·それぞれのhw_serial.h をコピ〖すればよいˉ3.4 メモリマップˇCARD-E09A巴赂婶では·コ〖ド挝拌を 0x0c033000 × 0x0c122fff 腆1MB·デ〖タ挝拌を 0x0c123000 × の腆3MB·润タスクコンテキスト脱のスタック挝拌を ×0x0c422fff に澄瘦しているˉ0x0c000000 × 0x0c02ffff は·ROMモニタまたはスタブのワ〖クエリアとなっており·蝗脱することができないˉˇMU200-RSH3巴赂婶では·コ〖ド挝拌を 0x0c001000 × 0x0c0fffff 腆1MB·デ〖タ挝拌を 0x0c100000 × の腆3MB·润タスクコンテキスト脱のスタック挝拌を ×0x0c3fffff に澄瘦しているˉ0x0c000000 × 0x0c000fff は·ROMモニタまたはスタブのワ〖クエリアとなっており·蝗脱することができないˉˇDVE-SH7700巴赂婶では·コ〖ド挝拌を 0x0c001000 × 0x0c08ffff 腆0.5MB·デ〖タ挝拌を 0x0c080000 × の腆0.5MB·润タスクコンテキスト脱のスタック挝拌を ×0x0c0fffff に澄瘦しているˉ0x0c000000 × 0x0c000fff は·ROMモニタまたはスタブのワ〖クエリアとなっており·蝗脱することができないˉˇMS7709ASE01巴赂婶では·コ〖ド挝拌を 0x0c003000 × 0x0c0fffff 腆1MB·デ〖タ挝拌を 0x0c100000 × の腆3MB·润タスクコンテキスト脱のスタック挝拌を ×0x0c3fffff に澄瘦しているˉ0x0c000000 × 0x0c000fff は·ROMモニタまたはスタブのワ〖クエリアとなっており·蝗脱することができないˉˇKZ_SH4巴赂婶では·コ〖ド挝拌を 0xa8000000 × 0xa80fffff 腆1MB·デ〖タ挝拌を 0xa8100000 × の腆3MB·润タスクコンテキスト脱のスタック挝拌を ×0xa53fffff に澄瘦しているˉ4ˉ倡券茨董の菇蜜倡券茨董の菇蜜数恕については·GNU倡券茨董菇蜜マニュアルを徊救のことˉ4.1 倡券茨董のバ〖ジョン瓢侯澄千したツ〖ルのバ〖ジョンは笆布の奶りであるˉ BINUTILS : 2.10.1 GCC-CORE : 2.95.3 GDB : 4.18 NEWLIB : 1.9.05ˉその戮5.1 ディレクトリˇファイル菇喇SH3 タ〖ゲット巴赂婶の称ファイルの车妥は肌の奶りˉ config/sh3/ Makefile.config Makefileの SH3 巴赂年盗 cpu_defs.h プロセッサ巴赂婶のアプリケ〖ション脱年盗 cpu_config.h プロセッサ巴赂婶の菇喇年盗 cpu_config.c プロセッサ巴赂婶の簇眶 cpu_support.S プロセッサ巴赂婶のサブル〖チン cpu_context.h コンテキスト拎侯 makeoffset.c offset.h 栏喇サポ〖トプログラム cpu_insn.h 你レベルのプロセッサ拎侯ル〖チン start.S スタ〖トアップモジュ〖ル shelf.ld ビッグエンディアン脱リンカスクリプト shlelf.ld リトルエンディアン脱リンカスクリプト hw_timer.h タイマ拎侯ル〖チン sh3.h SH3 の年盗 sh4.h SH4 の年盗 config/sh3/card_e09a/ Makefile.config Makefileの CARD-E09A 巴赂年盗 card_e09a.h CARD-E09A ハ〖ドウェア年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン pce_header.S バイナリの黎片に弥くヘッダ〖ファイル sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン config/sh3/rsh3/ Makefile.config Makefileの RSH3 巴赂年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン rsh3.h RSH3 ハ〖ドウェア年盗 sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン config/sh3/dvesh7700 Makefile.config Makefileの DVESH7700 巴赂年盗 dvesh7700.h DVESH7700 ハ〖ドウェア年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン config/sh3/ms7709ase01 Makefile.config Makefileの MS7709ASE01 巴赂年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン ms7709ase01.h MS7709ASE01 ハ〖ドウェア年盗 sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン config/sh3/kz_sh4 Makefile.config Makefileの KZ_SH4 巴赂年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン kz_sh4.h KZ_SH4 ハ〖ドウェア年盗 sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -