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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [sing-op_push_rom-rd.s43] - Diff between revs 111 and 141

Only display areas with differences | Details | Blame | View Log

Rev 111 Rev 141
/*===========================================================================*/
/*===========================================================================*/
/* Copyright (C) 2001 Authors                                                */
/* Copyright (C) 2001 Authors                                                */
/*                                                                           */
/*                                                                           */
/* This source file may be used and distributed without restriction provided */
/* This source file may be used and distributed without restriction provided */
/* that this copyright statement is not removed from the file and that any   */
/* that this copyright statement is not removed from the file and that any   */
/* derivative work contains the original copyright notice and the associated */
/* derivative work contains the original copyright notice and the associated */
/* disclaimer.                                                               */
/* disclaimer.                                                               */
/*                                                                           */
/*                                                                           */
/* This source file is free software; you can redistribute it and/or modify  */
/* This source file is free software; you can redistribute it and/or modify  */
/* it under the terms of the GNU Lesser General Public License as published  */
/* it under the terms of the GNU Lesser General Public License as published  */
/* by the Free Software Foundation; either version 2.1 of the License, or    */
/* by the Free Software Foundation; either version 2.1 of the License, or    */
/* (at your option) any later version.                                       */
/* (at your option) any later version.                                       */
/*                                                                           */
/*                                                                           */
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
/* License for more details.                                                 */
/* License for more details.                                                 */
/*                                                                           */
/*                                                                           */
/* You should have received a copy of the GNU Lesser General Public License  */
/* You should have received a copy of the GNU Lesser General Public License  */
/* along with this source; if not, write to the Free Software Foundation,    */
/* along with this source; if not, write to the Free Software Foundation,    */
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
/*                                                                           */
/*                                                                           */
/*===========================================================================*/
/*===========================================================================*/
/*                     PUSH:   DATA READ ACCESS FROM ROM                     */
/*                     PUSH:   DATA READ ACCESS FROM ROM                     */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Test the PUSH instruction with all addressing modes making a read access  */
/* Test the PUSH instruction with all addressing modes making a read access  */
/* to the ROM.                                                               */
/* to the ROM.                                                               */
/*                                                                           */
/*                                                                           */
/* Author(s):                                                                */
/* Author(s):                                                                */
/*             - Olivier Girard,    olgirard@gmail.com                       */
/*             - Olivier Girard,    olgirard@gmail.com                       */
/*                                                                           */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* $Rev: 111 $                                                                */
/* $Rev: 141 $                                                                */
/* $LastChangedBy: olivier.girard $                                          */
/* $LastChangedBy: olivier.girard $                                          */
/* $LastChangedDate: 2011-05-20 22:39:02 +0200 (Fri, 20 May 2011) $          */
/* $LastChangedDate: 2012-05-05 23:22:06 +0200 (Sat, 05 May 2012) $          */
/*===========================================================================*/
/*===========================================================================*/
 
 
.set    DMEM_BASE, (__data_start     )
.include "pmem_defs.asm"
.set    DMEM_200,  (__data_start+0x00)
 
.set    DMEM_212,  (__data_start+0x12)
 
.set    DMEM_216,  (__data_start+0x16)
 
.set    DMEM_21A,  (__data_start+0x1A)
 
.set    DMEM_21E,  (__data_start+0x1E)
 
.set    DMEM_220,  (__data_start+0x20)
 
.set    DMEM_222,  (__data_start+0x22)
 
.set    DMEM_224,  (__data_start+0x24)
 
.set    DMEM_230,  (__data_start+0x30)
 
.set    DMEM_240,  (__data_start+0x40)
 
.set    DMEM_250,  (__data_start+0x50)
 
.set    DMEM_252,  (__data_start+0x52)
 
.set    DMEM_300,  (__data_start+0x100)
 
 
 
 
 
.global main
.global main
main:
main:
        /* -------------- TEST INSTRUCTION IN WORD MODE ------------------- */
        /* -------------- TEST INSTRUCTION IN WORD MODE ------------------- */
        # Initialization
        # Initialization
        #------------------------
        #------------------------
        mov     #0x0020, r4        ;# Initialize RAM
        mov     #0x0020, r4        ;# Initialize RAM
        mov   #DMEM_230, r5
        mov   #DMEM_230, r5
clear_mem_loop:
clear_mem_loop:
        clr    0(r5)
        clr    0(r5)
        incd     r5
        incd     r5
        dec      r4
        dec      r4
        jnz     clear_mem_loop
        jnz     clear_mem_loop
        mov   #DMEM_252, r1        ;# Initialize stack pointer
        mov   #DMEM_252, r1        ;# Initialize stack pointer
        mov     #0x1000, r15
        mov     #0x1000, r15
        # Addressing mode: @Rn
        # Addressing mode: @Rn
        #------------------------
        #------------------------
        mov     #data_aRn_0x1234, r4
        mov     #data_aRn_0x1234, r4
        push                     @r4           ;# PUSH (0x1234  =>  @=0x0250)
        push                     @r4           ;# PUSH (0x1234  =>  @=0x0250)
        mov     #data_aRn_0x5678, r6
        mov     #data_aRn_0x5678, r6
        push                     @r6           ;# PUSH (0x5678  =>  @=0x024E)
        push                     @r6           ;# PUSH (0x5678  =>  @=0x024E)
        mov              #0x2000, r15
        mov              #0x2000, r15
        # Addressing mode: @Rn+
        # Addressing mode: @Rn+
        #------------------------
        #------------------------
        mov     #data_aRni_0x9abc, r4
        mov     #data_aRni_0x9abc, r4
        push                      @r4+         ;# PUSH (0x9abc  =>  @=0x024C)
        push                      @r4+         ;# PUSH (0x9abc  =>  @=0x024C)
        push                      @r4+         ;# PUSH (0xdef0  =>  @=0x024A)
        push                      @r4+         ;# PUSH (0xdef0  =>  @=0x024A)
        mov     #0x3000, r15
        mov     #0x3000, r15
        # Addressing mode: X(Rn)
        # Addressing mode: X(Rn)
        #------------------------
        #------------------------
        mov     #data_xRn_0x0fed, r4
        mov     #data_xRn_0x0fed, r4
        push                   26(r4)          ;# PUSH (0x0fed  =>  @=0x0248)
        push                   26(r4)          ;# PUSH (0x0fed  =>  @=0x0248)
        push                   28(r4)          ;# PUSH (0xcba9  =>  @=0x0246)
        push                   28(r4)          ;# PUSH (0xcba9  =>  @=0x0246)
        mov     #0x4000, r15
        mov     #0x4000, r15
        # Addressing mode: EDE
        # Addressing mode: EDE
        #------------------------
        #------------------------
.set   EDE_21E,  DMEM_21E
.set   EDE_21E,  DMEM_21E
.set   EDE_220,  DMEM_220
.set   EDE_220,  DMEM_220
        push    data_EDE_0x8765                ;# PUSH (0x8765  =>  @=0x0244)
        push    data_EDE_0x8765                ;# PUSH (0x8765  =>  @=0x0244)
        push    data_EDE_0x4321                ;# PUSH (0x4321  =>  @=0x0242)
        push    data_EDE_0x4321                ;# PUSH (0x4321  =>  @=0x0242)
        mov     #0x5000, r15
        mov     #0x5000, r15
        # Addressing mode: &EDE
        # Addressing mode: &EDE
        #------------------------
        #------------------------
.set   aEDE_222,  DMEM_222
.set   aEDE_222,  DMEM_222
.set   aEDE_224,  DMEM_224
.set   aEDE_224,  DMEM_224
        push  &data_aEDE_0x1f2e                ;# PUSH (0x1f2e  =>  @=0x0240)
        push  &data_aEDE_0x1f2e                ;# PUSH (0x1f2e  =>  @=0x0240)
        push  &data_aEDE_0x3d4c                ;# PUSH (0x3d4c  =>  @=0x023E)
        push  &data_aEDE_0x3d4c                ;# PUSH (0x3d4c  =>  @=0x023E)
        mov     #0x6000, r15
        mov     #0x6000, r15
        /* ----------------------         END OF TEST        --------------- */
        /* ----------------------         END OF TEST        --------------- */
end_of_test:
end_of_test:
        nop
        nop
        br #0xffff
        br #0xffff
        /* ----------------------            DATA TABLE      --------------- */
        /* ----------------------            DATA TABLE      --------------- */
data_aRn_0x1234:
data_aRn_0x1234:
        .word 0x1234
        .word 0x1234
data_aRn_0x5678:
data_aRn_0x5678:
        .word 0x5678
        .word 0x5678
data_aRni_0x9abc:
data_aRni_0x9abc:
        .word 0x9abc
        .word 0x9abc
        .word 0xdef0
        .word 0xdef0
data_xRn_0x0fed:
data_xRn_0x0fed:
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0000
        .word 0x0fed
        .word 0x0fed
        .word 0xcba9
        .word 0xcba9
data_EDE_0x8765:
data_EDE_0x8765:
        .word 0x8765
        .word 0x8765
data_EDE_0x4321:
data_EDE_0x4321:
        .word 0x4321
        .word 0x4321
data_aEDE_0x1f2e:
data_aEDE_0x1f2e:
        .word 0x1f2e
        .word 0x1f2e
data_aEDE_0x3d4c:
data_aEDE_0x3d4c:
        .word 0x3d4c
        .word 0x3d4c
        /* ----------------------         INTERRUPT VECTORS  --------------- */
        /* ----------------------         INTERRUPT VECTORS  --------------- */
.section .vectors, "a"
.section .vectors, "a"
.word end_of_test  ; Interrupt  0 (lowest priority)    
.word end_of_test  ; Interrupt  0 (lowest priority)    
.word end_of_test  ; Interrupt  1                      
.word end_of_test  ; Interrupt  1                      
.word end_of_test  ; Interrupt  2                      
.word end_of_test  ; Interrupt  2                      
.word end_of_test  ; Interrupt  3                      
.word end_of_test  ; Interrupt  3                      
.word end_of_test  ; Interrupt  4                      
.word end_of_test  ; Interrupt  4                      
.word end_of_test  ; Interrupt  5                      
.word end_of_test  ; Interrupt  5                      
.word end_of_test  ; Interrupt  6                      
.word end_of_test  ; Interrupt  6                      
.word end_of_test  ; Interrupt  7                      
.word end_of_test  ; Interrupt  7                      
.word end_of_test  ; Interrupt  8                      
.word end_of_test  ; Interrupt  8                      
.word end_of_test  ; Interrupt  9                      
.word end_of_test  ; Interrupt  9                      
.word end_of_test  ; Interrupt 10                      Watchdog timer
.word end_of_test  ; Interrupt 10                      Watchdog timer
.word end_of_test  ; Interrupt 11                      
.word end_of_test  ; Interrupt 11                      
.word end_of_test  ; Interrupt 12                      
.word end_of_test  ; Interrupt 12                      
.word end_of_test  ; Interrupt 13                      
.word end_of_test  ; Interrupt 13                      
.word end_of_test  ; Interrupt 14                      NMI
.word end_of_test  ; Interrupt 14                      NMI
.word main         ; Interrupt 15 (highest priority)   RESET
.word main         ; Interrupt 15 (highest priority)   RESET
 
 

powered by: WebSVN 2.1.0

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