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

📄 start.s

📁 toppers操作系统源码
💻 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 *  *  惧淡螟侯涪荚は·笆布の (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.9 2004/02/05 09:16:25 honda Exp $ */#define _MACRO_ONLY#include <microblaze_asm.inc>#include <t_config.h>#include <sys_defs.h>/* *  # 0x00 #		Imm instr for reset address     [Hi halfword] *  # 0x04 #		Jump to _start                  [Lo halfword] *  # 0x08 #		Imm instr for exception address [Hi halfword] *  # 0x0c #		Jump to Exception handler       [Lo halfword] *  # 0x10 #		Imm instr for interrupt address [Hi halfword] *  # 0x14 #		Jump to interrupt handler       [Lo halfword] */        	.text	.global _start	.align  2    .ent _start_start:    /*     *  msrを介袋步     */    la   r1, r0, MSR_CACHE_SETTING             mts  rmsr,r1                     /*     *  opb_mdm を蝗うと msr のBIPビットが'1'で悸乖されるため·     *  rtbd炭吾により'0'に介袋步するˉ     *  stub を蝗う眷圭は涩妥ないが泼に甥侯脱がないため·痰掘凤に悸乖するˉ     */    la    r1, r0, _start_    rtbd  r1,0_start_:                           /*     * R2とR3の肋年     *ˇR2  : Read-only small data area anchor     *   _SDA2_BASE_ .sdata2の面看     *ˇR13 : Read-write small data area anchor     *   .sdataとsbssを息鲁して弥き·この面粗に_SDA_BASE_ を肋年する     */	la	r13, r0, _SDA_BASE_	la	r2,  r0, _SDA2_BASE_	/*	 * スタックポインタの介袋步	 */	la	r1, r0, STACKTOP - 4   /*	* ベクタテ〖ブルの介袋步	*/	/*     *  brai 炭吾の今き哈み     */	la  r3,  r0,  0xb8080000  /* brai のオペコ〖ド      */	swi r3,  r0,  0xc         /* exceptionベクタへ判峡  */	swi r3,  r0,  0x14        /* interrruptベクタへ判峡 */	/*     * imm 炭吾の今き哈み     */	la  r4,  r0,  0xb0000000  /* imm のオペコ〖ド       */	swi r4,  r0,  0x8         /* exceptionベクタへ判峡  */    swi r4,  r0,  0x10        /* interrruptベクタへ判峡 */	/*     *  毋嘲ハンドラの判峡     */	la   r5,  r0,  exception_entry	sw	 r5,  r1,  r0	lhu  r6,  r1,  r0	shi	 r5,  r0,  0xe       /* 充哈みハンドラ布疤16bit */	shi	 r6,  r0,  0xa       /* 充哈みハンドラ惧疤16bit */	/*	 *  充哈みハンドラの判峡	 */	la   r5,  r0,  interrupt_entry	sw	 r5,  r1,  r0	lhu  r6,  r1,  r0	shi	 r5,  r0,  0x16      /* 充哈みハンドラ布疤16bit */	shi	 r6,  r0,  0x12      /* 充哈みハンドラ惧疤16bit */	/*	 *  _hardware_init_hook を钙び叫す。(0でない眷圭)	 *	 *  ハ〖ドウェア巴赂に涩妥な介袋步借妄がある眷圭は·	 *  hardware_init_hook という簇眶を脱罢すればよいˉ	 *  恶挛弄にはROM步の狠、RAMを蝗脱材墙にするための	 *  バスコントロ〖ラの介袋步霹を乖う。	 *  sys_support.S 柒で _hardware_init_hook を年盗してい	 *  るˉ	 */start_0:	la    r3,  r0,  _hardware_init_hook	beqi  r3,  start_1	brald r15, r3	nop	/*     *  bssセクションをクリア     */start_1:	la    r3,  r0,  __bss_start	la    r4,  r0,  _end	sub   r5,  r4,  r3	beqi  r5,  start_3start_2:	sb    r0,  r0,  r3	addi  r3,  r3,  1	sub   r5,  r4,  r3	bgti  r5,  start_2	/*	 *  dataセクションの介袋步∈ROM步滦炳∷	 *	 *  __idata_start から __idata_end までを·__data_start 笆惯に	 *  コピ〖するˉ     *  Microblazeは柒隆RAMが井さいことと·BRAMの柒推は     *  リコンフィギュレ〖ションすると介袋步されるため     *  dataセクションの介袋步は乖わない     *  ただし眷圭によっては悸刘することを雇えてラベルのみ年盗しておく	 */start_3:	la    r3,  r0,  __idata_start	la    r4,  r0,  __idata_end	sub   r5,  r4,  r3     /* サイズをチェック */	beqi  r5,  start_5	la    r6,  r0,  __data_startstart_4:	lbu   r7,  r0,  r3    sb    r7,  r0,  r6	addi  r3,  r3,  1	addi  r6,  r6,  1	sub   r5,  r4,  r3	bgti  r5,  start_4start_5:	la    r3,  r0,  __isdata2_start	la    r4,  r0,  __isdata2_end	sub   r5,  r4,  r3     /* サイズをチェック */	beqi  r5,  start_7	la    r6,  r0,  __sdata2_startstart_6:	lbu   r7,  r0,  r3    sb    r7,  r0,  r6	addi  r3,  r3,  1	addi  r6,  r6,  1	sub   r5,  r4,  r3	bgti  r5,  start_6start_7:	la    r3,  r0,  __isdata_start	la    r4,  r0,  __isdata_end	sub   r5,  r4,  r3     /* サイズをチェック */	beqi  r5,  start_9	la    r6,  r0,  __sdata_startstart_8:	lbu   r7,  r0,  r3    sb    r7,  r0,  r6	addi  r3,  r3,  1	addi  r6,  r6,  1	sub   r5,  r4,  r3	bgti  r5,  start_8	/*	 *  _software_init_hook を钙び叫す∈0 でない眷圭∷ˉ	 *	 *  ソフトウェア茨董∈泼にライブラリ∷に巴赂して涩妥な介袋步借	 *  妄がある眷圭は·software_init_hook という簇眶を脱罢すれば	 *  よいˉ	 */start_9:	la    r3,  r0,  _software_init_hook	beqi  r3,  start_10	brald r15, r3	nopstart_10:	brlid	r15, kernel_start    addik r1,r1,4            /* スタックを傅に提す */

⌨️ 快捷键说明

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