	IFND	EXEC_ABLES_I
EXEC_ABLES_I	EQU	1
**
**	$Filename: exec/ables.i $
**	$Release: 1.3 $
**
**	
**
**	(C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
**	    All Rights Reserved
**

	IFND	EXEC_TYPES_I
	INCLUDE	"exec/types.i"
	ENDC	; EXEC_TYPES_I

	IFND	EXEC_EXECBASE_I
	INCLUDE	"exec/execbase.i"
	ENDC	; EXEC_EXECBASE_I


*----------------------------------------------------------------
*
*   Interrupt Exclusion Macros
*
*----------------------------------------------------------------

INT_ABLES	MACRO	; externals for dis/enable
	XREF	_intena
	ENDM


DISABLE	MACRO	; [scratchReg]
	IFC	'\1',''
	MOVE.W	#$04000,(_intena)	*(NOT IF_SETCLR)+IF_INTEN
	ADDQ.B	#1,(IDNestCnt,a6)
	ENDC
	IFNC	'\1',''
	MOVEA.L	(4).w,\1
	MOVE.W	#$04000,(_intena)	*(NOT IF_SETCLR)+IF_INTEN
	ADDQ.B	#1,(IDNestCnt,\1)
	ENDC
	ENDM


ENABLE	MACRO	; [scratchReg]
	IFC	'\1',''
	SUBQ.B	#1,(IDNestCnt,a6)
	BGE.S	ENABLE\@
	MOVE.W	#$0C000,(_intena)	*IF_SETCLR+IF_INTEN
ENABLE\@:
	ENDC
	IFNC	'\1',''
	MOVEA.L	(4).w,\1
	SUBQ.B	#1,(IDNestCnt,\1)
	BGE.S	ENABLE\@
	MOVE.W	#$0C000,(_intena)
ENABLE\@:
	ENDC
	ENDM


*----------------------------------------------------------------
*
*   Tasking Exclusion Macros
*
*----------------------------------------------------------------

TASK_ABLES	MACRO
*	    INCLUDE "execbase.i" for TDNestCnt offset
	XREF	_LVOPermit
	ENDM


FORBID	MACRO
	IFC	'\1',''
	ADDQ.B	#1,(TDNestCnt,A6)
	ENDC
	IFNC	'\1',''
	MOVEA.L	(4).w,\1
	ADDQ.B	#1,(TDNestCnt,\1)
	ENDC
	ENDM


PERMIT	MACRO
	IFC	'\1',''
	JSR	(_LVOPermit,A6)
	ENDC
	IFNC	'\1',''
	MOVE.L	A6,-(SP)
	MOVEA.L	(4).w,A6
	JSR	(_LVOPermit,A6)
	MOVE.L	(SP)+,A6
	ENDC
	ENDM

	ENDC	; EXEC_ABLES_I
