Changeset bb3efe9 in rtems


Ignore:
Timestamp:
May 24, 2001, 1:21:56 PM (21 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
3b286783
Parents:
d26dce2
Message:

2001-05-24 Greg Menke <gregory.menke@…>

  • Assisted in design and debug by Joel Sherrill <joel@…>.
  • start/regs.S, start/start.S: Now works on Mongoose-V. Missed in previous patch.
Location:
c/src/lib/libbsp/mips/genmongoosev
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/mips/genmongoosev/ChangeLog

    rd26dce2 rbb3efe9  
     12001-05-24      Greg Menke <gregory.menke@gsfc.nasa.gov>
     2
     3        * Assisted in design and debug by Joel Sherrill <joel@OARcorp.com>.
     4        * start/regs.S, start/start.S: Now works on Mongoose-V.  Missed
     5        in previous patch.
     6
    172001-05-22      Greg Menke <gregory.menke@gsfc.nasa.gov>
    28
  • c/src/lib/libbsp/mips/genmongoosev/start/regs.S

    rd26dce2 rbb3efe9  
    5353#define fp0     $f0
    5454#define fp1     $f1
     55
     56#define WATCHDOG        0xBE000000
    5557
    5658/* Useful memory constants: */
  • c/src/lib/libbsp/mips/genmongoosev/start/start.S

    rd26dce2 rbb3efe9  
    1818 */
    1919
     20
     21
     22#define PMON_UTIL_ROUTINES      0xbfc00200
     23#define UTIL_WARMSTART_VECTOR   21*4
     24#define UTIL_CPUINIT_VECTOR     22*4
     25#define UTIL_CONFIGUART_VECTOR  23*4
     26#define UTIL_PUTCHROM_VECTOR    24*4
     27       
     28       
    2029#include <asm.h>
    2130#include "regs.S"
     
    3847#endif /* __mips_embedded_pic */
    3948
     49
     50/* defined by linkcmds, pointing to the start of the relocation target
     51   memory, referenced in this way so we can avoid defining it
     52   multiply */
     53               
     54
     55       
    4056        .text
    4157        .align  2
     
    5773        bal     $LF1
    5874        nop
     75       
    5976_branch:
    60         move    $5, $31                         # $5 == where are we
    61         li      $6, 0x8800000c                  # $6 == where we want to be
    62         #la      $6,_branch
    63         beq     $5, $6, _start_in_ram
    64         nop
    65         # relocate the code from EEPROM to RAM
    66         la      $7, _edata
     77        move    a1, ra                          /* save return address from the jump above */
     78
     79        /* call down into PMON's CpuInit, so we avoid having to
     80        duplicate all that code plus remember to update both copies
     81        when something changes... Note, a1 must be preserved by
     82        CpuInit */
     83       
     84        li      t7,PMON_UTIL_ROUTINES           /* get base address of pmon's vector table */
     85        lw      t0,UTIL_CPUINIT_VECTOR(t7)
     86        nop
     87        jal     t0              /* init cpu */
     88        nop
     89
     90        lw      t0,UTIL_CONFIGUART_VECTOR(t7)
     91        nop
     92        jal     t0              /* reconfigure UART for console output */
     93        nop
     94       
     95        lw      t0,UTIL_PUTCHROM_VECTOR(t7)
     96        li      a0,'b'          /* show we booted */
     97        jal     t0
     98
     99
     100       
     101        /*
     102           get the address of the _branch label above as it would appear in
     103           the relocated code
     104        */
     105        la      a2, _branch                     /* relocation destination */
     106       
     107        beq     a1, a2, _start_in_ram           /* skip relocating if we're already there */
     108        nop
     109       
     110        /* relocate the code from EEPROM to RAM */
     111
     112        lw      t0,UTIL_PUTCHROM_VECTOR(t7)
     113        li      a0,'r'          /* show we're starting relocation */
     114        jal     t0
     115       
     116        la      a3, _edata
    67117relocate:
    68         lw      $8, ($5)                        # $8 = *EEPROM
    69         addu    $5, $5, 4                       # EEPROM++
    70         sw      $8, ($6)                        # *RAM = $8
    71         addu    $6, $6, 4                       # RAM++
    72         bne     $6, $7, relocate                # copied all the way to edata?
    73         nop
    74         la      $6, _start_in_ram
    75         jr      $6
     118        lw      t0, (a1)                        /* load from EEPROM */
     119        addu    a1, 4
     120        sw      t0, (a2)                        /* store to RAM */
     121        addu    a2, 4
     122        bne     a2, a3, relocate                /* copied all the way to edata? */
     123        nop
     124
     125        lw      t0,UTIL_PUTCHROM_VECTOR(t7)
     126        li      a0,'R'          /* show we relocated */
     127        jal     t0
     128        nop
     129
     130        la      a2, _start_in_ram
     131        jr      a2
    76132        nop
    77133        .end _start
     134
     135
     136
     137
    78138
    79139       
     
    81141        .ent _start_in_ram
    82142_start_in_ram:
     143        lw      t0,UTIL_PUTCHROM_VECTOR(t7)
     144        li      a0,'S'          /* show we're starting in the target address range */
     145        jal     t0
    83146        nop
    84147
     
    182245        .ent _sys_exit
    183246_sys_exit:
    184 7:
    185247#ifdef GCRT0
    186248        jal     _mcleanup
    187249        nop
    188250#endif
     251
     252        /* return non-zero if we want default behavior, else return to pmon */
     253        bne     a0,zero,7f
     254        nop
     255
     256        li      t0,PMON_UTIL_ROUTINES           /* base address of PMON's util_routines table */
     257        lw      t0,UTIL_WARMSTART_VECTOR(t0)    /* retrieve _warmstart vector at offset 21*4 */
     258        nop
     259        j       t0                      /* and jump */
     260        nop
     261
    189262        # break instruction can cope with 0xfffff, but GAS limits the range:
    190         break   1023
     2637:      break   1023
    191264        nop
    192265        b       7b                              # but loop back just in-case
Note: See TracChangeset for help on using the changeset viewer.