Changeset 295732b in mainline


Ignore:
Timestamp:
2012-12-06T00:06:29Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bcad855
Parents:
232cd4f
Message:

Make the mips32 loader machine-neutral, not preferring msim.

  • Allow load address it be in both KSEG0 and KSEG1
Location:
boot/arch/mips32
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/mips32/_link.ld.in

    r232cd4f r295732b  
    22
    33SECTIONS {
     4#if defined(MACHINE_msim)
    45        . = 0xbfc00000;
     6#elif defined(MACHINE_lmalta) || defined(MACHINE_bmalta)
     7        . = 0x80004000;
     8#endif
    59        .text : {
    610                *(BOOTSTRAP);
  • boot/arch/mips32/include/arch.h

    r232cd4f r295732b  
    3737#define BOOTINFO_OFFSET  0x00003000
    3838#define BOOT_OFFSET      0x00100000
     39
     40#if defined(MACHINE_msim)
    3941#define LOADER_OFFSET    0x1fc00000
     42#elif defined(MACHINE_lmalta) || defined(MACHINE_bmalta)
     43#define LOADER_OFFSET    0x00004000
     44#endif
    4045
     46#if defined(MACHINE_msim)
    4147#define MSIM_VIDEORAM_ADDRESS  0xb0000000
    4248#define MSIM_DORDER_ADDRESS    0xb0000100
     49#endif
     50
     51#if defined(MACHINE_lmalta) || defined(MACHINE_bmalta)
     52#define MALTA_SERIAL     0xb80003f8
     53#endif
    4354
    4455#ifndef __ASM__
    4556        #define PA2KA(addr)    (((uintptr_t) (addr)) + 0x80000000)
     57        #define PA2KSEG(addr)  (((uintptr_t) (addr)) + 0xa0000000)
     58        #define KA2PA(addr)    (((uintptr_t) (addr)) - 0x80000000)
    4659        #define KSEG2PA(addr)  (((uintptr_t) (addr)) - 0xa0000000)
    4760#else
  • boot/arch/mips32/src/main.c

    r232cd4f r295732b  
    6565        for (i = 0; i < COMPONENTS; i++)
    6666                printf(" %p|%p: %s image (%zu/%zu bytes)\n", components[i].start,
    67                     (void *) KSEG2PA(components[i].start), components[i].name,
    68                     components[i].inflated, components[i].size);
     67                    (uintptr_t) components[i].start >= PA2KSEG(0) ?
     68                    (void *) KSEG2PA(components[i].start) :
     69                    (void *) KA2PA(components[i].start),
     70                    components[i].name, components[i].inflated,
     71                    components[i].size);
    6972       
    7073        void *dest[COMPONENTS];
     
    9396       
    9497        for (i = cnt; i > 0; i--) {
     98#ifdef MACHINE_msim
    9599                void *tail = dest[i - 1] + components[i].inflated;
    96100                if (tail >= ((void *) PA2KA(LOADER_OFFSET))) {
     
    99103                        halt();
    100104                }
     105#endif
    101106               
    102107                printf("%s ", components[i - 1].name);
  • boot/arch/mips32/src/putchar.c

    r232cd4f r295732b  
    3232#include <str.h>
    3333
     34#ifdef PUTCHAR_ADDRESS
     35#undef PUTCHAR_ADDRESS
     36#endif
     37
     38#if defined(MACHINE_msim)
     39#define PUTCHAR_ADDRESS MSIM_VIDEORAM_ADDRESS
     40#endif
     41
     42#if defined(MACHINE_lmalta) || defined(MACHINE_bmalta)
     43#define PUTCHAR_ADDRESS MALTA_SERIAL
     44#endif
     45
    3446void putchar(const wchar_t ch)
    3547{
    3648        if (ascii_check(ch))
    37                 *((char *) MSIM_VIDEORAM_ADDRESS) = ch;
     49                *((char *) PUTCHAR_ADDRESS) = ch;
    3850        else
    39                 *((char *) MSIM_VIDEORAM_ADDRESS) = U_SPECIAL;
     51                *((char *) PUTCHAR_ADDRESS) = U_SPECIAL;
    4052}
     53
Note: See TracChangeset for help on using the changeset viewer.