97 lines
2.0 KiB
C
97 lines
2.0 KiB
C
/* $Id: debug.h,v 1.4 1993/08/02 17:52:30 mycroft Exp $ */
|
|
|
|
/* #define SHOW_A_LOT */
|
|
|
|
#ifdef INTR_DEBUG
|
|
#define INTRLOCAL(label) label
|
|
#else /* not INTR_DEBUG */
|
|
#define INTRLOCAL(label) L/**/label
|
|
#endif /* INTR_DEBUG */
|
|
|
|
#define BDBTRAP(name) \
|
|
ss ; \
|
|
cmpb $0,_bdb_exists ; \
|
|
je 1f ; \
|
|
testb $SEL_RPL_MASK,4(%esp) ; \
|
|
jne 1f ; \
|
|
ss ; \
|
|
bdb_/**/name/**/_ljmp: ; \
|
|
ljmp $0,$0 ; \
|
|
1:
|
|
|
|
#ifdef INTR_DEBUG
|
|
#define COUNT_EVENT(group, event) incl (group) + (event) * 4
|
|
#else /* not INTR_DEBUG */
|
|
#define COUNT_EVENT(group, event)
|
|
#endif /* INTR_DEBUG */
|
|
|
|
#define COUNT_INTR(group, event) incl (group) + (event) * 4
|
|
|
|
#ifdef SHOW_A_LOT
|
|
|
|
#define GREEN 0x27 /* 0x27 for true green, 0x07 for mono */
|
|
#define CLI_STI_X 63
|
|
#define CPL_X 46
|
|
#define IMEN_X 64
|
|
#define IPENDING_X 29
|
|
#define RED 0x47 /* 0x47 for true red, 0x70 for mono */
|
|
|
|
#define SHOW_BIT(bit) ; \
|
|
movl %ecx,%eax ; \
|
|
shr $bit,%eax ; \
|
|
andl $1,%eax ; \
|
|
movb bit_colors(%eax),%al ; \
|
|
movb %al,bit * 2 + 1(%ebx)
|
|
|
|
#define SHOW_BITS(var, screen_offset) ; \
|
|
pushl %ebx ; \
|
|
pushl %ecx ; \
|
|
movl _Crtat,%ebx ; \
|
|
addl $screen_offset * 2,%ebx ; \
|
|
movl _/**/var,%ecx ; \
|
|
call show_bits ; \
|
|
popl %ecx ; \
|
|
popl %ebx
|
|
|
|
#define SHOW_CLI \
|
|
COUNT_EVENT(_intrcnt_show, 0) ; \
|
|
pushl %eax ; \
|
|
movl _Crtat,%eax ; \
|
|
movb $RED,CLI_STI_X * 2 + 1(%eax) ; \
|
|
popl %eax
|
|
|
|
#define SHOW_CPL \
|
|
COUNT_EVENT(_intrcnt_show, 1) ; \
|
|
SHOW_BITS(cpl, CPL_X) ; \
|
|
|
|
#define SHOW_IMEN \
|
|
COUNT_EVENT(_intrcnt_show, 2) ; \
|
|
SHOW_BITS(imen, IMEN_X)
|
|
|
|
#define SHOW_IPENDING \
|
|
COUNT_EVENT(_intrcnt_show, 3) ; \
|
|
SHOW_BITS(ipending, IPENDING_X)
|
|
|
|
#define SHOW_STI \
|
|
COUNT_EVENT(_intrcnt_show, 4) ; \
|
|
pushl %eax ; \
|
|
movl _Crtat,%eax ; \
|
|
movb $GREEN,CLI_STI_X * 2 + 1(%eax) ; \
|
|
popl %eax
|
|
|
|
#else /* not SHOW_A_LOT */
|
|
|
|
#define SHOW_CLI COUNT_EVENT(_intrcnt_show, 0)
|
|
#define SHOW_CPL COUNT_EVENT(_intrcnt_show, 1)
|
|
#define SHOW_IMEN COUNT_EVENT(_intrcnt_show, 2)
|
|
#define SHOW_IPENDING COUNT_EVENT(_intrcnt_show, 3)
|
|
#define SHOW_STI COUNT_EVENT(_intrcnt_show, 4)
|
|
|
|
#endif /* SHOW_A_LOT */
|
|
|
|
.data
|
|
.globl _bdb_exists
|
|
_bdb_exists:
|
|
.long 0
|
|
.text
|