diff packages/hal/mn10300/arch/current/include/hal_intr.h @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents 3111d98ba7b3
children ece80412419a
line wrap: on
line diff
--- a/packages/hal/mn10300/arch/current/include/hal_intr.h
+++ b/packages/hal/mn10300/arch/current/include/hal_intr.h
@@ -1,13 +1,12 @@
 #ifndef CYGONCE_HAL_HAL_INTR_H
 #define CYGONCE_HAL_HAL_INTR_H
-
-//=============================================================================
+//==========================================================================
+//
+//      hal_intr.h
 //
-//	hal_intr.h
+//      HAL Interrupt and clock support
 //
-//	HAL Interrupt and clock support
-//
-//=============================================================================
+//==========================================================================
 //####COPYRIGHTBEGIN####
 //
 // -------------------------------------------
@@ -25,34 +24,33 @@
 // September 30, 1998.
 // 
 // The Initial Developer of the Original Code is Cygnus.  Portions created
-// by Cygnus are Copyright (C) 1998 Cygnus Solutions.  All Rights Reserved.
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
 // -------------------------------------------
 //
 //####COPYRIGHTEND####
-//=============================================================================
+//==========================================================================
 //#####DESCRIPTIONBEGIN####
 //
-// Author(s): 	nickg
-// Contributors:	nickg
-// Date:	1998-02-17
-// Purpose:	Define Interrupt support
-// Description:	The macros defined here provide the HAL APIs for handling
-//              interrupts and the clock.
+// Author(s):    nickg
+// Contributors: nickg, jlarmour
+// Date:         1999-02-18
+// Purpose:      Define Interrupt support
+// Description:  The macros defined here provide the HAL APIs for handling
+//               interrupts and the clock.
+// Usage:
+//               #include <cyg/hal/hal_intr.h>
+//               ...
 //              
-// Usage:
-//		#include <cyg/hal/hal_intr.h>
-//		...
-//		
 //
 //####DESCRIPTIONEND####
 //
-//=============================================================================
+//==========================================================================
 
 #include <cyg/infra/cyg_type.h>
 
 #include <pkgconf/hal.h>
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 
 // The MN10300 has a somewhat complex interrupt structure. Besides the
 // reset and NMI vectors there are seven maskable interrupt vectors
@@ -76,344 +74,353 @@
 // 7*4 = 1228 bytes for the tables.
 // 
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Interrupt vectors.
 
 // The level-specific hardware vectors
-#define CYG_VECTOR_0                    0
-#define CYG_VECTOR_1                    1
-#define CYG_VECTOR_2                    2
-#define CYG_VECTOR_3                    3
-#define CYG_VECTOR_4                    4
-#define CYG_VECTOR_5                    5
-#define CYG_VECTOR_6                    6
-#define CYG_VECTOR_NMI                  7
-#define CYG_VECTOR_TRAP                 8
+// These correspond to VSRs and are the values to use for HAL_VSR_GET/SET
+#define CYGNUM_HAL_VECTOR_0                    0
+#define CYGNUM_HAL_VECTOR_1                    1
+#define CYGNUM_HAL_VECTOR_2                    2
+#define CYGNUM_HAL_VECTOR_3                    3
+#define CYGNUM_HAL_VECTOR_4                    4
+#define CYGNUM_HAL_VECTOR_5                    5
+#define CYGNUM_HAL_VECTOR_6                    6
+#define CYGNUM_HAL_VECTOR_NMI                  7
+#define CYGNUM_HAL_VECTOR_TRAP                 8
 
-#define CYG_VSR_MIN                     0
-#define CYG_VSR_MAX                     8
-#define CYG_VSR_COUNT                   9
+#define CYGNUM_HAL_VSR_MIN                     0
+#define CYGNUM_HAL_VSR_MAX                     8
+#define CYGNUM_HAL_VSR_COUNT                   9
+
+// Exception vectors. These are the values used when passed out to an
+// external exception handler using cyg_hal_deliver_exception()
 
-#define CYG_EXCEPTION_MIN               0
-#define CYG_EXCEPTION_MAX               3
-#define CYG_EXCEPTION_COUNT             4
+#define CYGNUM_HAL_EXCEPTION_NMI               0
+#define CYGNUM_HAL_EXCEPTION_DATA_ACCESS       \
+          CYGNUM_HAL_INTERRUPT_SYSTEM_ERROR
+#define CYGNUM_HAL_EXCEPTION_TRAP              3
+
+#define CYGNUM_HAL_EXCEPTION_MIN               0
+#define CYGNUM_HAL_EXCEPTION_MAX               3
+#define CYGNUM_HAL_EXCEPTION_COUNT             4
 
 
 #if defined(CYG_HAL_MN10300_MN103000)
 
 // The decoded interrupts
 
-#define CYG_VECTOR_NMIRQ                0
-#define CYG_VECTOR_WATCHDOG             1
-#define CYG_VECTOR_SYSTEM_ERROR         2
-#define CYG_VECTOR_RESERVED_3           3
+#define CYGNUM_HAL_INTERRUPT_NMIRQ                0
+#define CYGNUM_HAL_INTERRUPT_WATCHDOG             1
+#define CYGNUM_HAL_INTERRUPT_SYSTEM_ERROR         2
+#define CYGNUM_HAL_INTERRUPT_RESERVED_3           3
 
-#define CYG_VECTOR_RESERVED_4           4
-#define CYG_VECTOR_RESERVED_5           5
-#define CYG_VECTOR_RESERVED_6           6
-#define CYG_VECTOR_RESERVED_7           7
+#define CYGNUM_HAL_INTERRUPT_RESERVED_4           4
+#define CYGNUM_HAL_INTERRUPT_RESERVED_5           5
+#define CYGNUM_HAL_INTERRUPT_RESERVED_6           6
+#define CYGNUM_HAL_INTERRUPT_RESERVED_7           7
 
-#define CYG_VECTOR_TIMER_0              8
-#define CYG_VECTOR_TIMER_1              9
-#define CYG_VECTOR_TIMER_2              10
-#define CYG_VECTOR_TIMER_3              11
+#define CYGNUM_HAL_INTERRUPT_TIMER_0              8
+#define CYGNUM_HAL_INTERRUPT_TIMER_1              9
+#define CYGNUM_HAL_INTERRUPT_TIMER_2              10
+#define CYGNUM_HAL_INTERRUPT_TIMER_3              11
 
-#define CYG_VECTOR_TIMER_4              12
-#define CYG_VECTOR_TIMER_5              13
-#define CYG_VECTOR_TIMER_6              14
-#define CYG_VECTOR_TIMER_7              15
+#define CYGNUM_HAL_INTERRUPT_TIMER_4              12
+#define CYGNUM_HAL_INTERRUPT_TIMER_5              13
+#define CYGNUM_HAL_INTERRUPT_TIMER_6              14
+#define CYGNUM_HAL_INTERRUPT_TIMER_7              15
 
-#define CYG_VECTOR_TIMER_8              16
-#define CYG_VECTOR_TIMER_8_COMPARE_A    17
-#define CYG_VECTOR_TIMER_8_COMPARE_B    18
-#define CYG_VECTOR_RESERVED_19          19
+#define CYGNUM_HAL_INTERRUPT_TIMER_8              16
+#define CYGNUM_HAL_INTERRUPT_TIMER_8_COMPARE_A    17
+#define CYGNUM_HAL_INTERRUPT_TIMER_8_COMPARE_B    18
+#define CYGNUM_HAL_INTERRUPT_RESERVED_19          19
 
-#define CYG_VECTOR_TIMER_9              20
-#define CYG_VECTOR_TIMER_9_COMPARE_A    21
-#define CYG_VECTOR_TIMER_9_COMPARE_B    22
-#define CYG_VECTOR_RESERVED_23          23
+#define CYGNUM_HAL_INTERRUPT_TIMER_9              20
+#define CYGNUM_HAL_INTERRUPT_TIMER_9_COMPARE_A    21
+#define CYGNUM_HAL_INTERRUPT_TIMER_9_COMPARE_B    22
+#define CYGNUM_HAL_INTERRUPT_RESERVED_23          23
 
-#define CYG_VECTOR_TIMER_10             24
-#define CYG_VECTOR_TIMER_10_COMPARE_A   25
-#define CYG_VECTOR_TIMER_10_COMPARE_B   26
-#define CYG_VECTOR_TIMER_10_COMPARE_C   27
+#define CYGNUM_HAL_INTERRUPT_TIMER_10             24
+#define CYGNUM_HAL_INTERRUPT_TIMER_10_COMPARE_A   25
+#define CYGNUM_HAL_INTERRUPT_TIMER_10_COMPARE_B   26
+#define CYGNUM_HAL_INTERRUPT_TIMER_10_COMPARE_C   27
 
-#define CYG_VECTOR_TIMER_11             28
-#define CYG_VECTOR_TIMER_11_COMPARE_A   29
-#define CYG_VECTOR_TIMER_11_COMPARE_B   30
-#define CYG_VECTOR_TIMER_11_COMPARE_C   31
+#define CYGNUM_HAL_INTERRUPT_TIMER_11             28
+#define CYGNUM_HAL_INTERRUPT_TIMER_11_COMPARE_A   29
+#define CYGNUM_HAL_INTERRUPT_TIMER_11_COMPARE_B   30
+#define CYGNUM_HAL_INTERRUPT_TIMER_11_COMPARE_C   31
 
-#define CYG_VECTOR_TIMER_12             32
-#define CYG_VECTOR_TIMER_12_COMPARE_A   33
-#define CYG_VECTOR_TIMER_12_COMPARE_B   34
-#define CYG_VECTOR_TIMER_12_COMPARE_C   35
+#define CYGNUM_HAL_INTERRUPT_TIMER_12             32
+#define CYGNUM_HAL_INTERRUPT_TIMER_12_COMPARE_A   33
+#define CYGNUM_HAL_INTERRUPT_TIMER_12_COMPARE_B   34
+#define CYGNUM_HAL_INTERRUPT_TIMER_12_COMPARE_C   35
 
-#define CYG_VECTOR_TIMER_11_COMPARE_D   36
-#define CYG_VECTOR_TIMER_12_COMPARE_D   37
-#define CYG_VECTOR_RESERVED_38          38
-#define CYG_VECTOR_RESERVED_39          39
+#define CYGNUM_HAL_INTERRUPT_TIMER_11_COMPARE_D   36
+#define CYGNUM_HAL_INTERRUPT_TIMER_12_COMPARE_D   37
+#define CYGNUM_HAL_INTERRUPT_RESERVED_38          38
+#define CYGNUM_HAL_INTERRUPT_RESERVED_39          39
 
-#define CYG_VECTOR_DMA0                 40
-#define CYG_VECTOR_RESERVED_41          41
-#define CYG_VECTOR_RESERVED_42          42
-#define CYG_VECTOR_RESERVED_43          43
+#define CYGNUM_HAL_INTERRUPT_DMA0                 40
+#define CYGNUM_HAL_INTERRUPT_RESERVED_41          41
+#define CYGNUM_HAL_INTERRUPT_RESERVED_42          42
+#define CYGNUM_HAL_INTERRUPT_RESERVED_43          43
 
-#define CYG_VECTOR_DMA1                 44
-#define CYG_VECTOR_RESERVED_45          45
-#define CYG_VECTOR_RESERVED_46          46
-#define CYG_VECTOR_RESERVED_47          47
+#define CYGNUM_HAL_INTERRUPT_DMA1                 44
+#define CYGNUM_HAL_INTERRUPT_RESERVED_45          45
+#define CYGNUM_HAL_INTERRUPT_RESERVED_46          46
+#define CYGNUM_HAL_INTERRUPT_RESERVED_47          47
 
-#define CYG_VECTOR_DMA2                 48
-#define CYG_VECTOR_RESERVED_49          49
-#define CYG_VECTOR_RESERVED_50          50
-#define CYG_VECTOR_RESERVED_51          51
+#define CYGNUM_HAL_INTERRUPT_DMA2                 48
+#define CYGNUM_HAL_INTERRUPT_RESERVED_49          49
+#define CYGNUM_HAL_INTERRUPT_RESERVED_50          50
+#define CYGNUM_HAL_INTERRUPT_RESERVED_51          51
 
-#define CYG_VECTOR_DMA3                 52
-#define CYG_VECTOR_RESERVED_53          53
-#define CYG_VECTOR_RESERVED_54          54
-#define CYG_VECTOR_RESERVED_55          55
+#define CYGNUM_HAL_INTERRUPT_DMA3                 52
+#define CYGNUM_HAL_INTERRUPT_RESERVED_53          53
+#define CYGNUM_HAL_INTERRUPT_RESERVED_54          54
+#define CYGNUM_HAL_INTERRUPT_RESERVED_55          55
 
-#define CYG_VECTOR_SERIAL_0_RX          56
-#define CYG_VECTOR_SERIAL_0_TX          57
-#define CYG_VECTOR_RESERVED_58          58
-#define CYG_VECTOR_RESERVED_59          59
+#define CYGNUM_HAL_INTERRUPT_SERIAL_0_RX          56
+#define CYGNUM_HAL_INTERRUPT_SERIAL_0_TX          57
+#define CYGNUM_HAL_INTERRUPT_RESERVED_58          58
+#define CYGNUM_HAL_INTERRUPT_RESERVED_59          59
 
-#define CYG_VECTOR_SERIAL_1_RX          60
-#define CYG_VECTOR_SERIAL_1_TX          61
-#define CYG_VECTOR_RESERVED_62          62
-#define CYG_VECTOR_RESERVED_63          63
+#define CYGNUM_HAL_INTERRUPT_SERIAL_1_RX          60
+#define CYGNUM_HAL_INTERRUPT_SERIAL_1_TX          61
+#define CYGNUM_HAL_INTERRUPT_RESERVED_62          62
+#define CYGNUM_HAL_INTERRUPT_RESERVED_63          63
 
-#define CYG_VECTOR_EXTERNAL_0           64
-#define CYG_VECTOR_RESERVED_65          65
-#define CYG_VECTOR_RESERVED_66          66
-#define CYG_VECTOR_RESERVED_67          67
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_0           64
+#define CYGNUM_HAL_INTERRUPT_RESERVED_65          65
+#define CYGNUM_HAL_INTERRUPT_RESERVED_66          66
+#define CYGNUM_HAL_INTERRUPT_RESERVED_67          67
 
-#define CYG_VECTOR_EXTERNAL_1           68
-#define CYG_VECTOR_RESERVED_69          69
-#define CYG_VECTOR_RESERVED_70          70
-#define CYG_VECTOR_RESERVED_71          71
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_1           68
+#define CYGNUM_HAL_INTERRUPT_RESERVED_69          69
+#define CYGNUM_HAL_INTERRUPT_RESERVED_70          70
+#define CYGNUM_HAL_INTERRUPT_RESERVED_71          71
 
-#define CYG_VECTOR_EXTERNAL_2           72
-#define CYG_VECTOR_RESERVED_73          73
-#define CYG_VECTOR_RESERVED_74          74
-#define CYG_VECTOR_RESERVED_75          75
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_2           72
+#define CYGNUM_HAL_INTERRUPT_RESERVED_73          73
+#define CYGNUM_HAL_INTERRUPT_RESERVED_74          74
+#define CYGNUM_HAL_INTERRUPT_RESERVED_75          75
 
-#define CYG_VECTOR_EXTERNAL_3           76
-#define CYG_VECTOR_RESERVED_77          77
-#define CYG_VECTOR_RESERVED_78          78
-#define CYG_VECTOR_RESERVED_79          79
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_3           76
+#define CYGNUM_HAL_INTERRUPT_RESERVED_77          77
+#define CYGNUM_HAL_INTERRUPT_RESERVED_78          78
+#define CYGNUM_HAL_INTERRUPT_RESERVED_79          79
 
-#define CYG_VECTOR_EXTERNAL_4           80
-#define CYG_VECTOR_RESERVED_81          81
-#define CYG_VECTOR_RESERVED_82          82
-#define CYG_VECTOR_RESERVED_83          83
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_4           80
+#define CYGNUM_HAL_INTERRUPT_RESERVED_81          81
+#define CYGNUM_HAL_INTERRUPT_RESERVED_82          82
+#define CYGNUM_HAL_INTERRUPT_RESERVED_83          83
 
-#define CYG_VECTOR_EXTERNAL_5           84
-#define CYG_VECTOR_RESERVED_85          85
-#define CYG_VECTOR_RESERVED_86          86
-#define CYG_VECTOR_RESERVED_87          87
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_5           84
+#define CYGNUM_HAL_INTERRUPT_RESERVED_85          85
+#define CYGNUM_HAL_INTERRUPT_RESERVED_86          86
+#define CYGNUM_HAL_INTERRUPT_RESERVED_87          87
 
-#define CYG_VECTOR_EXTERNAL_6           88
-#define CYG_VECTOR_RESERVED_89          89
-#define CYG_VECTOR_RESERVED_90          90
-#define CYG_VECTOR_RESERVED_91          91
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_6           88
+#define CYGNUM_HAL_INTERRUPT_RESERVED_89          89
+#define CYGNUM_HAL_INTERRUPT_RESERVED_90          90
+#define CYGNUM_HAL_INTERRUPT_RESERVED_91          91
 
-#define CYG_VECTOR_EXTERNAL_7           92
-#define CYG_VECTOR_RESERVED_93          93
-#define CYG_VECTOR_RESERVED_94          94
-#define CYG_VECTOR_RESERVED_95          95
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_7           92
+#define CYGNUM_HAL_INTERRUPT_RESERVED_93          93
+#define CYGNUM_HAL_INTERRUPT_RESERVED_94          94
+#define CYGNUM_HAL_INTERRUPT_RESERVED_95          95
 
-#define CYG_VECTOR_AD_CONVERSION        96
-#define CYG_VECTOR_RESERVED_97          97
-#define CYG_VECTOR_RESERVED_98          98
-#define CYG_VECTOR_RESERVED_99          99
+#define CYGNUM_HAL_INTERRUPT_AD_CONVERSION        96
+#define CYGNUM_HAL_INTERRUPT_RESERVED_97          97
+#define CYGNUM_HAL_INTERRUPT_RESERVED_98          98
+#define CYGNUM_HAL_INTERRUPT_RESERVED_99          99
 
-#define CYG_ISR_MIN                     0
-#define CYG_ISR_MAX                     99
+#define CYGNUM_HAL_ISR_MIN                     0
+#define CYGNUM_HAL_ISR_MAX                     99
 
-#define CYG_ISR_COUNT                   100
+#define CYGNUM_HAL_ISR_COUNT                   100
 
 #elif defined(CYG_HAL_MN10300_MN103002) 
 
 // The decoded interrupts
 
-#define CYG_VECTOR_NMIRQ                0
-#define CYG_VECTOR_WATCHDOG             1
-#define CYG_VECTOR_SYSTEM_ERROR         2
-#define CYG_VECTOR_RESERVED_3           3
+#define CYGNUM_HAL_INTERRUPT_NMIRQ                0
+#define CYGNUM_HAL_INTERRUPT_WATCHDOG             1
+#define CYGNUM_HAL_INTERRUPT_SYSTEM_ERROR         2
+#define CYGNUM_HAL_INTERRUPT_RESERVED_3           3
 
-#define CYG_VECTOR_RESERVED_4           4
-#define CYG_VECTOR_RESERVED_5           5
-#define CYG_VECTOR_RESERVED_6           6
-#define CYG_VECTOR_RESERVED_7           7
+#define CYGNUM_HAL_INTERRUPT_RESERVED_4           4
+#define CYGNUM_HAL_INTERRUPT_RESERVED_5           5
+#define CYGNUM_HAL_INTERRUPT_RESERVED_6           6
+#define CYGNUM_HAL_INTERRUPT_RESERVED_7           7
 
-#define CYG_VECTOR_TIMER_0              8
-#define CYG_VECTOR_RESERVED_9           9
-#define CYG_VECTOR_RESERVED_10          10
-#define CYG_VECTOR_RESERVED_11          11
+#define CYGNUM_HAL_INTERRUPT_TIMER_0              8
+#define CYGNUM_HAL_INTERRUPT_RESERVED_9           9
+#define CYGNUM_HAL_INTERRUPT_RESERVED_10          10
+#define CYGNUM_HAL_INTERRUPT_RESERVED_11          11
 
-#define CYG_VECTOR_TIMER_1              12
-#define CYG_VECTOR_RESERVED_13          13
-#define CYG_VECTOR_RESERVED_14          14
-#define CYG_VECTOR_RESERVED_15          15
+#define CYGNUM_HAL_INTERRUPT_TIMER_1              12
+#define CYGNUM_HAL_INTERRUPT_RESERVED_13          13
+#define CYGNUM_HAL_INTERRUPT_RESERVED_14          14
+#define CYGNUM_HAL_INTERRUPT_RESERVED_15          15
 
-#define CYG_VECTOR_TIMER_2              16
-#define CYG_VECTOR_RESERVED_17          17
-#define CYG_VECTOR_RESERVED_18          18
-#define CYG_VECTOR_RESERVED_19          19
+#define CYGNUM_HAL_INTERRUPT_TIMER_2              16
+#define CYGNUM_HAL_INTERRUPT_RESERVED_17          17
+#define CYGNUM_HAL_INTERRUPT_RESERVED_18          18
+#define CYGNUM_HAL_INTERRUPT_RESERVED_19          19
 
-#define CYG_VECTOR_TIMER_3              20
-#define CYG_VECTOR_RESERVED_21          21
-#define CYG_VECTOR_RESERVED_22          22
-#define CYG_VECTOR_RESERVED_23          23
+#define CYGNUM_HAL_INTERRUPT_TIMER_3              20
+#define CYGNUM_HAL_INTERRUPT_RESERVED_21          21
+#define CYGNUM_HAL_INTERRUPT_RESERVED_22          22
+#define CYGNUM_HAL_INTERRUPT_RESERVED_23          23
 
-#define CYG_VECTOR_TIMER_4              24
-#define CYG_VECTOR_RESERVED_25          25
-#define CYG_VECTOR_RESERVED_26          26
-#define CYG_VECTOR_RESERVED_27          27
+#define CYGNUM_HAL_INTERRUPT_TIMER_4              24
+#define CYGNUM_HAL_INTERRUPT_RESERVED_25          25
+#define CYGNUM_HAL_INTERRUPT_RESERVED_26          26
+#define CYGNUM_HAL_INTERRUPT_RESERVED_27          27
 
-#define CYG_VECTOR_TIMER_5              28
-#define CYG_VECTOR_RESERVED_29          29
-#define CYG_VECTOR_RESERVED_30          30
-#define CYG_VECTOR_RESERVED_31          31
+#define CYGNUM_HAL_INTERRUPT_TIMER_5              28
+#define CYGNUM_HAL_INTERRUPT_RESERVED_29          29
+#define CYGNUM_HAL_INTERRUPT_RESERVED_30          30
+#define CYGNUM_HAL_INTERRUPT_RESERVED_31          31
 
-#define CYG_VECTOR_TIMER_6              32
-#define CYG_VECTOR_RESERVED_33          33
-#define CYG_VECTOR_RESERVED_34          34
-#define CYG_VECTOR_RESERVED_35          35
+#define CYGNUM_HAL_INTERRUPT_TIMER_6              32
+#define CYGNUM_HAL_INTERRUPT_RESERVED_33          33
+#define CYGNUM_HAL_INTERRUPT_RESERVED_34          34
+#define CYGNUM_HAL_INTERRUPT_RESERVED_35          35
 
-#define CYG_VECTOR_TIMER_6_COMPARE_A    36
-#define CYG_VECTOR_RESERVED_37          37
-#define CYG_VECTOR_RESERVED_38          38
-#define CYG_VECTOR_RESERVED_39          39
+#define CYGNUM_HAL_INTERRUPT_TIMER_6_COMPARE_A    36
+#define CYGNUM_HAL_INTERRUPT_RESERVED_37          37
+#define CYGNUM_HAL_INTERRUPT_RESERVED_38          38
+#define CYGNUM_HAL_INTERRUPT_RESERVED_39          39
 
-#define CYG_VECTOR_TIMER_6_COMPARE_B    40
-#define CYG_VECTOR_RESERVED_41          41
-#define CYG_VECTOR_RESERVED_42          42
-#define CYG_VECTOR_RESERVED_43          43
+#define CYGNUM_HAL_INTERRUPT_TIMER_6_COMPARE_B    40
+#define CYGNUM_HAL_INTERRUPT_RESERVED_41          41
+#define CYGNUM_HAL_INTERRUPT_RESERVED_42          42
+#define CYGNUM_HAL_INTERRUPT_RESERVED_43          43
 
-#define CYG_VECTOR_RESERVED_44          44
-#define CYG_VECTOR_RESERVED_45          45
-#define CYG_VECTOR_RESERVED_46          46
-#define CYG_VECTOR_RESERVED_47          47
+#define CYGNUM_HAL_INTERRUPT_RESERVED_44          44
+#define CYGNUM_HAL_INTERRUPT_RESERVED_45          45
+#define CYGNUM_HAL_INTERRUPT_RESERVED_46          46
+#define CYGNUM_HAL_INTERRUPT_RESERVED_47          47
 
-#define CYG_VECTOR_DMA0                 48
-#define CYG_VECTOR_RESERVED_49          49
-#define CYG_VECTOR_RESERVED_50          50
-#define CYG_VECTOR_RESERVED_51          51
+#define CYGNUM_HAL_INTERRUPT_DMA0                 48
+#define CYGNUM_HAL_INTERRUPT_RESERVED_49          49
+#define CYGNUM_HAL_INTERRUPT_RESERVED_50          50
+#define CYGNUM_HAL_INTERRUPT_RESERVED_51          51
 
-#define CYG_VECTOR_DMA1                 52
-#define CYG_VECTOR_RESERVED_53          53
-#define CYG_VECTOR_RESERVED_54          54
-#define CYG_VECTOR_RESERVED_55          55
+#define CYGNUM_HAL_INTERRUPT_DMA1                 52
+#define CYGNUM_HAL_INTERRUPT_RESERVED_53          53
+#define CYGNUM_HAL_INTERRUPT_RESERVED_54          54
+#define CYGNUM_HAL_INTERRUPT_RESERVED_55          55
 
-#define CYG_VECTOR_DMA2                 56
-#define CYG_VECTOR_RESERVED_57          57
-#define CYG_VECTOR_RESERVED_58          58
-#define CYG_VECTOR_RESERVED_59          59
+#define CYGNUM_HAL_INTERRUPT_DMA2                 56
+#define CYGNUM_HAL_INTERRUPT_RESERVED_57          57
+#define CYGNUM_HAL_INTERRUPT_RESERVED_58          58
+#define CYGNUM_HAL_INTERRUPT_RESERVED_59          59
 
-#define CYG_VECTOR_DMA3                 60
-#define CYG_VECTOR_RESERVED_61          61
-#define CYG_VECTOR_RESERVED_62          62
-#define CYG_VECTOR_RESERVED_63          63
+#define CYGNUM_HAL_INTERRUPT_DMA3                 60
+#define CYGNUM_HAL_INTERRUPT_RESERVED_61          61
+#define CYGNUM_HAL_INTERRUPT_RESERVED_62          62
+#define CYGNUM_HAL_INTERRUPT_RESERVED_63          63
 
-#define CYG_VECTOR_SERIAL_0_RX          64
-#define CYG_VECTOR_RESERVED_65          65
-#define CYG_VECTOR_RESERVED_66          66
-#define CYG_VECTOR_RESERVED_67          67
+#define CYGNUM_HAL_INTERRUPT_SERIAL_0_RX          64
+#define CYGNUM_HAL_INTERRUPT_RESERVED_65          65
+#define CYGNUM_HAL_INTERRUPT_RESERVED_66          66
+#define CYGNUM_HAL_INTERRUPT_RESERVED_67          67
 
-#define CYG_VECTOR_SERIAL_0_TX          68
-#define CYG_VECTOR_RESERVED_69          69
-#define CYG_VECTOR_RESERVED_70          70
-#define CYG_VECTOR_RESERVED_71          71
+#define CYGNUM_HAL_INTERRUPT_SERIAL_0_TX          68
+#define CYGNUM_HAL_INTERRUPT_RESERVED_69          69
+#define CYGNUM_HAL_INTERRUPT_RESERVED_70          70
+#define CYGNUM_HAL_INTERRUPT_RESERVED_71          71
 
-#define CYG_VECTOR_SERIAL_1_RX          72
-#define CYG_VECTOR_RESERVED_73          73
-#define CYG_VECTOR_RESERVED_74          74
-#define CYG_VECTOR_RESERVED_75          75
+#define CYGNUM_HAL_INTERRUPT_SERIAL_1_RX          72
+#define CYGNUM_HAL_INTERRUPT_RESERVED_73          73
+#define CYGNUM_HAL_INTERRUPT_RESERVED_74          74
+#define CYGNUM_HAL_INTERRUPT_RESERVED_75          75
 
-#define CYG_VECTOR_SERIAL_1_TX          76
-#define CYG_VECTOR_RESERVED_77          77
-#define CYG_VECTOR_RESERVED_78          78
-#define CYG_VECTOR_RESERVED_79          79
+#define CYGNUM_HAL_INTERRUPT_SERIAL_1_TX          76
+#define CYGNUM_HAL_INTERRUPT_RESERVED_77          77
+#define CYGNUM_HAL_INTERRUPT_RESERVED_78          78
+#define CYGNUM_HAL_INTERRUPT_RESERVED_79          79
 
-#define CYG_VECTOR_SERIAL_2_RX          80
-#define CYG_VECTOR_RESERVED_81          81
-#define CYG_VECTOR_RESERVED_82          82
-#define CYG_VECTOR_RESERVED_83          83
+#define CYGNUM_HAL_INTERRUPT_SERIAL_2_RX          80
+#define CYGNUM_HAL_INTERRUPT_RESERVED_81          81
+#define CYGNUM_HAL_INTERRUPT_RESERVED_82          82
+#define CYGNUM_HAL_INTERRUPT_RESERVED_83          83
 
-#define CYG_VECTOR_SERIAL_2_TX          84
-#define CYG_VECTOR_RESERVED_85          85
-#define CYG_VECTOR_RESERVED_86          86
-#define CYG_VECTOR_RESERVED_87          87
+#define CYGNUM_HAL_INTERRUPT_SERIAL_2_TX          84
+#define CYGNUM_HAL_INTERRUPT_RESERVED_85          85
+#define CYGNUM_HAL_INTERRUPT_RESERVED_86          86
+#define CYGNUM_HAL_INTERRUPT_RESERVED_87          87
 
-#define CYG_VECTOR_RESERVED_88          88
-#define CYG_VECTOR_RESERVED_89          89
-#define CYG_VECTOR_RESERVED_90          90
-#define CYG_VECTOR_RESERVED_91          91
+#define CYGNUM_HAL_INTERRUPT_RESERVED_88          88
+#define CYGNUM_HAL_INTERRUPT_RESERVED_89          89
+#define CYGNUM_HAL_INTERRUPT_RESERVED_90          90
+#define CYGNUM_HAL_INTERRUPT_RESERVED_91          91
 
-#define CYG_VECTOR_EXTERNAL_0           92
-#define CYG_VECTOR_RESERVED_93          93
-#define CYG_VECTOR_RESERVED_94          94
-#define CYG_VECTOR_RESERVED_95          95
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_0           92
+#define CYGNUM_HAL_INTERRUPT_RESERVED_93          93
+#define CYGNUM_HAL_INTERRUPT_RESERVED_94          94
+#define CYGNUM_HAL_INTERRUPT_RESERVED_95          95
 
-#define CYG_VECTOR_EXTERNAL_1           96
-#define CYG_VECTOR_RESERVED_97          97
-#define CYG_VECTOR_RESERVED_98          98
-#define CYG_VECTOR_RESERVED_99          99
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_1           96
+#define CYGNUM_HAL_INTERRUPT_RESERVED_97          97
+#define CYGNUM_HAL_INTERRUPT_RESERVED_98          98
+#define CYGNUM_HAL_INTERRUPT_RESERVED_99          99
 
-#define CYG_VECTOR_EXTERNAL_2           100
-#define CYG_VECTOR_RESERVED_101         101
-#define CYG_VECTOR_RESERVED_102         102
-#define CYG_VECTOR_RESERVED_103         103
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_2           100
+#define CYGNUM_HAL_INTERRUPT_RESERVED_101         101
+#define CYGNUM_HAL_INTERRUPT_RESERVED_102         102
+#define CYGNUM_HAL_INTERRUPT_RESERVED_103         103
 
-#define CYG_VECTOR_EXTERNAL_3           104
-#define CYG_VECTOR_RESERVED_105         105
-#define CYG_VECTOR_RESERVED_106         106
-#define CYG_VECTOR_RESERVED_107         107
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_3           104
+#define CYGNUM_HAL_INTERRUPT_RESERVED_105         105
+#define CYGNUM_HAL_INTERRUPT_RESERVED_106         106
+#define CYGNUM_HAL_INTERRUPT_RESERVED_107         107
 
-#define CYG_VECTOR_EXTERNAL_4           108
-#define CYG_VECTOR_RESERVED_109         109
-#define CYG_VECTOR_RESERVED_110         110
-#define CYG_VECTOR_RESERVED_111         111
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_4           108
+#define CYGNUM_HAL_INTERRUPT_RESERVED_109         109
+#define CYGNUM_HAL_INTERRUPT_RESERVED_110         110
+#define CYGNUM_HAL_INTERRUPT_RESERVED_111         111
 
-#define CYG_VECTOR_EXTERNAL_5           112
-#define CYG_VECTOR_RESERVED_113         113
-#define CYG_VECTOR_RESERVED_114         114
-#define CYG_VECTOR_RESERVED_115         115
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_5           112
+#define CYGNUM_HAL_INTERRUPT_RESERVED_113         113
+#define CYGNUM_HAL_INTERRUPT_RESERVED_114         114
+#define CYGNUM_HAL_INTERRUPT_RESERVED_115         115
 
-#define CYG_VECTOR_EXTERNAL_6           116
-#define CYG_VECTOR_RESERVED_117         117
-#define CYG_VECTOR_RESERVED_118         118
-#define CYG_VECTOR_RESERVED_119         119
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_6           116
+#define CYGNUM_HAL_INTERRUPT_RESERVED_117         117
+#define CYGNUM_HAL_INTERRUPT_RESERVED_118         118
+#define CYGNUM_HAL_INTERRUPT_RESERVED_119         119
 
-#define CYG_VECTOR_EXTERNAL_7           120
-#define CYG_VECTOR_RESERVED_121         121
-#define CYG_VECTOR_RESERVED_122         122
-#define CYG_VECTOR_RESERVED_123         123
+#define CYGNUM_HAL_INTERRUPT_EXTERNAL_7           120
+#define CYGNUM_HAL_INTERRUPT_RESERVED_121         121
+#define CYGNUM_HAL_INTERRUPT_RESERVED_122         122
+#define CYGNUM_HAL_INTERRUPT_RESERVED_123         123
 
-#define CYG_ISR_MIN                     0
-#define CYG_ISR_MAX                     123
+#define CYGNUM_HAL_ISR_MIN                     0
+#define CYGNUM_HAL_ISR_MAX                     123
 
-#define CYG_ISR_COUNT                   (3+((CYG_ISR_MAX+1)/4))
+#define CYGNUM_HAL_ISR_COUNT                   (3+((CYGNUM_HAL_ISR_MAX+1)/4))
 
 #endif
 
 // The vector used by the Real time clock
 
 #ifdef CYG_HAL_MN10300_SIM
-#  define CYG_VECTOR_RTC                  CYG_VECTOR_TIMER_5
-//# define CYG_VECTOR_RTC                  CYG_VECTOR_EXTERNAL_1
+#  define CYGNUM_HAL_INTERRUPT_RTC           CYGNUM_HAL_INTERRUPT_TIMER_5
+//# define CYGNUM_HAL_INTERRUPT_RTC          CYGNUM_HAL_INTERRUPT_EXTERNAL_1
 #else
 # ifdef CYG_HAL_MN10300_MN103000
-#  define CYG_VECTOR_RTC                  CYG_VECTOR_TIMER_8
+#  define CYGNUM_HAL_INTERRUPT_RTC           CYGNUM_HAL_INTERRUPT_TIMER_8
 # endif
 # ifdef CYG_HAL_MN10300_MN103002
-#  define CYG_VECTOR_RTC                  CYG_VECTOR_TIMER_5
+#  define CYGNUM_HAL_INTERRUPT_RTC           CYGNUM_HAL_INTERRUPT_TIMER_5
 # endif
 #endif
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Timer control registers.
 
 // On simulator we use simulated external interrupt
@@ -459,26 +466,26 @@
 
 #endif
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Static data used by HAL
 
 // ISR tables
-externC volatile CYG_ADDRESS    hal_interrupt_handlers[CYG_ISR_COUNT];
-externC volatile CYG_ADDRWORD   hal_interrupt_data[CYG_ISR_COUNT];
-externC volatile CYG_ADDRESS    hal_interrupt_objects[CYG_ISR_COUNT];        
+externC volatile CYG_ADDRESS    hal_interrupt_handlers[CYGNUM_HAL_ISR_COUNT];
+externC volatile CYG_ADDRWORD   hal_interrupt_data[CYGNUM_HAL_ISR_COUNT];
+externC volatile CYG_ADDRESS    hal_interrupt_objects[CYGNUM_HAL_ISR_COUNT];
 
 // VSR table
-externC volatile CYG_ADDRESS    hal_vsr_table[CYG_VSR_COUNT];
+externC volatile CYG_ADDRESS    hal_vsr_table[CYGNUM_HAL_VSR_COUNT];
 
 // MN10300 interrupt control registers, mapped by linker script.
 externC volatile cyg_uint16     mn10300_interrupt_control[0x300/2];
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Interrupt state storage
 
 typedef cyg_uint32 CYG_INTERRUPT_STATE;
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Interrupt control macros
 
 #define HAL_DISABLE_INTERRUPTS(_old_)   \
@@ -520,7 +527,7 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
             : "=d"(_old_)               \
             );
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Translate a vector number into an ISR table index.
 // If we have chained interrupts we have just a single ISR per priority
 // level. On the MN103000 there are several interrupts per controller,
@@ -530,16 +537,21 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
 
 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
 
-#define HAL_TRANSLATE_VECTOR(_vector_,_index_)                  \
-{                                                               \
-    /* ICRs are 16 bit regs at 32 bit spacing */                \
-    cyg_ucount16 _ix_ = ((_vector_)>>2)<<1;                     \
-                                                                \
-    /* read the appropriate interrupt control register */       \
-    cyg_uint16 _icr_ = mn10300_interrupt_control[_ix_];         \
-                                                                \
-    /* extract interrupt priority level */                      \
-    _index_ = (_icr_ >> 12) & 0x7;                              \
+#define HAL_TRANSLATE_VECTOR(_vector_,_index_)                             \
+{                                                                          \
+    if( _vector_ <= CYGNUM_HAL_INTERRUPT_SYSTEM_ERROR )                    \
+        (_index_) = (_vector_);                                            \
+    else                                                                   \
+    {                                                                      \
+        /* ICRs are 16 bit regs at 32 bit spacing */                       \
+        cyg_ucount16 _ix_ = ((_vector_)>>2)<<1;                            \
+                                                                           \
+        /* read the appropriate interrupt control register */              \
+        cyg_uint16 _icr_ = mn10300_interrupt_control[_ix_];                \
+                                                                           \
+        /* extract interrupt priority level */                             \
+        _index_ = CYGNUM_HAL_INTERRUPT_RESERVED_3 + ((_icr_ >> 12) & 0x7); \
+    }                                                                      \
 }
 
 #else
@@ -550,21 +562,30 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
 
 #elif defined(CYG_HAL_MN10300_MN103002)
 
-//#define HAL_TRANSLATE_VECTOR(_vector_,_index_) _index_ = ((_vector_)>>2)
-
-#define HAL_TRANSLATE_VECTOR(_vector_,_index_)                          \
-              _index_ = (((_vector_)<=CYG_VECTOR_SYSTEM_ERROR) ?        \
-                         (_vector_) :                                   \
-                         (((_vector_)>>2)+CYG_VECTOR_RESERVED_3))
+#define HAL_TRANSLATE_VECTOR(_vector_,_index_)                             \
+              _index_ = (((_vector_)<=CYGNUM_HAL_INTERRUPT_SYSTEM_ERROR) ? \
+                         (_vector_) :                                      \
+                         (((_vector_)>>2)+CYGNUM_HAL_INTERRUPT_RESERVED_3))
 
 #endif
 
 #endif
 
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Interrupt and VSR attachment macros
 
+#define HAL_INTERRUPT_IN_USE( _vector_, _state_)                          \
+    CYG_MACRO_START                                                       \
+    cyg_uint32 _index_;                                                   \
+    HAL_TRANSLATE_VECTOR ((_vector_), _index_);                           \
+                                                                          \
+    if( hal_interrupt_handlers[_index_] == (CYG_ADDRESS)NULL )            \
+        (_state_) = 0;                                                    \
+    else                                                                  \
+        (_state_) = 1;                                                    \
+    CYG_MACRO_END
+
 #define HAL_INTERRUPT_ATTACH( _vector_, _isr_, _data_, _object_ )       \
 {                                                                       \
     cyg_uint32 _index_;                                                 \
@@ -601,7 +622,7 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
     hal_vsr_table[_vector_] = (CYG_ADDRESS)_vsr_;
 
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Interrupt controller access
 // Read interrupt control registers back after writing to them. This
 // ensures that the written value is not sitting in the store buffers
@@ -659,19 +680,20 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
 
 #define HAL_INTERRUPT_CONFIGURE( _vector_, _level_, _up_ )      \
 {                                                               \
-    cyg_vector _v_ = _vector_;                                  \
+    cyg_uint32 _v_ = _vector_;                                  \
+    cyg_uint16 _val_ = 0;                                       \
+    cyg_uint16 _reg_;                                           \
+                                                                \
     /* adjust vector to bit offset in EXTMD */                  \
-    _v_ -= CYG_VECTOR_EXTERNAL_0;                               \
+    _v_ -= CYGNUM_HAL_INTERRUPT_EXTERNAL_0;                     \
     _v_ >>= 1;                                                  \
                                                                 \
-    cyg_uint16 _val_ = 0;                                       \
-                                                                \
     /* set bits according to requirements */                    \
     if( _up_ ) _val_ |= 1;                                      \
     if( !(_level_) ) _val_ |= 2;                                \
                                                                 \
     /* get EXTMD */                                             \
-    cyg_uint16 _reg_ = mn10300_interrupt_control[0x180>>1];     \
+    _reg_ = mn10300_interrupt_control[0x180>>1];                \
                                                                 \
     /* clear old value and set new */                           \
     _reg_ &= ~(3<<_v_);                                         \
@@ -698,7 +720,7 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
     _icr_ = mn10300_interrupt_control[_index_];                 \
 }
 
-//-----------------------------------------------------------------------------
+//--------------------------------------------------------------------------
 // Clock control
 
 
@@ -807,7 +829,17 @@ typedef cyg_uint32 CYG_INTERRUPT_STATE;
                                                                         \
     *(_pvalue_) = CYGNUM_KERNEL_COUNTERS_RTC_PERIOD - ((t5<<16) + t4);  \
 }
+
+// FIXME: above line should not use CYGNUM_KERNEL_COUNTERS_RTC_PERIOD since
+// this means the HAL gets configured by kernel options even when the
+// kernel is disabled!
+
 #endif // CYG_HAL_MN10300_SIM
-//-----------------------------------------------------------------------------
+
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
+#define HAL_CLOCK_LATENCY(_pvalue_) HAL_CLOCK_READ(_pvalue_)
+#endif
+
+//--------------------------------------------------------------------------
 #endif // ifndef CYGONCE_HAL_HAL_INTR_H
-// End of hal_intr.h
+// EOF hal_intr.h