📄 amisr_root.src
字号:
;
; Copyright (c) Renesas Technology Corp. 2001-2003 All Rights Reserved.
;
; OEM Adaptation Layer
;
; ----------------------------------------------------------------------------
;
; FILE : AMISR_ROOT.SRC
; CREATED : 2001. 7. 5
; MODIFIED : 2003.08.06
; AUTHOR : Renesas Technology Corp.
; HARDWARE : RENESAS US7751-HRP1xC (BigSur with HD64404, ITS-DS2A),
; RENESAS HS7751RSTC01H (S1-E, ITS-DS5)
; TARGET OS : Microsoft(R) Windows(R) CE .NET 4.2
; NOTES :
; FUNCTION : Root interrupt handler for HD64404 interrupt request
; HISTORY :
; 2001. 7. 5
; - Initially created.
; 2001. 7.18
; - Fixed fatal bug.
; 2001. 7.31
; - Jump table entries for unused interrupt ID 30 and 31 are
; added.
; 2001. 8. 3
; - LED interrupt ID display for debugging is corrected.
; 2002. 1.10
; - Device include file is renamed to "HD64404.INC".
; 2002. 5.30
; - Changed to include platform-independent platform include
; file "PLATFORM.INC". ISR entries for HD64404 private
; peripherals are removed.
; 2002. 9. 9
; - Header style is changed and file information is added.
; - HD64404_AC97ISR is renamed to HD64404_ACIFISR.
; 2002. 9.26
; - Released
.include "kxshx.h"
.include "sh4.inc"
.include "platform.inc"
.include "hd64404.inc"
.include "oalintr.inc"
.import HD64404_VideoInISR
.import HD64404_DisplayOutISR
.import HD64404_HSPI0ISR
.import HD64404_HSPI1ISR
.aif ENABLE_HSPI2 eq h'01
.import HD64404_HSPI2ISR
.aendi
.import HD64404_SPDIFISR
.import HD64404_HCAN0ISR
.import HD64404_HCAN1ISR
.import HD64404_TimerISR
.import HD64404_InterruptInputISR
.import HD64404_ACIFISR
.import HD64404_UART0ISR
.import HD64404_UART1ISR
.import HD64404_UART2ISR
.import HD64404_UART3ISR
.import HD64404_I2C0ISR
.import HD64404_I2C1ISR
.import HD64404_SSI0ISR
.import HD64404_SSI1ISR
.import HD64404_SSI2ISR
.import HD64404_SSI3ISR
.import HD64404_MOSTISR
.import HD64404_ATAPIISR
.import HD64404_DMACISR
.import HD64404_USBFunctionISR
.import HD64404_USBHostISR
.import HD64404_GraphicsEngineISR
.import HD64404_CPUInterfaceISR
; Function : _HD64404_ISR
; Description : interrupt service routine for HD64404 CIS companion chip
; Inputs : r0 = interrupt disposition info
; Outputs : r0 = interrupt ID
; Registers : r0-r3, and r6 are available for use
; Note :
LEAF_ENTRY _HD64404_ISR
mov.l #INTPRI_WINNER, r0
mov.l @r0, r1
mov #h'1F, r2 ; mask all bits except winner number
and r2, r1
; for debug --->
.aif ISR_DEBUG_LED eq 1
mov r1, r0
mov #0, r2
DIV_LOOP:
add #-10, r0 ; First, subtract 10 from r0.
cmp/pz r0 ; The quotient and remainder are over-
bt/s DIV_LOOP ; calculated 1 times, so must be adjusted.
add #1, r2
add #h'3A, r0 ; remainder, add 0x30 ('0') + 10 (adjust)
add #h'2F, r2 ; quotient, add 0x30 ('0') - 1 (adjust)
mov.l #LED_ALPHA, r3 ; top address of alpha-neumeric LED
mov.b r2, @r3 ; displays 10's digit
add #LED_ALPHA_STRIDE, r3
mov.b r0, @r3 ; displays 1's digit
.aendi
;<---
mova HD64404_ISR_TABLE, r0 ; Lookup table is used for determine
shll2 r1 ; which routine to branch.
add r1, r0
mov.l @r0, r0
jmp @r0
nop
NOT_HD64404:
rts
mov #SYSINTR_NOP, r0 ; When not HD64404, returns with NOP code.
ENTRY_END
; Lookup table
.align 4
HD64404_ISR_TABLE
.data.l HD64404_VideoInISR ; id 0 - Video In
.data.l HD64404_DisplayOutISR ; id 1 - Display Out
.data.l HD64404_HSPI0ISR ; id 2 - Hitachi SPI 0
.data.l HD64404_HSPI1ISR ; id 3 - Hitachi SPI 1
.aif ENABLE_HSPI2 eq h'01
.data.l HD64404_HSPI2ISR ; id 4 - Hitachi SPI 2
.aelse
.data.l NOT_HD64404 ; id 4 - not used by HD64404
.aendi
.data.l HD64404_SPDIFISR ; id 5 - SPDIF
.data.l HD64404_HCAN0ISR ; id 6 - HCAN 0
.data.l HD64404_HCAN1ISR ; id 7 - HCAN 1
.data.l HD64404_TimerISR ; id 8 - Timer
.data.l HD64404_InterruptInputISR ; id 9 - Interrupt Input
.data.l HD64404_ACIFISR ; id 10 - Audio Codec I/F
.data.l HD64404_UART0ISR ; id 11 - UART 0 or IrDA
.data.l HD64404_UART1ISR ; id 12 - UART 1
.data.l HD64404_UART2ISR ; id 13 - UART 2
.data.l HD64404_UART3ISR ; id 14 - UART 3
.data.l HD64404_I2C0ISR ; id 15 - I2C 0
.data.l HD64404_I2C1ISR ; id 16 - I2C 1
.data.l HD64404_SSI0ISR ; id 17 - Hitachi SSI 0
.data.l HD64404_SSI1ISR ; id 18 - Hitachi SSI 1
.data.l HD64404_SSI2ISR ; id 19 - Hitachi SSI 2
.data.l HD64404_SSI3ISR ; id 20 - Hitachi SSI 3
.data.l HD64404_MOSTISR ; id 21 - MOST tranciever OS8104 I/F
.data.l NOT_HD64404 ; id 22 - Private (AVL)
.data.l HD64404_ATAPIISR ; id 23 - ATA/ATAPI
.data.l NOT_HD64404 ; id 24 - Private (CBD)
.data.l HD64404_DMACISR ; id 25 - HD64404 DMAC
.data.l HD64404_USBFunctionISR ; id 26 - USB function
.data.l HD64404_USBHostISR ; id 27 - USB host
.data.l HD64404_GraphicsEngineISR ; id 28 - graphics engine
.data.l HD64404_CPUInterfaceISR ; id 29 - CPU interface (PCI or MPX)
; id 30 and 31 - HD64404 does not use them but there are some case that
; these ids are detected, probably caused by electrical noise or state
; transition hazard.
.data.l NOT_HD64404 ; id 30 - not used by HD64404
.data.l NOT_HD64404 ; id 31 - not used by HD64404
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -