Line 27... |
Line 27... |
/* */
|
/* */
|
/* Author(s): */
|
/* Author(s): */
|
/* - Olivier Girard, olgirard@gmail.com */
|
/* - Olivier Girard, olgirard@gmail.com */
|
/* */
|
/* */
|
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
/* $Rev: 111 $ */
|
/* $Rev: 128 $ */
|
/* $LastChangedBy: olivier.girard $ */
|
/* $LastChangedBy: olivier.girard $ */
|
/* $LastChangedDate: 2011-05-20 22:39:02 +0200 (Fri, 20 May 2011) $ */
|
/* $LastChangedDate: 2011-12-16 22:05:46 +0100 (Fri, 16 Dec 2011) $ */
|
/*===========================================================================*/
|
/*===========================================================================*/
|
|
|
.set DMEM_BASE, (__data_start )
|
.set DMEM_BASE, (__data_start )
|
.set DMEM_200, (__data_start+0x00)
|
.set DMEM_200, (__data_start+0x00)
|
.set DMEM_212, (__data_start+0x12)
|
.set DMEM_212, (__data_start+0x12)
|
Line 46... |
Line 46... |
.set DMEM_300, (__data_start+0x100)
|
.set DMEM_300, (__data_start+0x100)
|
|
|
.global main
|
.global main
|
|
|
main:
|
main:
|
|
/* -------------- TEST INSTRUCTION WITH STANDARD REGISTERS AS ARGUMENT ------------------- */
|
|
|
# Initialization
|
# Initialization
|
#------------------------
|
#------------------------
|
|
|
mov #DMEM_252, r1 ;# Initialize stack pointer
|
mov #DMEM_252, r1 ;# Initialize stack pointer
|
mov #0x0000, r5 ;# Initialize R5
|
mov #0x0000, r5 ;# Initialize R5
|
Line 137... |
Line 139... |
call &aEDE_220 ;# CALL TEST_ROUTINE_aEDE
|
call &aEDE_220 ;# CALL TEST_ROUTINE_aEDE
|
|
|
mov #0x8000, r15
|
mov #0x8000, r15
|
|
|
|
|
|
/* -------------- TEST INSTRUCTION WITH SR AS ARGUMENT ------------------- */
|
|
|
|
|
|
# Addressing mode: SR
|
|
#------------------------
|
|
|
|
mov #0x0000, r5
|
|
nop
|
|
#call r1 ;# NOT VALID BECAUSE IT JUMPS IN THE DATA MEMORY
|
|
nop ;# WHICH IS NOT EXECUTABLE
|
|
|
|
mov #0x9000, r15
|
|
|
|
|
|
# Addressing mode: @SR
|
|
#------------------------
|
|
|
|
mov #DMEM_252, r1 ;# Initialize stack pointer
|
|
push #TEST_ROUTINE_RN
|
|
push #TEST_ROUTINE_aRN
|
|
push #TEST_ROUTINE_aRNi
|
|
mov r1, r13 ; backup stack for later
|
|
push #TEST_ROUTINE_N
|
|
push #TEST_ROUTINE_xRN
|
|
push #TEST_ROUTINE_EDE
|
|
push #TEST_ROUTINE_aEDE
|
|
|
|
nop
|
|
mov r13, r1
|
|
mov #0x0000, r5
|
|
nop
|
|
call @r1 ;# CALL #TEST_ROUTINE_N (r5 = 0xabcd)
|
|
nop
|
|
|
|
mov #0xa000, r15
|
|
|
|
|
|
# Addressing mode: @SR+
|
|
#------------------------
|
|
|
|
mov #DMEM_252, r1 ;# Initialize stack pointer
|
|
push #TEST_ROUTINE_SPECIAL_aRNi
|
|
push #TEST_ROUTINE_RN
|
|
push #TEST_ROUTINE_aRN
|
|
push #TEST_ROUTINE_aRNi
|
|
mov r1, r13 ; backup stack for later
|
|
push #TEST_ROUTINE_N
|
|
push #TEST_ROUTINE_xRN
|
|
push #TEST_ROUTINE_EDE
|
|
push #TEST_ROUTINE_aEDE
|
|
|
|
nop
|
|
mov r13, r1
|
|
mov #0x0000, r5
|
|
nop
|
|
call @r1+ ;# CALL #TEST_ROUTINE_N (this has a funny behavior of nested call backward until SPECIAL_aRNi is reached)
|
|
nop
|
|
|
|
mov #0xb000, r15
|
|
|
|
|
|
# Addressing mode: x(SR)
|
|
#------------------------
|
|
|
|
mov #DMEM_252, r1 ;# Initialize stack pointer
|
|
push #TEST_ROUTINE_RN
|
|
push #TEST_ROUTINE_aRN
|
|
push #TEST_ROUTINE_aRNi
|
|
push #TEST_ROUTINE_N
|
|
push #TEST_ROUTINE_xRN
|
|
push #TEST_ROUTINE_EDE
|
|
push #TEST_ROUTINE_aEDE
|
|
nop
|
|
mov #0x0000, r5
|
|
mov #0x0000, r6
|
|
mov #0x0000, r7
|
|
call 4(r1) ;# CALL #TEST_ROUTINE_EDE (r7 = 0x2345)
|
|
mov r5, r7
|
|
mov #0x0000, r5
|
|
call 6(r1) ;# CALL #TEST_ROUTINE_xRN (r6 = 0xef01)
|
|
mov r5, r6
|
|
mov #0x0000, r5
|
|
call 10(r1) ;# CALL #TEST_ROUTINE_aRNi (r5 = 0x9abc)
|
|
nop
|
|
|
|
mov #0xc000, r15
|
|
|
|
|
|
|
/* ---------------------- END OF TEST --------------- */
|
/* ---------------------- END OF TEST --------------- */
|
end_of_test:
|
end_of_test:
|
nop
|
nop
|
br #0xffff
|
br #0xffff
|
|
|
Line 174... |
Line 265... |
|
|
TEST_ROUTINE_aEDE:
|
TEST_ROUTINE_aEDE:
|
mov #0x6789, r5
|
mov #0x6789, r5
|
ret
|
ret
|
|
|
|
TEST_ROUTINE_SPECIAL_aRNi:
|
|
mov #0x159a, r5
|
|
sub #0x000a, r1
|
|
ret
|
|
|
|
|
|
|
/* ---------------------- INTERRUPT VECTORS --------------- */
|
/* ---------------------- INTERRUPT VECTORS --------------- */
|
|
|
.section .vectors, "a"
|
.section .vectors, "a"
|