⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 start.s

📁 toppers操作系统源码
💻 S
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  Copyright (C) 2001-2004 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プロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も *  崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 *  儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: start.S,v 1.2 2004/10/07 17:10:56 honda Exp $ *//* *	カ〖ネル脱のスタ〖トアップモジュ〖ル∈PowerPC脱∷ *	 *	レジスタの充り碰て *		r1  ¨スタックポインタ *		SPRG0¨充哈み】CPU毋嘲ネストカウンタ *		SPRG1¨int_table *			  充哈み脱导击ベクタテ〖ブルの黎片アドレス *		SPRG2¨exc_table *			  CPU毋嘲脱导击ベクタテ〖ブルの黎片アドレス */#define	_MACRO_ONLY#include <t_config.h>	.text	.globl start	.globl start_1start:	/*	 *  プロセッサモ〖ドとスタックポインタの介袋步	 *  リセット箕のMSRの介袋猛そのままでよければ、	 *  INIT_MSRは年盗しなくてもよい。	 */#ifdef INIT_MSR	LI32(r3, INIT_MSR)		/*  MSRの介袋步  */	mtmsr	r3#endif	/*  INIT_MSR  */		/*	 * 润タスクコンテキストのスタックをSTACKTOPに介袋步する	 * STACKTOPは、sys_config.hで年盗	 * コ〖リングˇコンベンションの簇犯で8バイトずらしておく	 */	LI32(sp, STACKTOP - STACK_MARGIN)		/*  充哈み】CPU毋嘲ネストカウンタの介袋步  */	li	r5, 1	mtspr	SPRG0, r5		/*  充哈み脱导击ベクタテ〖ブルの黎片アドレス  */	LI32(r6, int_table)	mtspr	SPRG1, r6		/*  CPU毋嘲脱导击ベクタテ〖ブルの黎片アドレス  */	LI32(r7, exc_table)	mtspr	SPRG2, r7		/*	 *  hardware_init_hook の钙叫し∈0 でない眷圭∷	 *	 *  ハ〖ドウェア巴赂に涩妥な介袋步借妄がある眷圭は·	 *  hardware_init_hook という簇眶を脱罢すればよいˉ	 *  恶挛弄にはROM步の狠、RAMを蝗脱材墙にするための	 *  バスコントロ〖ラの介袋步霹を乖う。	 *  sys_support.S 柒で hardware_init_hook を年盗してい	 *  るˉ	 */	LI32(r8, hardware_init_hook)	mtctr	r8	cmpwi	crf0, r8, 0	bnectrl	/*	 *  bssセクションのクリア	 */start_1:	LI32(r5, __bss_start)	LI32(r6, _end)	cmpw	crf0, r5, r6	beq	start_3	li	r0, 0	subi	r5, r5, 4	subi	r6, r6, 4start_2:	stwu	r0, 4(r5)	/*  r5の构糠も1炭吾で悸乖される  */	cmpw	crf0, r5, r6	blt	start_2		/*	 *  dataセクションの介袋步∈ROM步滦炳∷	 *	 *  __idata_start から __idata_end までを·__data_start 笆惯に	 *  コピ〖するˉ	 */start_3:	LI32(r7, __idata_start)	LI32(r8, __idata_end)	cmpw	crf0, r7, r8	beq	start_5	LI32(r9, __data_start)	subi	r7, r7, 4	/*  lwzu炭吾を蝗うため-4している  */	subi	r8, r8, 4	subi	r9, r9, 4start_4:	lwzu	r10, 4(r7)	/*  r7の构糠も1炭吾で悸乖される  */	stwu	r10, 4(r9)	/*  r9の构糠も1炭吾で悸乖される  */	cmpw	crf0, r7, r8	blt	start_4	/*	 *  software_init_hook を钙叫し∈0 でない眷圭∷	 *	 *  ソフトウェア茨董∈泼にライブラリ∷に巴赂して涩妥な介袋步借	 *  妄がある眷圭は·software_init_hook という簇眶を脱罢すれば	 *  よいˉ	 */start_5:	LI32(r4, software_init_hook)	mtctr	r4	cmpwi	crf0, r4, 0	bnectrl	/*	 *  カ〖ネルを弹瓢するˉ	 */start_6:	LI32(r5, kernel_start)	mtctr	r5	bctr/*  end of file  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -