Changeset 29387823 in rtems


Ignore:
Timestamp:
Jun 23, 2003, 12:04:21 PM (18 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
14ea772
Parents:
94b81961
Message:

PR264 - Stopped the core dump by removing the bad instruction.
PR414 - Fixed the global interupt vector register.
Linker command file to have the boot code in the first 8K.
The chip select remap needed to be volatile.

Location:
c/src/lib/libbsp/m68k/ods68302
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/ods68302/start/reset.S

    r94b81961 r29387823  
    3838| Initial stack pointer is in the dual ported RAM
    3939|
    40         .sect   .text
     40        .sect   .resettext
    4141
    4242        .global M68Kvec                 | Vector Table
     
    470470        jlt     zerobss_loop                    | loop until _end reached
    471471
    472         movel   %d0,_stack_init                 | load stack top
    473 
     472        movel   #stack_end,%d0
     473        andl    #0xfffffffc,%d0                 | align it on 16 byte boundary
     474 
    474475        movw    #0x3700,%sr                     | SUPV MODE,INTERRUPTS OFF!!!
    475476        movel   %d0,%a7                         | set master stack pointer
     
    494495               
    495496EXCEPTION_HANDLER(#, 0)
    496 #if 0
    497497EXCEPTION_HANDLER(#, 1)
    498498EXCEPTION_HANDLER(#, 2)
     
    776776EXCEPTION_HANDLER(#, 255)                               
    777777
    778 #endif
    779 
    780 
    781 
    782778common_exception_handler:
    783779
    784 #if 0
    785780        |
    786781        | Need to put the format/vector above the PC and status register
     
    802797
    803798        bra     ceh_20
    804 
    805799ceh_10:             
    806800
     
    810804        move.l  %d0,-(%sp)                      | free a register, again
    811805        move.w  4(%sp),%d0                      | get the format/vector id
    812 
     806       
    813807ceh_20:
    814808
     
    828822        | check to see if ROM is mapped to zero
    829823        |
    830        
     824
     825        move.l  #(ROM_SIZE - 1),%d1
     826        not.l   %d1
     827        lea.l   %pc@(0),%a0                     | were are we currently
     828        move.l  %a0,%d0                         | need to use a data register
     829        and.l   %d1,%d0                         | keep the top part of the address
    831830        move.l  #trace_exception,%d1            | get the linked address
    832831        and.l   #(ROM_SIZE - 1),%d1             | obtain the offset into the ROM
    833         lea.l   %pc@(0),%a0                     | were are we currently
    834         move.l  %a0,%d0                         | need to use a data register
    835         and.l   #~(ROM_SIZE - 1),%d0            | keep the top part of the address
    836832        or.l    %d1,%d0                         | apply it to the trace exception offset
    837833        move.l  %d0,%a0                         | need an address register for jumping
     
    840836ceh_30:                 
    841837        jmp     ceh_30
     838
    842839|
    843840| The RAM based vector table
    844841|
    845842
    846 #endif
    847843        .sect   .vtable
    848844
     
    863859        .space  4,0
    864860
    865         .global stack_start
    866        
    867 stack_start:
    868         .space  4,0
    869861
    870862|
     
    885877        .global stack_size
    886878        .set    stack_size,0x1000
    887 
    888 
     879        .global stack_start
     880       
     881stack_start:
     882stack_base:
     883        .space  0x2000, 0
     884stack_end:
     885        .long   0
     886 
  • c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c

    r94b81961 r29387823  
    6969#endif
    7070 
    71   m302.reg.gimr = m302.reg.ipr = m302.reg.imr = m302.reg.isr = 0;
    72  
     71  m302.reg.ipr = m302.reg.imr = m302.reg.isr = 0;
     72  m302.reg.gimr = 0x0080;
     73
    7374  m302.reg.simode = 0;
    7475
     
    102103#endif
    103104 
    104   WRITE_BR(CSEL_ROM, ROM_BASE, BR_READ_ONLY, BR_FC_NULL, BR_ENABLED);
    105   WRITE_BR(CSEL_RAM, RAM_BASE, BR_READ_WRITE, BR_FC_NULL, BR_ENABLED);
     105  WRITE_BR(CSEL_ROM, _ROM_BASE, BR_READ_ONLY, BR_FC_NULL, BR_ENABLED);
     106  WRITE_BR(CSEL_RAM, _RAM_BASE, BR_READ_WRITE, BR_FC_NULL, BR_ENABLED);
    106107 
    107108#if defined(LED_CONTROL)
     
    111112
    112113  /* seems to want 2, looked at assember code output */
    113   *(&stack + 2) |= ROM_BASE;
     114  *((volatile rtems_unsigned32*) (&stack + 2)) |= ROM_BASE;
    114115}
    115116
  • c/src/lib/libbsp/m68k/ods68302/startup/linkcmds

    r94b81961 r29387823  
    1313_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000;
    1414_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
     15
     16/*
     17 * Memory map.
     18 */
     19RAM_BASE = DEFINED(RAM_BASE) ? RAM_BASE : 0x00000000;
     20RAM_SIZE = DEFINED(RAM_SIZE) ? RAM_SIZE : 0x00100000;
     21ROM_BASE = DEFINED(ROM_BASE) ? ROM_BASE : 0x00C00000;
     22ROM_SIZE = DEFINED(ROM_SIZE) ? ROM_SIZE : 0x00100000;
     23MC68302_BASE = DEFINED(MC68302_BASE) ? MC68302_BASE : 0x00700000;
    1524
    1625/*
     
    2231SECTIONS
    2332{
    24         ram : {
    25                 . = .;
    26         } >ram
    27 
    28         .vtable :
     33        .vtable RAM_BASE :
    2934        {
    3035                vtable_start = .;
     
    3338        } >ram
    3439
    35 
    3640        /*
    3741         * Text, data and bss segments
    3842         */
    39         .text : {
     43        .text ROM_BASE : {
     44                /*
     45                 * Needs to be first. 8K limit on CS0 at reset.
     46                 */
     47                *(.resettext);
     48                *cpuboot.o(.text)
     49
     50                /*
     51                 * The reset of the text is entered once CS0 is remapped.
     52                 */
    4053                *(.text)
    4154
     
    115128                 . = ALIGN (16);
    116129                PROVIDE (_etext = .);
    117         } >ram
    118         .data : {
     130        } >rom
     131
     132        .data (ADDR(.vtable) + SIZEOF(.vtable)) :
     133          AT (ADDR(.text) + SIZEOF(.text)) {
    119134                PROVIDE (_copy_start = .);
    120135                *(.data)
     
    126141                PROVIDE (_copy_end = .);
    127142        } >ram
    128         .bss : {
     143        .bss (ADDR(.data) + SIZEOF(.data)) : {
    129144                _clear_start = .;
    130145                *(.bss)
     
    182197}
    183198
    184 RAM_BASE = DEFINED(RAM_BASE) ? RAM_BASE : 0x00000000;
    185 RAM_SIZE = DEFINED(RAM_SIZE) ? RAM_SIZE : 0x00100000;
    186 ROM_BASE = DEFINED(ROM_BASE) ? ROM_BASE : 0x00C00000;
    187 ROM_SIZE = DEFINED(ROM_SIZE) ? ROM_SIZE : 0x00100000;
    188 MC68302_BASE = DEFINED(MC68302_BASE) ? MC68302_BASE : 0x00700000;
    189199m302 = MC68302_BASE;
    190200_VBR = ADDR(.vtable);           /* location of the VBR table (in RAM) */
Note: See TracChangeset for help on using the changeset viewer.