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

📄 exceptions.asm

📁 os源代码 os源代码 os源代码 os源代码 os源代码 os源代码
💻 ASM
字号:
##############################################################################
#
#	FILE
#		__exception.s
#
#	DESCRIPTION
#		Exception/interrupt handler table.
#
#	COPYRIGHT
#		(c) 1996-8 Metrowerks Corporation
#		All rights reserved.
#
#	HISTORY
#		97 MAR 20 LLY	Created.
#		98 JUL 23 SCM	Renamed and re-organized.
#
##############################################################################
#
#	This must be the first file in the link order in order to set .org
#	correctly for the exception vector (0x00000100 from start of ROM)
#
##############################################################################

		.global gInterruptVectorTable
		.global gInterruptVectorTableEnd

		.global __reset

		.extern InterruptHandler	# void InterruptHandler(unsigned long exceptNumber)
		.extern __start

		.section	.init,4,1,6		# put this code in .init section

		.org	0x0

gInterruptVectorTable:

##############################################################################
#
#	0x0100 System Reset
#
#	This is the first instruction to be executed after the hardware power-on
#	reset.
#
##############################################################################

		.org	0x100
__reset:
//		b	__start			// use this when when debugging under the bdm
		b	(__start+0x400000)	// use this for power-on version (program this into flash)


##############################################################################
#
#	0x0200 Machine Check
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org 	0x200
		mtspr	sprg1,r2
		mtspr	sprg2,r3

		### FLUSH AND INVALIDATE THE CACHES ###
		; These instructions are only valid on some PPC
		; processors.
;		mfspr	r2,srr0			# get the faulting instruction address
;		icbi	0,r2			# invalidate the cache block
;		mfspr	r2,19			# get the faulting data from DAR -> r2
;		dcbi	0,r2			# invalidate the data cache block

		addi	r3,r0,0x0200
		ba		InterruptHandler

##############################################################################
#
#	0x0300 Data Storage
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x300
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0300
		ba		InterruptHandler

##############################################################################
#
#	0x0400 Instruction Storage
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x400
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0400
		ba		InterruptHandler

##############################################################################
#
#	0x0500 External Interrupt
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x500
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0500
		ba		InterruptHandler

##############################################################################
#
#	0x0600 Alignment
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x600
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0600
		ba		InterruptHandler

##############################################################################
#
#	0x0700 Program
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x700
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0700
		ba		InterruptHandler

##############################################################################
#
#	0x0800 Floating Point Unavailable
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x800
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0800
		ba		InterruptHandler

##############################################################################
#
#	0x0900 Decrementer Interrupt
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x900
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0900
		ba		InterruptHandler

##############################################################################
#
#	0x0C00 System Call
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0xC00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0C00
		ba		InterruptHandler

##############################################################################
#
#	0x0D00 Trace
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0xD00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0D00
		ba		InterruptHandler

##############################################################################
#
#	0x0E00 FP Assist
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0xE00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0E00
		ba		InterruptHandler

##############################################################################
#
#	0x0F00 PPC740 and PPC750: Performance Monitor
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0xF00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x0F00
		ba		InterruptHandler

##############################################################################
#
#	0x1000 	MPC8xx and MPC505:	Software Emulation
#			PPC603e:			Instruction TLB Miss
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1000
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1000
		ba		InterruptHandler

##############################################################################
#
#	0x1100 	MPC8xx:				Instruction TLB Miss
#			PPC603e:			Data Load TLB Miss
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1100
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1100
		ba		InterruptHandler

##############################################################################
#
#	0x1200	MPC8xx:				Data TLB Miss
#			PPC603e:			Data Store TLB Miss
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1200
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1200
		ba		InterruptHandler

##############################################################################
#
#	0x1300	MPC8xx:				Instruction TLB Error
#			PPC7xx and PPC603e:	Instruction address breakpoint
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1300
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1300
		ba		InterruptHandler

##############################################################################
#
#	0x1400	MPC8xx:				Data TLB Error
#			PPC7xx and PPC603e:	System management
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1400
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1400
		ba		InterruptHandler

##############################################################################
#
#	0x1C00 MPC8xx and MPC505:	Data breakpoint
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1C00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1C00
		ba		InterruptHandler

##############################################################################
#
#	0x1D00 MPC8xx and MPC505:	Instruction breakpoint
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1D00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1D00
		ba		InterruptHandler

##############################################################################
#
#	0x1E00 MPC8xx and MPC505:	Peripheral breakpoint
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1E00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1E00
		ba		InterruptHandler

##############################################################################
#
#	0x1F00 MPC8xx and MPC505:	Non-maskable development port
#
#	Override the behavior by over-writing the handler code in RAM.
#
##############################################################################
		.org	0x1F00
		mtspr	sprg1,r2
		mtspr	sprg2,r3
		addi	r3,r0,0x1F00
		ba		InterruptHandler

gInterruptVectorTableEnd:

⌨️ 快捷键说明

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