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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [sing-op_call.s43] - Diff between revs 111 and 128

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 111 Rev 128
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"

powered by: WebSVN 2.1.0

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