summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1996-05-31 01:08:08 +0000
committerPeter Wemm <peter@FreeBSD.org>1996-05-31 01:08:08 +0000
commitee323f62ad18cda4d4f83a94f8c9ef665e6ba56d (patch)
treed718bd5d92603964613aae40b73bf20a0672e820
parentfd54183bb906db832ad156830d592d366168111e (diff)
Notes
-rw-r--r--sys/amd64/amd64/exception.S13
-rw-r--r--sys/amd64/amd64/exception.s13
-rw-r--r--sys/amd64/amd64/support.S36
-rw-r--r--sys/amd64/amd64/support.s36
-rw-r--r--sys/amd64/include/asmacros.h5
-rw-r--r--sys/amd64/isa/vector.S80
-rw-r--r--sys/amd64/isa/vector.s80
-rw-r--r--sys/i386/i386/exception.s13
-rw-r--r--sys/i386/i386/microtime.s198
-rw-r--r--sys/i386/i386/support.s36
-rw-r--r--sys/i386/include/asmacros.h5
-rw-r--r--sys/i386/isa/icu.s4
-rw-r--r--sys/i386/isa/vector.s80
13 files changed, 305 insertions, 294 deletions
diff --git a/sys/amd64/amd64/exception.S b/sys/amd64/amd64/exception.S
index a7b457415a494..611a895fd1b3d 100644
--- a/sys/amd64/amd64/exception.S
+++ b/sys/amd64/amd64/exception.S
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exception.s,v 1.16 1996/04/12 12:22:14 phk Exp $
+ * $Id: exception.s,v 1.17 1996/05/02 09:34:20 phk Exp $
*/
#include "npx.h" /* NNPX */
@@ -41,6 +41,7 @@
#include <machine/trap.h> /* trap codes */
#include <sys/syscall.h> /* syscall numbers */
#include <machine/asmacros.h> /* miscellaneous macros */
+#include <sys/cdefs.h> /* CPP macros */
#define KDSEL 0x10 /* kernel data selector */
#define SEL_RPL_MASK 0x0003
@@ -54,7 +55,7 @@
/*
* Trap and fault vector routines
*/
-#define IDTVEC(name) ALIGN_TEXT ; .globl _X/**/name ; _X/**/name:
+#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(_X,name); __CONCAT(_X,name):
#define TRAP(a) pushl $(a) ; jmp _alltraps
/*
@@ -69,8 +70,8 @@
testb $SEL_RPL_MASK,4(%esp) ; \
jne 1f ; \
ss ; \
- .globl bdb_/**/name/**/_ljmp ; \
-bdb_/**/name/**/_ljmp: ; \
+ .globl __CONCAT(__CONCAT(bdb_,name),_ljmp); \
+__CONCAT(__CONCAT(bdb_,name),_ljmp): \
ljmp $0,$0 ; \
1:
#else
@@ -123,8 +124,8 @@ IDTVEC(fpu)
* interrupts, but now it is fairly easy - mask nested ones the
* same as SWI_AST's.
*/
- pushl $0 /* dumby error code */
- pushl $0 /* dumby trap type */
+ pushl $0 /* dummy error code */
+ pushl $0 /* dummy trap type */
pushal
pushl %ds
pushl %es /* now the stack frame is a trap frame */
diff --git a/sys/amd64/amd64/exception.s b/sys/amd64/amd64/exception.s
index a7b457415a494..611a895fd1b3d 100644
--- a/sys/amd64/amd64/exception.s
+++ b/sys/amd64/amd64/exception.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exception.s,v 1.16 1996/04/12 12:22:14 phk Exp $
+ * $Id: exception.s,v 1.17 1996/05/02 09:34:20 phk Exp $
*/
#include "npx.h" /* NNPX */
@@ -41,6 +41,7 @@
#include <machine/trap.h> /* trap codes */
#include <sys/syscall.h> /* syscall numbers */
#include <machine/asmacros.h> /* miscellaneous macros */
+#include <sys/cdefs.h> /* CPP macros */
#define KDSEL 0x10 /* kernel data selector */
#define SEL_RPL_MASK 0x0003
@@ -54,7 +55,7 @@
/*
* Trap and fault vector routines
*/
-#define IDTVEC(name) ALIGN_TEXT ; .globl _X/**/name ; _X/**/name:
+#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(_X,name); __CONCAT(_X,name):
#define TRAP(a) pushl $(a) ; jmp _alltraps
/*
@@ -69,8 +70,8 @@
testb $SEL_RPL_MASK,4(%esp) ; \
jne 1f ; \
ss ; \
- .globl bdb_/**/name/**/_ljmp ; \
-bdb_/**/name/**/_ljmp: ; \
+ .globl __CONCAT(__CONCAT(bdb_,name),_ljmp); \
+__CONCAT(__CONCAT(bdb_,name),_ljmp): \
ljmp $0,$0 ; \
1:
#else
@@ -123,8 +124,8 @@ IDTVEC(fpu)
* interrupts, but now it is fairly easy - mask nested ones the
* same as SWI_AST's.
*/
- pushl $0 /* dumby error code */
- pushl $0 /* dumby trap type */
+ pushl $0 /* dummy error code */
+ pushl $0 /* dummy trap type */
pushal
pushl %ds
pushl %es /* now the stack frame is a trap frame */
diff --git a/sys/amd64/amd64/support.S b/sys/amd64/amd64/support.S
index 1dbf8ee180cac..0d5bc5dd3f7c8 100644
--- a/sys/amd64/amd64/support.S
+++ b/sys/amd64/amd64/support.S
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: support.s,v 1.34 1996/05/02 14:19:53 phk Exp $
+ * $Id: support.s,v 1.35 1996/05/03 21:01:00 phk Exp $
*/
#include "assym.s" /* system definitions */
@@ -74,11 +74,11 @@ ENTRY(i486_bzero)
movl 4(%esp),%edx
movl 8(%esp),%ecx
xorl %eax,%eax
-/
-/ do 64 byte chunks first
-/
-/ XXX this is probably over-unrolled at least for DX2's
-/
+/*
+ * do 64 byte chunks first
+ *
+ * XXX this is probably over-unrolled at least for DX2's
+ */
2:
cmpl $64,%ecx
jb 3f
@@ -103,9 +103,9 @@ ENTRY(i486_bzero)
jnz 2b
ret
-/
-/ do 16 byte chunks
-/
+/*
+ * do 16 byte chunks
+ */
SUPERALIGN_TEXT
3:
cmpl $16,%ecx
@@ -119,9 +119,9 @@ ENTRY(i486_bzero)
jnz 3b
ret
-/
-/ do 4 byte chunks
-/
+/*
+ * do 4 byte chunks
+ */
SUPERALIGN_TEXT
4:
cmpl $4,%ecx
@@ -132,12 +132,12 @@ ENTRY(i486_bzero)
jnz 4b
ret
-/
-/ do 1 byte chunks
-/ a jump table seems to be faster than a loop or more range reductions
-/
-/ XXX need a const section for non-text
-/
+/*
+ * do 1 byte chunks
+ * a jump table seems to be faster than a loop or more range reductions
+ *
+ * XXX need a const section for non-text
+ */
SUPERALIGN_TEXT
jtab:
.long do0
diff --git a/sys/amd64/amd64/support.s b/sys/amd64/amd64/support.s
index 1dbf8ee180cac..0d5bc5dd3f7c8 100644
--- a/sys/amd64/amd64/support.s
+++ b/sys/amd64/amd64/support.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: support.s,v 1.34 1996/05/02 14:19:53 phk Exp $
+ * $Id: support.s,v 1.35 1996/05/03 21:01:00 phk Exp $
*/
#include "assym.s" /* system definitions */
@@ -74,11 +74,11 @@ ENTRY(i486_bzero)
movl 4(%esp),%edx
movl 8(%esp),%ecx
xorl %eax,%eax
-/
-/ do 64 byte chunks first
-/
-/ XXX this is probably over-unrolled at least for DX2's
-/
+/*
+ * do 64 byte chunks first
+ *
+ * XXX this is probably over-unrolled at least for DX2's
+ */
2:
cmpl $64,%ecx
jb 3f
@@ -103,9 +103,9 @@ ENTRY(i486_bzero)
jnz 2b
ret
-/
-/ do 16 byte chunks
-/
+/*
+ * do 16 byte chunks
+ */
SUPERALIGN_TEXT
3:
cmpl $16,%ecx
@@ -119,9 +119,9 @@ ENTRY(i486_bzero)
jnz 3b
ret
-/
-/ do 4 byte chunks
-/
+/*
+ * do 4 byte chunks
+ */
SUPERALIGN_TEXT
4:
cmpl $4,%ecx
@@ -132,12 +132,12 @@ ENTRY(i486_bzero)
jnz 4b
ret
-/
-/ do 1 byte chunks
-/ a jump table seems to be faster than a loop or more range reductions
-/
-/ XXX need a const section for non-text
-/
+/*
+ * do 1 byte chunks
+ * a jump table seems to be faster than a loop or more range reductions
+ *
+ * XXX need a const section for non-text
+ */
SUPERALIGN_TEXT
jtab:
.long do0
diff --git a/sys/amd64/include/asmacros.h b/sys/amd64/include/asmacros.h
index 98633543ded3f..4ecabdf5f2d0c 100644
--- a/sys/amd64/include/asmacros.h
+++ b/sys/amd64/include/asmacros.h
@@ -30,13 +30,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: asmacros.h,v 1.6 1995/12/29 15:28:53 bde Exp $
+ * $Id: asmacros.h,v 1.7 1996/03/31 04:17:25 bde Exp $
*/
#ifndef _MACHINE_ASMACROS_H_
#define _MACHINE_ASMACROS_H_
#ifdef KERNEL
+#include <sys/cdefs.h>
/* XXX too much duplication in various asm*.h's and gprof.h's */
@@ -44,7 +45,7 @@
#define ALIGN_TEXT .align 2,0x90 /* 4-byte alignment, nop filled */
#define SUPERALIGN_TEXT .align 4,0x90 /* 16-byte alignment (better for 486), nop filled */
-#define GEN_ENTRY(name) ALIGN_TEXT; .globl _/**/name; _/**/name:
+#define GEN_ENTRY(name) ALIGN_TEXT; .globl __CONCAT(_,name); __CONCAT(_,name):
#define NON_GPROF_ENTRY(name) GEN_ENTRY(name)
#ifdef GPROF
diff --git a/sys/amd64/isa/vector.S b/sys/amd64/isa/vector.S
index a5056afa851e3..94691f5f7f184 100644
--- a/sys/amd64/isa/vector.S
+++ b/sys/amd64/isa/vector.S
@@ -1,6 +1,6 @@
/*
* from: vector.s, 386BSD 0.1 unknown origin
- * $Id: vector.s,v 1.18 1996/03/31 03:31:29 bde Exp $
+ * $Id: vector.s,v 1.19 1996/04/11 21:18:47 bde Exp $
*/
#include "opt_auto_eoi.h"
@@ -98,10 +98,10 @@
* loading segregs.
*/
-#define FAST_INTR(irq_num, enable_icus) \
+#define FAST_INTR(irq_num, vec_name, enable_icus) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(fastintr/**/irq_num) ; \
+IDTVEC(vec_name) ; \
pushl %eax ; /* save only call-used registers */ \
pushl %ecx ; \
pushl %edx ; \
@@ -153,12 +153,12 @@ IDTVEC(fastintr/**/irq_num) ; \
MEXITCOUNT ; \
jmp _doreti
-#define INTR(irq_num, icu, enable_icus, reg) \
+#define INTR(irq_num, vec_name, icu, enable_icus, reg) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(intr/**/irq_num) ; \
- pushl $0 ; /* dumby error code */ \
- pushl $0 ; /* dumby trap type */ \
+IDTVEC(vec_name) ; \
+ pushl $0 ; /* dummy error code */ \
+ pushl $0 ; /* dummy trap type */ \
pushal ; \
pushl %ds ; /* save our data and extra segments ... */ \
pushl %es ; \
@@ -175,7 +175,7 @@ IDTVEC(intr/**/irq_num) ; \
testb $IRQ_BIT(irq_num),%reg ; \
jne 2f ; \
incb _intr_nesting_level ; \
-Xresume/**/irq_num: ; \
+__CONCAT(Xresume,irq_num): ; \
FAKE_MCOUNT(12*4(%esp)) ; /* XXX late to avoid double count */ \
movl _intr_countp + (irq_num) * 4,%eax ; \
incl (%eax) ; \
@@ -208,38 +208,38 @@ Xresume/**/irq_num: ; \
iret
MCOUNT_LABEL(bintr)
- FAST_INTR(0, ENABLE_ICU1)
- FAST_INTR(1, ENABLE_ICU1)
- FAST_INTR(2, ENABLE_ICU1)
- FAST_INTR(3, ENABLE_ICU1)
- FAST_INTR(4, ENABLE_ICU1)
- FAST_INTR(5, ENABLE_ICU1)
- FAST_INTR(6, ENABLE_ICU1)
- FAST_INTR(7, ENABLE_ICU1)
- FAST_INTR(8, ENABLE_ICU1_AND_2)
- FAST_INTR(9, ENABLE_ICU1_AND_2)
- FAST_INTR(10, ENABLE_ICU1_AND_2)
- FAST_INTR(11, ENABLE_ICU1_AND_2)
- FAST_INTR(12, ENABLE_ICU1_AND_2)
- FAST_INTR(13, ENABLE_ICU1_AND_2)
- FAST_INTR(14, ENABLE_ICU1_AND_2)
- FAST_INTR(15, ENABLE_ICU1_AND_2)
- INTR(0, IO_ICU1, ENABLE_ICU1, al)
- INTR(1, IO_ICU1, ENABLE_ICU1, al)
- INTR(2, IO_ICU1, ENABLE_ICU1, al)
- INTR(3, IO_ICU1, ENABLE_ICU1, al)
- INTR(4, IO_ICU1, ENABLE_ICU1, al)
- INTR(5, IO_ICU1, ENABLE_ICU1, al)
- INTR(6, IO_ICU1, ENABLE_ICU1, al)
- INTR(7, IO_ICU1, ENABLE_ICU1, al)
- INTR(8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ FAST_INTR(0,fastintr0, ENABLE_ICU1)
+ FAST_INTR(1,fastintr1, ENABLE_ICU1)
+ FAST_INTR(2,fastintr2, ENABLE_ICU1)
+ FAST_INTR(3,fastintr3, ENABLE_ICU1)
+ FAST_INTR(4,fastintr4, ENABLE_ICU1)
+ FAST_INTR(5,fastintr5, ENABLE_ICU1)
+ FAST_INTR(6,fastintr6, ENABLE_ICU1)
+ FAST_INTR(7,fastintr7, ENABLE_ICU1)
+ FAST_INTR(8,fastintr8, ENABLE_ICU1_AND_2)
+ FAST_INTR(9,fastintr9, ENABLE_ICU1_AND_2)
+ FAST_INTR(10,fastintr10, ENABLE_ICU1_AND_2)
+ FAST_INTR(11,fastintr11, ENABLE_ICU1_AND_2)
+ FAST_INTR(12,fastintr12, ENABLE_ICU1_AND_2)
+ FAST_INTR(13,fastintr13, ENABLE_ICU1_AND_2)
+ FAST_INTR(14,fastintr14, ENABLE_ICU1_AND_2)
+ FAST_INTR(15,fastintr15, ENABLE_ICU1_AND_2)
+ INTR(0,intr0, IO_ICU1, ENABLE_ICU1, al)
+ INTR(1,intr1, IO_ICU1, ENABLE_ICU1, al)
+ INTR(2,intr2, IO_ICU1, ENABLE_ICU1, al)
+ INTR(3,intr3, IO_ICU1, ENABLE_ICU1, al)
+ INTR(4,intr4, IO_ICU1, ENABLE_ICU1, al)
+ INTR(5,intr5, IO_ICU1, ENABLE_ICU1, al)
+ INTR(6,intr6, IO_ICU1, ENABLE_ICU1, al)
+ INTR(7,intr7, IO_ICU1, ENABLE_ICU1, al)
+ INTR(8,intr8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(9,intr9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(10,intr10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(11,intr11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(12,intr12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(13,intr13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(14,intr14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(15,intr15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
MCOUNT_LABEL(eintr)
.data
diff --git a/sys/amd64/isa/vector.s b/sys/amd64/isa/vector.s
index a5056afa851e3..94691f5f7f184 100644
--- a/sys/amd64/isa/vector.s
+++ b/sys/amd64/isa/vector.s
@@ -1,6 +1,6 @@
/*
* from: vector.s, 386BSD 0.1 unknown origin
- * $Id: vector.s,v 1.18 1996/03/31 03:31:29 bde Exp $
+ * $Id: vector.s,v 1.19 1996/04/11 21:18:47 bde Exp $
*/
#include "opt_auto_eoi.h"
@@ -98,10 +98,10 @@
* loading segregs.
*/
-#define FAST_INTR(irq_num, enable_icus) \
+#define FAST_INTR(irq_num, vec_name, enable_icus) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(fastintr/**/irq_num) ; \
+IDTVEC(vec_name) ; \
pushl %eax ; /* save only call-used registers */ \
pushl %ecx ; \
pushl %edx ; \
@@ -153,12 +153,12 @@ IDTVEC(fastintr/**/irq_num) ; \
MEXITCOUNT ; \
jmp _doreti
-#define INTR(irq_num, icu, enable_icus, reg) \
+#define INTR(irq_num, vec_name, icu, enable_icus, reg) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(intr/**/irq_num) ; \
- pushl $0 ; /* dumby error code */ \
- pushl $0 ; /* dumby trap type */ \
+IDTVEC(vec_name) ; \
+ pushl $0 ; /* dummy error code */ \
+ pushl $0 ; /* dummy trap type */ \
pushal ; \
pushl %ds ; /* save our data and extra segments ... */ \
pushl %es ; \
@@ -175,7 +175,7 @@ IDTVEC(intr/**/irq_num) ; \
testb $IRQ_BIT(irq_num),%reg ; \
jne 2f ; \
incb _intr_nesting_level ; \
-Xresume/**/irq_num: ; \
+__CONCAT(Xresume,irq_num): ; \
FAKE_MCOUNT(12*4(%esp)) ; /* XXX late to avoid double count */ \
movl _intr_countp + (irq_num) * 4,%eax ; \
incl (%eax) ; \
@@ -208,38 +208,38 @@ Xresume/**/irq_num: ; \
iret
MCOUNT_LABEL(bintr)
- FAST_INTR(0, ENABLE_ICU1)
- FAST_INTR(1, ENABLE_ICU1)
- FAST_INTR(2, ENABLE_ICU1)
- FAST_INTR(3, ENABLE_ICU1)
- FAST_INTR(4, ENABLE_ICU1)
- FAST_INTR(5, ENABLE_ICU1)
- FAST_INTR(6, ENABLE_ICU1)
- FAST_INTR(7, ENABLE_ICU1)
- FAST_INTR(8, ENABLE_ICU1_AND_2)
- FAST_INTR(9, ENABLE_ICU1_AND_2)
- FAST_INTR(10, ENABLE_ICU1_AND_2)
- FAST_INTR(11, ENABLE_ICU1_AND_2)
- FAST_INTR(12, ENABLE_ICU1_AND_2)
- FAST_INTR(13, ENABLE_ICU1_AND_2)
- FAST_INTR(14, ENABLE_ICU1_AND_2)
- FAST_INTR(15, ENABLE_ICU1_AND_2)
- INTR(0, IO_ICU1, ENABLE_ICU1, al)
- INTR(1, IO_ICU1, ENABLE_ICU1, al)
- INTR(2, IO_ICU1, ENABLE_ICU1, al)
- INTR(3, IO_ICU1, ENABLE_ICU1, al)
- INTR(4, IO_ICU1, ENABLE_ICU1, al)
- INTR(5, IO_ICU1, ENABLE_ICU1, al)
- INTR(6, IO_ICU1, ENABLE_ICU1, al)
- INTR(7, IO_ICU1, ENABLE_ICU1, al)
- INTR(8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ FAST_INTR(0,fastintr0, ENABLE_ICU1)
+ FAST_INTR(1,fastintr1, ENABLE_ICU1)
+ FAST_INTR(2,fastintr2, ENABLE_ICU1)
+ FAST_INTR(3,fastintr3, ENABLE_ICU1)
+ FAST_INTR(4,fastintr4, ENABLE_ICU1)
+ FAST_INTR(5,fastintr5, ENABLE_ICU1)
+ FAST_INTR(6,fastintr6, ENABLE_ICU1)
+ FAST_INTR(7,fastintr7, ENABLE_ICU1)
+ FAST_INTR(8,fastintr8, ENABLE_ICU1_AND_2)
+ FAST_INTR(9,fastintr9, ENABLE_ICU1_AND_2)
+ FAST_INTR(10,fastintr10, ENABLE_ICU1_AND_2)
+ FAST_INTR(11,fastintr11, ENABLE_ICU1_AND_2)
+ FAST_INTR(12,fastintr12, ENABLE_ICU1_AND_2)
+ FAST_INTR(13,fastintr13, ENABLE_ICU1_AND_2)
+ FAST_INTR(14,fastintr14, ENABLE_ICU1_AND_2)
+ FAST_INTR(15,fastintr15, ENABLE_ICU1_AND_2)
+ INTR(0,intr0, IO_ICU1, ENABLE_ICU1, al)
+ INTR(1,intr1, IO_ICU1, ENABLE_ICU1, al)
+ INTR(2,intr2, IO_ICU1, ENABLE_ICU1, al)
+ INTR(3,intr3, IO_ICU1, ENABLE_ICU1, al)
+ INTR(4,intr4, IO_ICU1, ENABLE_ICU1, al)
+ INTR(5,intr5, IO_ICU1, ENABLE_ICU1, al)
+ INTR(6,intr6, IO_ICU1, ENABLE_ICU1, al)
+ INTR(7,intr7, IO_ICU1, ENABLE_ICU1, al)
+ INTR(8,intr8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(9,intr9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(10,intr10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(11,intr11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(12,intr12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(13,intr13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(14,intr14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(15,intr15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
MCOUNT_LABEL(eintr)
.data
diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
index a7b457415a494..611a895fd1b3d 100644
--- a/sys/i386/i386/exception.s
+++ b/sys/i386/i386/exception.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exception.s,v 1.16 1996/04/12 12:22:14 phk Exp $
+ * $Id: exception.s,v 1.17 1996/05/02 09:34:20 phk Exp $
*/
#include "npx.h" /* NNPX */
@@ -41,6 +41,7 @@
#include <machine/trap.h> /* trap codes */
#include <sys/syscall.h> /* syscall numbers */
#include <machine/asmacros.h> /* miscellaneous macros */
+#include <sys/cdefs.h> /* CPP macros */
#define KDSEL 0x10 /* kernel data selector */
#define SEL_RPL_MASK 0x0003
@@ -54,7 +55,7 @@
/*
* Trap and fault vector routines
*/
-#define IDTVEC(name) ALIGN_TEXT ; .globl _X/**/name ; _X/**/name:
+#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(_X,name); __CONCAT(_X,name):
#define TRAP(a) pushl $(a) ; jmp _alltraps
/*
@@ -69,8 +70,8 @@
testb $SEL_RPL_MASK,4(%esp) ; \
jne 1f ; \
ss ; \
- .globl bdb_/**/name/**/_ljmp ; \
-bdb_/**/name/**/_ljmp: ; \
+ .globl __CONCAT(__CONCAT(bdb_,name),_ljmp); \
+__CONCAT(__CONCAT(bdb_,name),_ljmp): \
ljmp $0,$0 ; \
1:
#else
@@ -123,8 +124,8 @@ IDTVEC(fpu)
* interrupts, but now it is fairly easy - mask nested ones the
* same as SWI_AST's.
*/
- pushl $0 /* dumby error code */
- pushl $0 /* dumby trap type */
+ pushl $0 /* dummy error code */
+ pushl $0 /* dummy trap type */
pushal
pushl %ds
pushl %es /* now the stack frame is a trap frame */
diff --git a/sys/i386/i386/microtime.s b/sys/i386/i386/microtime.s
index ab644adf21a59..884a809e794f6 100644
--- a/sys/i386/i386/microtime.s
+++ b/sys/i386/i386/microtime.s
@@ -32,7 +32,7 @@
* SUCH DAMAGE.
*
* from: Steve McCanne's microtime code
- * $Id: microtime.s,v 1.11 1995/11/29 19:57:03 wollman Exp $
+ * $Id: microtime.s,v 1.12 1995/12/24 08:10:43 davidg Exp $
*/
#include <machine/asmacros.h>
@@ -49,129 +49,135 @@ ENTRY(microtime)
testl %ecx, %ecx
jne pentium_microtime
#else
- xorl %ecx, %ecx # clear ecx
+ xorl %ecx, %ecx /* clear ecx */
#endif
- movb $TIMER_SEL0|TIMER_LATCH, %al # prepare to latch
+ movb $TIMER_SEL0|TIMER_LATCH, %al /* prepare to latch */
- cli # disable interrupts
+ cli /* disable interrupts */
- outb %al, $TIMER_MODE # latch timer 0's counter
- inb $TIMER_CNTR0, %al # read counter value, LSB first
+ outb %al, $TIMER_MODE /* latch timer 0's counter */
+ inb $TIMER_CNTR0, %al /* read counter value, LSB first */
movb %al, %cl
inb $TIMER_CNTR0, %al
movb %al, %ch
- # Now check for counter overflow. This is tricky because the
- # timer chip doesn't let us atomically read the current counter
- # value and the output state (i.e., overflow state). We have
- # to read the ICU interrupt request register (IRR) to see if the
- # overflow has occured. Because we lack atomicity, we use
- # the (very accurate) heuristic that we only check for
- # overflow if the value read is close to the interrupt period.
- # E.g., if we just checked the IRR, we might read a non-overflowing
- # value close to 0, experience overflow, then read this overflow
- # from the IRR, and mistakenly add a correction to the "close
- # to zero" value.
- #
- # We compare the counter value to the prepared overflow threshold.
- # If the counter value is less than this, we assume the counter
- # didn't overflow between disabling timer interrupts and latching
- # the counter value above. For example, we assume that interrupts
- # are enabled when we are called (or were disabled just a few
- # cycles before we are called and that the instructions before the
- # "cli" are fast) and that the "cli" and "outb" instructions take
- # less than 10 timer cycles to execute. The last assumption is
- # very safe.
- #
- # Otherwise, the counter might have overflowed. We check for this
- # condition by reading the interrupt request register out of the ICU.
- # If it overflowed, we add in one clock period.
- #
- # The heuristic is "very accurate" because it works 100% if we're
- # called with interrupts enabled. Otherwise, it might not work.
- # Currently, only siointrts() calls us with interrupts disabled, so
- # the problem can be avoided at some cost to the general case. The
- # costs are complications in callers to disable interrupts in
- # IO_ICU1 and extra reads of the IRR forced by a conservative
- # overflow threshold.
- #
- # In 2.0, we are called at splhigh() from mi_switch(), so we have
- # to allow for the overflow bit being in ipending instead of in
- # the IRR. Our caller may have executed many instructions since
- # ipending was set, so the heuristic for the IRR is inappropriate
- # for ipending. However, we don't need another heuristic, since
- # the "cli" suffices to lock ipending.
-
- movl _timer0_max_count, %edx # prepare for 2 uses
-
- testb $IRQ0, _ipending # is a soft timer interrupt pending?
+ /*
+ * Now check for counter overflow. This is tricky because the
+ * timer chip doesn't let us atomically read the current counter
+ * value and the output state (i.e., overflow state). We have
+ * to read the ICU interrupt request register (IRR) to see if the
+ * overflow has occured. Because we lack atomicity, we use
+ * the (very accurate) heuristic that we only check for
+ * overflow if the value read is close to the interrupt period.
+ * E.g., if we just checked the IRR, we might read a non-overflowing
+ * value close to 0, experience overflow, then read this overflow
+ * from the IRR, and mistakenly add a correction to the "close
+ * to zero" value.
+ *
+ * We compare the counter value to the prepared overflow threshold.
+ * If the counter value is less than this, we assume the counter
+ * didn't overflow between disabling timer interrupts and latching
+ * the counter value above. For example, we assume that interrupts
+ * are enabled when we are called (or were disabled just a few
+ * cycles before we are called and that the instructions before the
+ * "cli" are fast) and that the "cli" and "outb" instructions take
+ * less than 10 timer cycles to execute. The last assumption is
+ * very safe.
+ *
+ * Otherwise, the counter might have overflowed. We check for this
+ * condition by reading the interrupt request register out of the ICU.
+ * If it overflowed, we add in one clock period.
+ *
+ * The heuristic is "very accurate" because it works 100% if we're
+ * called with interrupts enabled. Otherwise, it might not work.
+ * Currently, only siointrts() calls us with interrupts disabled, so
+ * the problem can be avoided at some cost to the general case. The
+ * costs are complications in callers to disable interrupts in
+ * IO_ICU1 and extra reads of the IRR forced by a conservative
+ * overflow threshold.
+ *
+ * In 2.0, we are called at splhigh() from mi_switch(), so we have
+ * to allow for the overflow bit being in ipending instead of in
+ * the IRR. Our caller may have executed many instructions since
+ * ipending was set, so the heuristic for the IRR is inappropriate
+ * for ipending. However, we don't need another heuristic, since
+ * the "cli" suffices to lock ipending.
+ */
+
+ movl _timer0_max_count, %edx /* prepare for 2 uses */
+
+ testb $IRQ0, _ipending /* is a soft timer interrupt pending? */
jne overflow
- # Do we have a possible overflow condition?
+ /* Do we have a possible overflow condition? */
cmpl _timer0_overflow_threshold, %ecx
jbe 1f
- inb $IO_ICU1, %al # read IRR in ICU
- testb $IRQ0, %al # is a hard timer interrupt pending?
+ inb $IO_ICU1, %al /* read IRR in ICU */
+ testb $IRQ0, %al /* is a hard timer interrupt pending? */
je 1f
overflow:
- subl %edx, %ecx # some intr pending, count timer down through 0
+ subl %edx, %ecx /* some intr pending, count timer down through 0 */
1:
- # Subtract counter value from max count since it is a count-down value.
+ /*
+ * Subtract counter value from max count since it is a count-down value.
+ */
subl %ecx, %edx
- # Adjust for partial ticks.
+ /* Adjust for partial ticks. */
addl _timer0_prescaler_count, %edx
- # To divide by 1.193200, we multiply by 27465 and shift right by 15.
- #
- # The multiplier was originally calculated to be
- #
- # 2^18 * 1000000 / 1193200 = 219698.
- #
- # The frequency is 1193200 to be compatible with rounding errors in
- # the calculation of the usual maximum count. 2^18 is the largest
- # power of 2 such that multiplying `i' by it doesn't overflow for i
- # in the range of interest ([0, 11932 + 5)). We adjusted the
- # multiplier a little to minimise the average of
- #
- # fabs(i / 1.1193200 - ((multiplier * i) >> 18))
- #
- # for i in the range and then removed powers of 2 to speed up the
- # multiplication and to avoid overflow for i outside the range
- # (i may be as high as 2^17 if the timer is programmed to its
- # maximum maximum count). The absolute error is less than 1 for
- # all i in the range.
+ /*
+ * To divide by 1.193200, we multiply by 27465 and shift right by 15.
+ *
+ * The multiplier was originally calculated to be
+ *
+ * 2^18 * 1000000 / 1193200 = 219698.
+ *
+ * The frequency is 1193200 to be compatible with rounding errors in
+ * the calculation of the usual maximum count. 2^18 is the largest
+ * power of 2 such that multiplying `i' by it doesn't overflow for i
+ * in the range of interest ([0, 11932 + 5)). We adjusted the
+ * multiplier a little to minimise the average of
+ *
+ * fabs(i / 1.1193200 - ((multiplier * i) >> 18))
+ *
+ * for i in the range and then removed powers of 2 to speed up the
+ * multiplication and to avoid overflow for i outside the range
+ * (i may be as high as 2^17 if the timer is programmed to its
+ * maximum maximum count). The absolute error is less than 1 for
+ * all i in the range.
+ */
#if 0
- imul $27645, %edx # 25 cycles on a 486
+ imul $27645, %edx /* 25 cycles on a 486 */
#else
- leal (%edx,%edx,2), %eax # a = 3 2 cycles on a 486
- leal (%edx,%eax,4), %eax # a = 13 2
- movl %eax, %ecx # c = 13 1
- shl $5, %eax # a = 416 2
- addl %ecx, %eax # a = 429 1
- leal (%edx,%eax,8), %eax # a = 3433 2
- leal (%edx,%eax,8), %eax # a = 27465 2 (total 12 cycles)
+ leal (%edx,%edx,2), %eax /* a = 3 2 cycles on a 486 */
+ leal (%edx,%eax,4), %eax /* a = 13 2 */
+ movl %eax, %ecx /* c = 13 1 */
+ shl $5, %eax /* a = 416 2 */
+ addl %ecx, %eax /* a = 429 1 */
+ leal (%edx,%eax,8), %eax /* a = 3433 2 */
+ leal (%edx,%eax,8), %eax /* a = 27465 2 (total 12 cycles) */
#endif /* 0 */
shr $15, %eax
common_microtime:
- addl _time+4, %eax # usec += time.tv_sec
- movl _time, %edx # sec = time.tv_sec
+ addl _time+4, %eax /* usec += time.tv_sec */
+ movl _time, %edx /* sec = time.tv_sec */
- sti # enable interrupts
+ sti /* enable interrupts */
- cmpl $1000000, %eax # usec valid?
+ cmpl $1000000, %eax /* usec valid? */
jb 1f
- subl $1000000, %eax # adjust usec
- incl %edx # bump sec
+ subl $1000000, %eax /* adjust usec */
+ incl %edx /* bump sec */
1:
- movl 4(%esp), %ecx # load timeval pointer arg
- movl %edx, (%ecx) # tvp->tv_sec = sec
- movl %eax, 4(%ecx) # tvp->tv_usec = usec
+ movl 4(%esp), %ecx /* load timeval pointer arg */
+ movl %edx, (%ecx) /* tvp->tv_sec = sec */
+ movl %eax, 4(%ecx) /* tvp->tv_usec = usec */
ret
@@ -179,11 +185,11 @@ common_microtime:
ALIGN_TEXT
pentium_microtime:
cli
- .byte 0x0f, 0x31 # RDTSC
+ .byte 0x0f, 0x31 /* RDTSC */
subl _i586_ctr_bias, %eax
sbbl _i586_ctr_bias+4, %edx
- shldl $I586_CTR_RATE_SHIFT, %eax, %edx # magic suggested by
- shll $I586_CTR_RATE_SHIFT, %eax # math_emulate.c
- divl %ecx # get value in usec
+ shldl $I586_CTR_RATE_SHIFT, %eax, %edx /* magic suggested by */
+ shll $I586_CTR_RATE_SHIFT, %eax /* math_emulate.c */
+ divl %ecx /* get value in usec */
jmp common_microtime
#endif
diff --git a/sys/i386/i386/support.s b/sys/i386/i386/support.s
index 1dbf8ee180cac..0d5bc5dd3f7c8 100644
--- a/sys/i386/i386/support.s
+++ b/sys/i386/i386/support.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: support.s,v 1.34 1996/05/02 14:19:53 phk Exp $
+ * $Id: support.s,v 1.35 1996/05/03 21:01:00 phk Exp $
*/
#include "assym.s" /* system definitions */
@@ -74,11 +74,11 @@ ENTRY(i486_bzero)
movl 4(%esp),%edx
movl 8(%esp),%ecx
xorl %eax,%eax
-/
-/ do 64 byte chunks first
-/
-/ XXX this is probably over-unrolled at least for DX2's
-/
+/*
+ * do 64 byte chunks first
+ *
+ * XXX this is probably over-unrolled at least for DX2's
+ */
2:
cmpl $64,%ecx
jb 3f
@@ -103,9 +103,9 @@ ENTRY(i486_bzero)
jnz 2b
ret
-/
-/ do 16 byte chunks
-/
+/*
+ * do 16 byte chunks
+ */
SUPERALIGN_TEXT
3:
cmpl $16,%ecx
@@ -119,9 +119,9 @@ ENTRY(i486_bzero)
jnz 3b
ret
-/
-/ do 4 byte chunks
-/
+/*
+ * do 4 byte chunks
+ */
SUPERALIGN_TEXT
4:
cmpl $4,%ecx
@@ -132,12 +132,12 @@ ENTRY(i486_bzero)
jnz 4b
ret
-/
-/ do 1 byte chunks
-/ a jump table seems to be faster than a loop or more range reductions
-/
-/ XXX need a const section for non-text
-/
+/*
+ * do 1 byte chunks
+ * a jump table seems to be faster than a loop or more range reductions
+ *
+ * XXX need a const section for non-text
+ */
SUPERALIGN_TEXT
jtab:
.long do0
diff --git a/sys/i386/include/asmacros.h b/sys/i386/include/asmacros.h
index 98633543ded3f..4ecabdf5f2d0c 100644
--- a/sys/i386/include/asmacros.h
+++ b/sys/i386/include/asmacros.h
@@ -30,13 +30,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: asmacros.h,v 1.6 1995/12/29 15:28:53 bde Exp $
+ * $Id: asmacros.h,v 1.7 1996/03/31 04:17:25 bde Exp $
*/
#ifndef _MACHINE_ASMACROS_H_
#define _MACHINE_ASMACROS_H_
#ifdef KERNEL
+#include <sys/cdefs.h>
/* XXX too much duplication in various asm*.h's and gprof.h's */
@@ -44,7 +45,7 @@
#define ALIGN_TEXT .align 2,0x90 /* 4-byte alignment, nop filled */
#define SUPERALIGN_TEXT .align 4,0x90 /* 16-byte alignment (better for 486), nop filled */
-#define GEN_ENTRY(name) ALIGN_TEXT; .globl _/**/name; _/**/name:
+#define GEN_ENTRY(name) ALIGN_TEXT; .globl __CONCAT(_,name); __CONCAT(_,name):
#define NON_GPROF_ENTRY(name) GEN_ENTRY(name)
#ifdef GPROF
diff --git a/sys/i386/isa/icu.s b/sys/i386/isa/icu.s
index f04d72d65f8d3..1107c13b4f88b 100644
--- a/sys/i386/isa/icu.s
+++ b/sys/i386/isa/icu.s
@@ -36,7 +36,7 @@
*
* @(#)icu.s 7.2 (Berkeley) 5/21/91
*
- * $Id: icu.s,v 1.23 1995/07/05 14:35:34 bde Exp $
+ * $Id: icu.s,v 1.24 1996/03/12 05:44:25 nate Exp $
*/
/*
@@ -290,7 +290,7 @@ vec8:
#define BUILD_VEC(irq_num) \
ALIGN_TEXT ; \
-vec/**/irq_num: ; \
+__CONCAT(vec,irq_num): ; \
int $ICU_OFFSET + (irq_num) ; \
ret
diff --git a/sys/i386/isa/vector.s b/sys/i386/isa/vector.s
index a5056afa851e3..94691f5f7f184 100644
--- a/sys/i386/isa/vector.s
+++ b/sys/i386/isa/vector.s
@@ -1,6 +1,6 @@
/*
* from: vector.s, 386BSD 0.1 unknown origin
- * $Id: vector.s,v 1.18 1996/03/31 03:31:29 bde Exp $
+ * $Id: vector.s,v 1.19 1996/04/11 21:18:47 bde Exp $
*/
#include "opt_auto_eoi.h"
@@ -98,10 +98,10 @@
* loading segregs.
*/
-#define FAST_INTR(irq_num, enable_icus) \
+#define FAST_INTR(irq_num, vec_name, enable_icus) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(fastintr/**/irq_num) ; \
+IDTVEC(vec_name) ; \
pushl %eax ; /* save only call-used registers */ \
pushl %ecx ; \
pushl %edx ; \
@@ -153,12 +153,12 @@ IDTVEC(fastintr/**/irq_num) ; \
MEXITCOUNT ; \
jmp _doreti
-#define INTR(irq_num, icu, enable_icus, reg) \
+#define INTR(irq_num, vec_name, icu, enable_icus, reg) \
.text ; \
SUPERALIGN_TEXT ; \
-IDTVEC(intr/**/irq_num) ; \
- pushl $0 ; /* dumby error code */ \
- pushl $0 ; /* dumby trap type */ \
+IDTVEC(vec_name) ; \
+ pushl $0 ; /* dummy error code */ \
+ pushl $0 ; /* dummy trap type */ \
pushal ; \
pushl %ds ; /* save our data and extra segments ... */ \
pushl %es ; \
@@ -175,7 +175,7 @@ IDTVEC(intr/**/irq_num) ; \
testb $IRQ_BIT(irq_num),%reg ; \
jne 2f ; \
incb _intr_nesting_level ; \
-Xresume/**/irq_num: ; \
+__CONCAT(Xresume,irq_num): ; \
FAKE_MCOUNT(12*4(%esp)) ; /* XXX late to avoid double count */ \
movl _intr_countp + (irq_num) * 4,%eax ; \
incl (%eax) ; \
@@ -208,38 +208,38 @@ Xresume/**/irq_num: ; \
iret
MCOUNT_LABEL(bintr)
- FAST_INTR(0, ENABLE_ICU1)
- FAST_INTR(1, ENABLE_ICU1)
- FAST_INTR(2, ENABLE_ICU1)
- FAST_INTR(3, ENABLE_ICU1)
- FAST_INTR(4, ENABLE_ICU1)
- FAST_INTR(5, ENABLE_ICU1)
- FAST_INTR(6, ENABLE_ICU1)
- FAST_INTR(7, ENABLE_ICU1)
- FAST_INTR(8, ENABLE_ICU1_AND_2)
- FAST_INTR(9, ENABLE_ICU1_AND_2)
- FAST_INTR(10, ENABLE_ICU1_AND_2)
- FAST_INTR(11, ENABLE_ICU1_AND_2)
- FAST_INTR(12, ENABLE_ICU1_AND_2)
- FAST_INTR(13, ENABLE_ICU1_AND_2)
- FAST_INTR(14, ENABLE_ICU1_AND_2)
- FAST_INTR(15, ENABLE_ICU1_AND_2)
- INTR(0, IO_ICU1, ENABLE_ICU1, al)
- INTR(1, IO_ICU1, ENABLE_ICU1, al)
- INTR(2, IO_ICU1, ENABLE_ICU1, al)
- INTR(3, IO_ICU1, ENABLE_ICU1, al)
- INTR(4, IO_ICU1, ENABLE_ICU1, al)
- INTR(5, IO_ICU1, ENABLE_ICU1, al)
- INTR(6, IO_ICU1, ENABLE_ICU1, al)
- INTR(7, IO_ICU1, ENABLE_ICU1, al)
- INTR(8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
- INTR(15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ FAST_INTR(0,fastintr0, ENABLE_ICU1)
+ FAST_INTR(1,fastintr1, ENABLE_ICU1)
+ FAST_INTR(2,fastintr2, ENABLE_ICU1)
+ FAST_INTR(3,fastintr3, ENABLE_ICU1)
+ FAST_INTR(4,fastintr4, ENABLE_ICU1)
+ FAST_INTR(5,fastintr5, ENABLE_ICU1)
+ FAST_INTR(6,fastintr6, ENABLE_ICU1)
+ FAST_INTR(7,fastintr7, ENABLE_ICU1)
+ FAST_INTR(8,fastintr8, ENABLE_ICU1_AND_2)
+ FAST_INTR(9,fastintr9, ENABLE_ICU1_AND_2)
+ FAST_INTR(10,fastintr10, ENABLE_ICU1_AND_2)
+ FAST_INTR(11,fastintr11, ENABLE_ICU1_AND_2)
+ FAST_INTR(12,fastintr12, ENABLE_ICU1_AND_2)
+ FAST_INTR(13,fastintr13, ENABLE_ICU1_AND_2)
+ FAST_INTR(14,fastintr14, ENABLE_ICU1_AND_2)
+ FAST_INTR(15,fastintr15, ENABLE_ICU1_AND_2)
+ INTR(0,intr0, IO_ICU1, ENABLE_ICU1, al)
+ INTR(1,intr1, IO_ICU1, ENABLE_ICU1, al)
+ INTR(2,intr2, IO_ICU1, ENABLE_ICU1, al)
+ INTR(3,intr3, IO_ICU1, ENABLE_ICU1, al)
+ INTR(4,intr4, IO_ICU1, ENABLE_ICU1, al)
+ INTR(5,intr5, IO_ICU1, ENABLE_ICU1, al)
+ INTR(6,intr6, IO_ICU1, ENABLE_ICU1, al)
+ INTR(7,intr7, IO_ICU1, ENABLE_ICU1, al)
+ INTR(8,intr8, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(9,intr9, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(10,intr10, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(11,intr11, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(12,intr12, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(13,intr13, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(14,intr14, IO_ICU2, ENABLE_ICU1_AND_2, ah)
+ INTR(15,intr15, IO_ICU2, ENABLE_ICU1_AND_2, ah)
MCOUNT_LABEL(eintr)
.data