;======================================================================
;
;	SetCPU V1.60
;	by Dave Haynie, April 13, 1990
;	Released to the Public Domain
;
;	Assembly Header File
;
;	All assembly files need this included
;
;
;       Modified for 68040 support 16 dec 1991, Greg Tibbs
;       for use with SoftBoot V2.27 & later
;
;======================================================================


_PFLUSHA040	macro	
		dc.w	$f518
		endm

_CPUSHA040	macro
		dc.w	$f4f8
		endm

_CINVA040		macro	
		dc.w	$f4d8
		endm

_MOVEC		macro	
		ifc '\1','tc'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	tc,d0
			dc.w	$0003
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	tc,d1
			dc.w	$1003
			mexit
		    endc
		endc
		ifc '\2','tc'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,tc
			dc.w	$0003
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,tc
			dc.w	$1003
			mexit
		    endc
		endc
		ifc '\1','cacr'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	cacr,d0
			dc.w	$0002
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	cacr,d1
			dc.w	$1002
			mexit
		    endc
		endc
		ifc '\2','cacr'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,cacr
			dc.w	$0002
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,cacr
			dc.w	$1002
			mexit
		    endc
		endc
		ifc '\1','itt0'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	itt0,d0
			dc.w	$0004
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	itt0,d1
			dc.w	$1004
			mexit
		    endc
		endc
		ifc '\2','itt0'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,itt0
			dc.w	$0004
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,itt0
			dc.w	$1004
			mexit
		    endc
		endc
		ifc '\1','itt1'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	itt1,d0
			dc.w	$0005
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	itt1,d1
			dc.w	$1005
			mexit
		    endc
		endc
		ifc '\2','itt1'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,itt1
			dc.w	$0005
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,itt1
			dc.w	$1005
			mexit
		    endc
		endc
		ifc '\1','dtt0'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	dtt0,d0
			dc.w	$0006
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	dtt0,d1
			dc.w	$1006
			mexit
		    endc
		endc
		ifc '\2','dtt0'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,dtt0
			dc.w	$0006
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,dtt0
			dc.w	$1006
			mexit
		    endc
		endc
		ifc '\1','dtt1'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	dtt1,d0
			dc.w	$0007
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	dtt1,d1
			dc.w	$1007
			mexit
		    endc
		endc
		ifc '\2','dtt1'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,dtt1
			dc.w	$0007
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,dtt1
			dc.w	$1007
			mexit
		    endc
		endc
		ifc '\1','srp'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	srp,d0
			dc.w	$0807
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	srp,d1
			dc.w	$1807
			mexit
		    endc
		endc
		ifc '\2','srp'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,srp
			dc.w	$0807
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,srp
			dc.w	$1807
			mexit
		    endc
		endc
		ifc '\1','urp'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	urp,d0
			dc.w	$0806
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	urp,d1
			dc.w	$1806
			mexit
		    endc
		endc
		ifc '\2','urp'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,urp
			dc.w	$0806
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,urp
			dc.w	$1806
			mexit
		    endc
		endc
		ifc '\1','vbr'
		    ifc '\2','d0'
			dc.w	$4e7a	; MOVEC	vbr,d0
			dc.w	$0801
			mexit
		    endc
		    ifc '\2','d1'
			dc.w	$4e7a	; MOVEC	vbr,d1
			dc.w	$1801
			mexit
		    endc
		endc
		ifc '\2','vbr'
		    ifc '\1','d0'
			dc.w	$4e7b	; MOVEC d0,vbr
			dc.w	$0801
			mexit
		    endc
		    ifc '\1','d1'
			dc.w	$4e7b	; MOVEC d1,vbr
			dc.w	$1801
			mexit
		    endc
		endc
	endm

_PMOVE		macro	
		ifc '\1','tc'
		    ifc '\2','(sp)'
			dc.w	$f017	; PMOVE tc,(sp)
			dc.w	$4200
			mexit
		    endc
		    ifc '\2','(a0)'
			dc.w	$f010	; PMOVE tc,(a0)
			dc.w	$4200
			mexit
		    endc
		endc
		ifc '\1','crp'
		    ifc '\2','(a0)'
			dc.w	$f010	; PMOVE	crp,(a0)
			dc.w	$4e00
			mexit
		    endc
		endc
		ifc '\1','(a0)'
		    ifc '\2','crp'
			dc.w	$f010	; PMOVE	(a0),crp
			dc.w	$4c00
			mexit
		    endc
		    ifc '\2','tc'
			dc.w	$f010	; PMOVE (a0),tc
			dc.w	$4000
			mexit
		    endc
		    ifc '\2','tt0'
			dc.w	$f010	; PMOVE	(a0),tt0
			dc.w	$0800
			mexit
		    endc
		    ifc '\2','tt1'
			dc.w	$f010	; PMOVE (a0),tt1
			dc.w	$0c00
			mexit
		    endc
		endc
		ifc '\1','(a1)'
		    ifc '\2','crp'
			dc.w	$f011	; PMOVE (a1),crp
			dc.w	$4c00
			mexit
		    endc
		endc
		endm

_PFLUSHA030	macro	
		dc.w	$f000
		dc.w	$2400
		endm


CALLSYS		macro   *
		jsr     LVO\1(A6)
		endm

PFLUSHA_	macro	*
		dc.w	$f000
		dc.w	$2400
		endm

CIB_ENABLE	EQU	0
CIB_FREEZE	EQU	1
CIB_ENTRY	EQU	2
CIB_CLEAR	EQU	3
CIB_BURST	EQU	4

CDB_ENABLE	EQU	8
CDB_FREEZE	EQU	9
CDB_ENTRY	EQU	10
CDB_CLEAR	EQU	11
CDB_BURST	EQU	12
CDB_WALLOC	EQU	13

CIB_ENABLE40	EQU	15
CDB_ENABLE40	EQU	31

AFB_68020      EQU     1
AFB_68030	EQU	2
AFB_68040	EQU	3
AFB_68882	EQU	5

ATNFLGS		EQU	$129

LVOSupervisor	EQU	-30
LVOSuperState	EQU	-150
LVOFindTask	EQU	-294
LVOAllocTrap	EQU	-342
LVOFreeTrap	EQU	-348
LVOCacheClearU	EQU	-636
LVOCacheControl	EQU	-648

ANYCREG		EQU	$00dff010
