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

📄 amisr_root.src

📁 Wince4.2 BSP for SH4 engineering development board
💻 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 + -