diff packages/hal/sh/sh4/current/include/variant.inc @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents 42f843b391aa
children d2c90368aeef
line wrap: on
line diff
--- a/packages/hal/sh/sh4/current/include/variant.inc
+++ b/packages/hal/sh/sh4/current/include/variant.inc
@@ -7,29 +7,38 @@
 ##      SH4 variant assembler header file
 ##
 ##=============================================================================
-#####COPYRIGHTBEGIN####
-#                                                                          
-# -------------------------------------------                              
-# The contents of this file are subject to the Red Hat eCos Public License 
-# Version 1.1 (the "License"); you may not use this file except in         
-# compliance with the License.  You may obtain a copy of the License at    
-# http://www.redhat.com/                                                   
-#                                                                          
-# Software distributed under the License is distributed on an "AS IS"      
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-# License for the specific language governing rights and limitations under 
-# the License.                                                             
-#                                                                          
-# The Original Code is eCos - Embedded Configurable Operating System,      
-# released September 30, 1998.                                             
-#                                                                          
-# The Initial Developer of the Original Code is Red Hat.                   
-# Portions created by Red Hat are                                          
-# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-# All Rights Reserved.                                                     
-# -------------------------------------------                              
-#                                                                          
-#####COPYRIGHTEND####
+#####ECOSGPLCOPYRIGHTBEGIN####
+# -------------------------------------------
+# This file is part of eCos, the Embedded Configurable Operating System.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+#
+# eCos is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 or (at your option) any later version.
+#
+# eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with eCos; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, if other files instantiate templates or use macros
+# or inline functions from this file, or you compile this file and link it
+# with other works to produce a work based on this file, this file does not
+# by itself cause the resulting work to be covered by the GNU General Public
+# License. However the source code for this file must still be made available
+# in accordance with section (3) of the GNU General Public License.
+#
+# This exception does not invalidate any other reasons why a work based on
+# this file might be covered by the GNU General Public License.
+#
+# Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+# at http://sources.redhat.com/ecos/ecos-license
+# -------------------------------------------
+#####ECOSGPLCOPYRIGHTEND####
 ##=============================================================================
 #######DESCRIPTIONBEGIN####
 ##
@@ -52,17 +61,17 @@
 #include <cyg/hal/sh_regs.h>
         
 #===========================================================================
-# SR initialization value
-# zero all bits except:
-# MD = Processor operation mode field (privileged mode)
-# I0-3 = Mask out all interrupts but NMI.
-#
-# When saving or restoring the state of an exception or interrupt, the bit
-# CYGARC_REG_SR_RB is also set, switching the register bank. When this bit
-# is set, interrupts must be disabled.
-#
-# Note: We could also use the BL bit to prevent interrupts, but that would
-#       also prevent the use of breakpoints.
+## SR initialization value
+## zero all bits except:
+## MD = Processor operation mode field (privileged mode)
+## I0-3 = Mask out all interrupts but NMI.
+##
+## When saving or restoring the state of an exception or interrupt, the bit
+## CYGARC_REG_SR_RB is also set, switching the register bank. When this bit
+## is set, interrupts must be disabled.
+##
+## Note: We could also use the BL bit to prevent interrupts, but that would
+##       also prevent the use of breakpoints.
 
 #define CYG_SR (CYGARC_REG_SR_MD|CYGARC_REG_SR_IMASK)
 #define CYG_SR_BANK1 (CYGARC_REG_SR_MD|CYGARC_REG_SR_IMASK|CYGARC_REG_SR_RB)
@@ -93,6 +102,10 @@
         mov.w   r0,@r1
         mov.l   $CYGARC_REG_IPRC,r1
         mov.w   r0,@r1
+#if (CYGARC_SH_MOD_INTC == 2)
+        mov.l   $CYGARC_REG_IPRD,r1
+        mov.w   r0,@r1
+#endif
         mov.w   $nCYG_WTCSR,r0          ! Clear watchdog
         mov.l   $nCYGARC_REG_WTCSR,r1
         mov.w   r0,@r1
@@ -134,6 +147,10 @@
         .long   CYGARC_REG_IPRB
 $CYGARC_REG_IPRC:
         .long   CYGARC_REG_IPRC
+#if (CYGARC_SH_MOD_INTC == 2)
+$CYGARC_REG_IPRD:
+        .long   CYGARC_REG_IPRD
+#endif
 $nCYGARC_REG_WTCSR:
         .long   CYGARC_REG_WTCSR
 $CYGARC_REG_ICR:
@@ -150,12 +167,16 @@ 1:
 
 ##-----------------------------------------------------------------------------
 ## Interrupt decode macros
-        .macro  hal_intc_decode tmp,inum
-        mov.l   $nCYGARC_REG_INTEVT,\tmp
+	.macro	hal_intc_decode tmp,inum
+        mov.l   1f,\tmp
         mov.l   @\tmp,\inum
         mov     #-5,\tmp                ! divide cause by 0x20
         shld    \tmp,\inum
-        add     #-14,\inum              ! adjust so NMI becomes 0
+	bra     2f
+         add     #-14,\inum             ! adjust so NMI becomes 0
+	.align  2
+1:	.long   CYGARC_REG_INTEVT
+2:
         .endm
         
 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN