Datasheet

Chapter 6 XGATE (S12XGATEV2)
MC9S12XDP512 Data Sheet, Rev. 2.21
Freescale Semiconductor 293
;###########################################
;# INITIALIZE XGATE #
;###########################################
INIT_XGATE MOVW #XGMCTL_CLEAR , XGMCTL;clear all XGMCTL bits
INIT_XGATE_BUSY_LOOP TST XGCHID ;wait until current thread is finished
BNE INIT_XGATE_BUSY_LOOP
LDX #XGIF ;clear all channel interrupt flags
LDD #$FFFF
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
MOVW #XGATE_VECTORS_XG, XGVBR;set vector base register
MOVW #$FF00, XGSWT ;clear all software triggers
;###########################################
;# INITIALIZE XGATE VECTOR TABLE #
;###########################################
LDAA #128 ;build XGATE vector table
LDY #XGATE_VECTORS
INIT_XGATE_VECTAB_LOOP MOVW #XGATE_DUMMY_ISR_XG, 4,Y+
DBNE A, INIT_XGATE_VECTAB_LOOP
MOVW #XGATE_CODE_XG, RAM_START+(2*SCI_VEC)
MOVW #XGATE_DATA_XG, RAM_START+(2*SCI_VEC)+2
;###########################################
;# COPY XGATE CODE #
;###########################################
COPY_XGATE_CODE LDX #XGATE_DATA_FLASH
COPY_XGATE_CODE_LOOP MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
CPX #XGATE_CODE_FLASH_END
BLS COPY_XGATE_CODE_LOOP
;###########################################
;# START XGATE #
;###########################################
START_XGATE MOVW #XGMCTL_ENABLE, XGMCTL;enable XGATE
BRA *
;###########################################
;# DUMMY INTERRUPT SERVICE ROUTINE #
;###########################################
DUMMY_ISR RTI
CPU XGATE