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

📄 start.s

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 S
📖 第 1 页 / 共 2 页
字号:
/* *  This file contains the entry point for the application. *  The name of this entry point is compiler dependent. *  It jumps to the BSP which is responsible for performing *  all initialization. * *  COPYRIGHT (c) 1989-1999. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may in *  the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * * Based on the `gen68360' board support package, and covered by the * original distribution terms. * * Geoffroy Montel * France Telecom - CNET/DSM/TAM/CAT * 4, rue du Clos Courtel * 35512 CESSON-SEVIGNE * FRANCE *  * e-mail: g_montel@yahoo.com * *  $Id: start.S,v 1.6.8.1 2003/09/04 18:44:25 joel Exp $ */#include "asm.h"#include <m68349.inc>#define	_OLD_ASTECC 1 /* old addresses for AST68340 only, undefine for AST68349 */BEGIN_CODE	/*	 * Step 1: Decide on Reset Stack Pointer and Initial Program Counter	 */Entry:	.long	SYM(m340)+1024		|   0: Initial SSP	.long	start			|   1: Initial PC	.long	SYM(_uhoh)		|   2: Bus error	.long	SYM(_uhoh)		|   3: Address error	.long	SYM(_uhoh)		|   4: Illegal instruction	.long	SYM(_uhoh)		|   5: Zero division	.long	SYM(_uhoh)		|   6: CHK, CHK2 instruction	.long	SYM(_uhoh)		|   7: TRAPcc, TRAPV instructions	.long	SYM(_uhoh)		|   8: Privilege violation	.long	SYM(_uhoh)		|   9: Trace	.long	SYM(_uhoh)		|  10: Line 1010 emulator	.long	SYM(_uhoh)		|  11: Line 1111 emulator	.long	SYM(_uhoh)		|  12: Hardware breakpoint	.long	SYM(_uhoh)		|  13: Reserved for coprocessor violation	.long	SYM(_uhoh)		|  14: Format error	.long	SYM(_uhoh)		|  15: Uninitialized interrupt	.long	SYM(_uhoh)		|  16: Unassigned, reserved	.long	SYM(_uhoh)		|  17:	.long	SYM(_uhoh)		|  18:	.long	SYM(_uhoh)		|  19:	.long	SYM(_uhoh)		|  20:	.long	SYM(_uhoh)		|  21:	.long	SYM(_uhoh)		|  22:	.long	SYM(_uhoh)		|  23:	.long	SYM(_spuriousInterrupt)	|  24: Spurious interrupt	.long	SYM(_uhoh)		|  25: Level 1 interrupt autovector	.long	SYM(_uhoh)		|  26: Level 2 interrupt autovector	.long	SYM(_uhoh)		|  27: Level 3 interrupt autovector	.long	SYM(_uhoh)		|  28: Level 4 interrupt autovector	.long	SYM(_uhoh)		|  29: Level 5 interrupt autovector	.long	SYM(_uhoh)		|  30: Level 6 interrupt autovector	.long	SYM(_uhoh)		|  31: Level 7 interrupt autovector	.long	SYM(_uhoh)		|  32: Trap instruction (0-15)	.long	SYM(_uhoh)		|  33:	.long	SYM(_uhoh)		|  34:	.long	SYM(_uhoh)		|  35:	.long	SYM(_uhoh)		|  36:	.long	SYM(_uhoh)		|  37:	.long	SYM(_uhoh)		|  38:	.long	SYM(_uhoh)		|  39:	.long	SYM(_uhoh)		|  40:	.long	SYM(_uhoh)		|  41:	.long	SYM(_uhoh)		|  42:	.long	SYM(_uhoh)		|  43:	.long	SYM(_uhoh)		|  44:	.long	SYM(_uhoh)		|  45:	.long	SYM(_uhoh)		|  46:	.long	SYM(_uhoh)		|  47:	.long	SYM(_uhoh)		|  48: Reserved for coprocessor	.long	SYM(_uhoh)		|  49:	.long	SYM(_uhoh)		|  50:	.long	SYM(_uhoh)		|  51:	.long	SYM(_uhoh)		|  52:	.long	SYM(_uhoh)		|  53:	.long	SYM(_uhoh)		|  54:	.long	SYM(_uhoh)		|  55:	.long	SYM(_uhoh)		|  56:	.long	SYM(_uhoh)		|  57:	.long	SYM(_uhoh)		|  58:	.long	SYM(_uhoh)		|  59: Unassigned, reserved	.long	SYM(_uhoh)		|  60:	.long	SYM(_uhoh)		|  61:	.long	SYM(_uhoh)		|  62:	.long	SYM(_uhoh)		|  63:	.long	SYM(_uhoh)		|  64: User defined vectors (192)	.long	SYM(_uhoh)		|  65:	.long	SYM(_uhoh)		|  66:	.long	SYM(_uhoh)		|  67:	.long	SYM(_uhoh)		|  68:	.long	SYM(_uhoh)		|  69:	.long	SYM(_uhoh)		|  70:	.long	SYM(_uhoh)		|  71:	.long	SYM(_uhoh)		|  72:	.long	SYM(_uhoh)		|  73:	.long	SYM(_uhoh)		|  74:	.long	SYM(_uhoh)		|  75:	.long	SYM(_uhoh)		|  76:	.long	SYM(_uhoh)		|  77:	.long	SYM(_uhoh)		|  78:	.long	SYM(_uhoh)		|  79:	.long	SYM(_uhoh)		|  80:	.long	SYM(_uhoh)		|  81:	.long	SYM(_uhoh)		|  82:	.long	SYM(_uhoh)		|  83:	.long	SYM(_uhoh)		|  84:	.long	SYM(_uhoh)		|  85:	.long	SYM(_uhoh)		|  86:	.long	SYM(_uhoh)		|  87:	.long	SYM(_uhoh)		|  88:	.long	SYM(_uhoh)		|  89:	.long	SYM(_uhoh)		|  90:	.long	SYM(_uhoh)		|  91:	.long	SYM(_uhoh)		|  92:	.long	SYM(_uhoh)		|  93:	.long	SYM(_uhoh)		|  94:	.long	SYM(_uhoh)		|  95:	.long	SYM(_uhoh)		|  96:	.long	SYM(_uhoh)		|  97:	.long	SYM(_uhoh)		|  98:	.long	SYM(_uhoh)		|  99:	.long	SYM(_uhoh)		| 100:	.long	SYM(_uhoh)		| 101:	.long	SYM(_uhoh)		| 102:	.long	SYM(_uhoh)		| 103:	.long	SYM(_uhoh)		| 104:	.long	SYM(_uhoh)		| 105:	.long	SYM(_uhoh)		| 106:	.long	SYM(_uhoh)		| 107:	.long	SYM(_uhoh)		| 108:	.long	SYM(_uhoh)		| 109:	.long	SYM(_uhoh)		| 110:	.long	SYM(_uhoh)		| 111:	.long	SYM(_uhoh)		| 112:	.long	SYM(_uhoh)		| 113:	.long	SYM(_uhoh)		| 114:	.long	SYM(_uhoh)		| 115:	.long	SYM(_uhoh)		| 116:	.long	SYM(_uhoh)		| 117:	.long	SYM(_uhoh)		| 118:	.long	SYM(_uhoh)		| 119:	.long	SYM(_uhoh)		| 120:	.long	SYM(_uhoh)		| 121:	.long	SYM(_uhoh)		| 122:	.long	SYM(_uhoh)		| 123:	.long	SYM(_uhoh)		| 124:	.long	SYM(_uhoh)		| 125:	.long	SYM(_uhoh)		| 126:	.long	SYM(_uhoh)		| 127:	.long	SYM(_uhoh)		| 128:	.long	SYM(_uhoh)		| 129:	.long	SYM(_uhoh)		| 130:	.long	SYM(_uhoh)		| 131:	.long	SYM(_uhoh)		| 132:	.long	SYM(_uhoh)		| 133:	.long	SYM(_uhoh)		| 134:	.long	SYM(_uhoh)		| 135:	.long	SYM(_uhoh)		| 136:	.long	SYM(_uhoh)		| 137:	.long	SYM(_uhoh)		| 138:	.long	SYM(_uhoh)		| 139:	.long	SYM(_uhoh)		| 140:	.long	SYM(_uhoh)		| 141:	.long	SYM(_uhoh)		| 142:	.long	SYM(_uhoh)		| 143:	.long	SYM(_uhoh)		| 144:	.long	SYM(_uhoh)		| 145:	.long	SYM(_uhoh)		| 146:	.long	SYM(_uhoh)		| 147:	.long	SYM(_uhoh)		| 148:	.long	SYM(_uhoh)		| 149:	.long	SYM(_uhoh)		| 150:	.long	SYM(_uhoh)		| 151:	.long	SYM(_uhoh)		| 152:	.long	SYM(_uhoh)		| 153:	.long	SYM(_uhoh)		| 154:	.long	SYM(_uhoh)		| 155:	.long	SYM(_uhoh)		| 156:	.long	SYM(_uhoh)		| 157:	.long	SYM(_uhoh)		| 158:	.long	SYM(_uhoh)		| 159:	.long	SYM(_uhoh)		| 160:	.long	SYM(_uhoh)		| 161:	.long	SYM(_uhoh)		| 162:	.long	SYM(_uhoh)		| 163:	.long	SYM(_uhoh)		| 164:	.long	SYM(_uhoh)		| 165:	.long	SYM(_uhoh)		| 166:	.long	SYM(_uhoh)		| 167:	.long	SYM(_uhoh)		| 168:	.long	SYM(_uhoh)		| 169:	.long	SYM(_uhoh)		| 170:	.long	SYM(_uhoh)		| 171:	.long	SYM(_uhoh)		| 172:	.long	SYM(_uhoh)		| 173:	.long	SYM(_uhoh)		| 174:	.long	SYM(_uhoh)		| 175:	.long	SYM(_uhoh)		| 176:	.long	SYM(_uhoh)		| 177:	.long	SYM(_uhoh)		| 178:	.long	SYM(_uhoh)		| 179:	.long	SYM(_uhoh)		| 180:	.long	SYM(_uhoh)		| 181:	.long	SYM(_uhoh)		| 182:	.long	SYM(_uhoh)		| 183:	.long	SYM(_uhoh)		| 184:	.long	SYM(_uhoh)		| 185:	.long	SYM(_uhoh)		| 186:	.long	SYM(_uhoh)		| 187:	.long	SYM(_uhoh)		| 188:	.long	SYM(_uhoh)		| 189:	.long	SYM(_uhoh)		| 190:	.long	SYM(_uhoh)		| 191:	.long	SYM(_uhoh)		| 192:	.long	SYM(_uhoh)		| 193:	.long	SYM(_uhoh)		| 194:	.long	SYM(_uhoh)		| 195:	.long	SYM(_uhoh)		| 196:	.long	SYM(_uhoh)		| 197:	.long	SYM(_uhoh)		| 198:	.long	SYM(_uhoh)		| 199:	.long	SYM(_uhoh)		| 200:	.long	SYM(_uhoh)		| 201:	.long	SYM(_uhoh)		| 202:	.long	SYM(_uhoh)		| 203:	.long	SYM(_uhoh)		| 204:	.long	SYM(_uhoh)		| 205:	.long	SYM(_uhoh)		| 206:	.long	SYM(_uhoh)		| 207:	.long	SYM(_uhoh)		| 208:	.long	SYM(_uhoh)		| 209:	.long	SYM(_uhoh)		| 210:	.long	SYM(_uhoh)		| 211:	.long	SYM(_uhoh)		| 212:	.long	SYM(_uhoh)		| 213:	.long	SYM(_uhoh)		| 214:	.long	SYM(_uhoh)		| 215:	.long	SYM(_uhoh)		| 216:	.long	SYM(_uhoh)		| 217:	.long	SYM(_uhoh)		| 218:	.long	SYM(_uhoh)		| 219:	.long	SYM(_uhoh)		| 220:	.long	SYM(_uhoh)		| 221:	.long	SYM(_uhoh)		| 222:	.long	SYM(_uhoh)		| 223:	.long	SYM(_uhoh)		| 224:	.long	SYM(_uhoh)		| 225:	.long	SYM(_uhoh)		| 226:	.long	SYM(_uhoh)		| 227:	.long	SYM(_uhoh)		| 228:	.long	SYM(_uhoh)		| 229:	.long	SYM(_uhoh)		| 230:	.long	SYM(_uhoh)		| 231:	.long	SYM(_uhoh)		| 232:	.long	SYM(_uhoh)		| 233:	.long	SYM(_uhoh)		| 234:	.long	SYM(_uhoh)		| 235:	.long	SYM(_uhoh)		| 236:	.long	SYM(_uhoh)		| 237:	.long	SYM(_uhoh)		| 238:	.long	SYM(_uhoh)		| 239:	.long	SYM(_uhoh)		| 240:	.long	SYM(_uhoh)		| 241:	.long	SYM(_uhoh)		| 242:	.long	SYM(_uhoh)		| 243:	.long	SYM(_uhoh)		| 244:	.long	SYM(_uhoh)		| 245:	.long	SYM(_uhoh)		| 246:	.long	SYM(_uhoh)		| 247:	.long	SYM(_uhoh)		| 248:	.long	SYM(_uhoh)		| 249:	.long	SYM(_uhoh)		| 250:	.long	SYM(_uhoh)		| 251:	.long	SYM(_uhoh)		| 252:	.long	SYM(_uhoh)		| 253:	.long	SYM(_uhoh)		| 254:	.long	SYM(_uhoh)		| 255:/* * Default trap handler * With an oscilloscope you can see AS* stop */	PUBLIC (_uhoh)SYM(_uhoh):	nop				| Leave spot for breakpoint/*	stop	#0x2700				| Stop with interrupts disabled */	move.w	#0x2700,sr	move.w  (a7),_boot_panic_registers+4	| SR	move.l  2(a7),_boot_panic_registers	| PC	move.w  6(a7),_boot_panic_registers+6	| format & vector	movem.l d0-d7/a0-a7, _boot_panic_registers+8	movec	sfc, d0	movem.l	d0, _boot_panic_registers+72	movec	dfc, d0	movem.l	d0, _boot_panic_registers+76	movec	vbr, d0	movem.l	d0, _boot_panic_registers+80	jmp	SYM(_dbug_dumpanic)	bra.s	_crt0_cold_start/* * Log, but otherwise ignore, spurious interrupts */	PUBLIC (_spuriousInterrupt)SYM(_spuriousInterrupt):	addql	#1,SYM(_M68kSpuriousInterruptCount)	rte/* * Place the low-order 3 octets of the board's ethernet address at * a `well-known' fixed location relative to the startup location. */	.align 2	.word	0			| Paddingethernet_address_buffer:	.word	0x08F3			| Default address	.word	0xDEAD	.word	0xCAFEBEGIN_DATA/* equates */.equ	_CPU340, 0x0.equ	_CPU349, 0x31#ifdef _OLD_ASTECC				/* old addresses for AST68340 only */.equ	_EPLD_CS_BASE, 0x1.equ	_PROM_Start, 0x01000000    		/* CS0 */.equ	_FLEX_Start, 0x08000000			/* CS2 */.equ	_I2C_Start, 0x0c000000    		/* CS3 */.equ	_BCCram_Start, 0x00000000    		/* CS1	64 Kbytes */.equ	_BCCram_Size, 0x00010000    		/* CS1	64 Kbytes */.equ	_ExtRam_Start, 0x10000000  		/* SRAM */.equ 	_ExtRam_Size, 0x00400000		/* 4 Mbytes */.equ 	_FastRam_Start, 0x00000000		/* overlap /CS1 for the first 4 Kbytes */.equ	_FastRam_Size, 0x00001000		/* 4 Kbytes */#else 	/* new addresses for AST68349 and 68340 */.equ	_EPLD_CS_BASE, 0x5.equ	_PROM_Start, 0x50000000    		/* CS0 */.equ	_FLEX_Start, 0x08000000    		/* CS2 */.equ	_I2C_Start, 0x0c000000    		/* CS3 */.equ	_BCCram_Start, 0x00000000    		/* CS1	64 Kbytes */.equ	_BCCram_Size, 0x00010000    		/* CS1	64 Kbytes */.equ	_ExtRam_Start, 0x80000000  		/* DRAM */.equ	_ExtRam_Size, 0x00400000		/* 4 Mbytes */.equ	_FastRam_Start, 0x00000000		/* overlap /CS1 for the first 4 Kbytes */.equ	_FastRam_Size, 0x00001000		/* 4 Kbytes */#endif.equ	_SPEED349, 0xD680			/* 24 Mhz */.equ	_SPEED340, 0xD700			/* 25 Mhz *//* .equ	_SPEED340, 0xCE00			 16 Mhz */#define	crt0_boot_type	d0			/* cold/warm start (must be D0) */#define	crt0_temp	d1#define	crt0_cpu_type	d2#define	crt0_csswitch	d3#define	crt0_buswidth	d4#define	crt0_pdcs	d5#define	crt0_spare6	d6#define	crt0_spare7	d7#define	crt0_sim_base	a0#define	crt0_glue	a1#define	crt0_dram	a2#define	crt0_ptr3	a3#define	crt0_ptr4	a4#define	crt0_ptr5	a5#define	crt0_ptr6	a6/* -- PDCS buffer equates -- */.equ	pdcs_mask, 0x1F				/* DRAM configuration */.equ	pdcs_sw12, 7				/* switch 12 */.equ	pdcs_sw11, 6				/* switch 11 */.equ	pdcs_sw14, 5				/* switch 14 */.equ	bit_cache, pdcs_sw12			/* enable cache if on */.equ	bit_meminit, pdcs_sw11			/* init memory if on *//* -- Initialization stack and vars -- */_AsteccBusWidth:	ds.b 1_AsteccCsSwitch:	ds.b 1_AsteccCpuName:		ds.l 1.align 4_crt0_init_stack:		ds.l	500_crt0_init_stktop:/* -- Initialization code -- */BEGIN_CODE.align 4		dc.l    _crt0_init_stktop        /* reset SP */		dc.l    _crt0_cold_start         /* reset PC */		dc.l    _crt0_warm_start		.ascii	"BOOT XHM68K/Spectra for ASTECC 68349 and 68340 boards"		dc.w	0.align 4.globl startstart:_crt0_cold_start:	moveq.l #0,crt0_boot_type			| signal cold reset	bra.s   _crt0_common_start

⌨️ 快捷键说明

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