OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openmsp430/trunk/core/sim
    from Rev 122 to Rev 128
    Reverse comparison

Rev 122 → Rev 128

rtl_sim/run Property changes : Modified: svn:ignore ## -3,3 +3,4 ## stimulus.v *.vcd simv +log Index: rtl_sim/src/sing-op_call.v =================================================================== --- rtl_sim/src/sing-op_call.v (revision 122) +++ rtl_sim/src/sing-op_call.v (revision 128) @@ -41,6 +41,8 @@ $display(" ==============================================="); repeat(5) @(posedge mclk); stimulus_done = 0; + + /* -------------- TEST INSTRUCTION WITH STANDARD REGISTERS AS ARGUMENT ------------------- */ // Initialization @(r15==16'h1000); @@ -91,6 +93,30 @@ if (r5 !==16'h6789) tb_error("====== CALL (&EDE mode): R5 value ====="); + /* -------------- TEST INSTRUCTION WITH SR AS ARGUMENT ------------------- */ + + + // Addressing mode: SR + @(r15==16'h9000); + // --> not tested because it would require the cpu to execute from the data memory + + + // Addressing mode: @SR + @(r15==16'hA000); + if (r5 !==16'habcd) tb_error("====== CALL @SR : R5 value ====="); + + + // Addressing mode: @SR+ + @(r15==16'hB000); + if (r5 !==16'h159a) tb_error("====== CALL @SR+ : R5 value ====="); + + + // Addressing mode: x(SR) + @(r15==16'hC000); + if (r5 !==16'h9abc) tb_error("====== CALL x(SR) : R5 value ====="); + if (r6 !==16'hef01) tb_error("====== CALL x(SR) : R6 value ====="); + if (r7 !==16'h2345) tb_error("====== CALL x(SR) : R7 value ====="); + stimulus_done = 1; end
/rtl_sim/src/sing-op_call.s43
48,6 → 48,8
.global main
 
main:
/* -------------- TEST INSTRUCTION WITH STANDARD REGISTERS AS ARGUMENT ------------------- */
 
# Initialization
#------------------------
 
139,6 → 141,95
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:
nop
176,8 → 267,13
mov #0x6789, r5
ret
 
TEST_ROUTINE_SPECIAL_aRNi:
mov #0x159a, r5
sub #0x000a, r1
ret
 
 
 
/* ---------------------- INTERRUPT VECTORS --------------- */
 
.section .vectors, "a"
/rtl_sim/bin/template.def
1,6 → 1,6
/* Default linker script, for normal executables */
OUTPUT_FORMAT("elf32-msp430","elf32-msp430","elf32-msp430")
OUTPUT_ARCH(msp:110)
OUTPUT_ARCH(msp430)
MEMORY
{
text (rx) : ORIGIN = PMEM_BASE, LENGTH = PMEM_SIZE

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.