Ignore:
Timestamp:
2010-05-04T10:44:55Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
568db0f
Parents:
bb252ca
Message:

new boot infrastructure

  • more code and metadata unification
  • import of up-to-date implementations from the kernel
  • the boot loaders should behave more similarly on all platforms
  • support for deflate compressed (LZ77) boot components
    • this again allows feasible boot images to be created on mips32
  • IA64 is still not booting
    • the broken forked GNU EFI library has been removed, a replacement of the functionality is on its way
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/sun4v/start.S

    rbb252ca r4872160  
    7575 *
    7676 * parameters:
    77  *      addr:                   virtual address to be mapped
    78  *      rphysmem_start:         register containing the starting address of the
    79  *                              physical memory
    80  *      rtmp1:                  a register to be used as temporary
    81  *      rtmp2:                  a register to be used as temporary
    82  *      rd:                     register where the result will be saved
     77 *  addr:           virtual address to be mapped
     78 *  rphysmem_start: register containing the starting address
     79 *                  of the physical memory
     80 *  rtmp1:          a register to be used as temporary
     81 *  rtmp2:          a register to be used as temporary
     82 *  rd:             register where the result will be saved
     83 *
    8384 */
    8485#define TTE_DATA(addr, rphysmem_start, rtmp1, rtmp2, rd) \
     
    9091/*
    9192 * Here is where the kernel is passed control from the boot loader.
    92  * 
     93 *
    9394 * The registers are expected to be in this state:
    94  * - %o0 starting address of physical memory + bootstrap processor flag
    95  *      bits 63...1:    physical memory starting address / 2
    96  *      bit 0:          non-zero on BSP processor, zero on AP processors
    97  * - %o1 bootinfo structure address (BSP only)
    98  * - %o2 bootinfo structure size (BSP only)
     95 *  - %o0 bootinfo structure address (BSP only)
     96 *  - %o1 starting address of physical memory
     97 *        + bootstrap processor flag
     98 *          bits 63...1: physical memory starting address / 2
     99 *          bit 0:       non-zero on BSP processor, zero on AP processors
    99100 *
    100101 * Moreover, we depend on boot having established the following environment:
    101  * - TLBs are on
    102  * - identity mapping for the kernel image
     102 *  - TLBs are on
     103 *  - identity mapping for the kernel image
     104 *
    103105 */
    104106.global kernel_image_start
    105107kernel_image_start:
    106108        mov BSP_FLAG, %l0
    107         and %o0, %l0, %l7                       ! l7 <= bootstrap processor?
    108         andn %o0, %l0, %l6                      ! l6 <= start of physical memory
    109         or %o1, %g0, %l1
    110         or %o2, %g0, %l2
     109        and %o1, %l0, %l7                       ! l7 <= bootstrap processor?
     110        andn %o1, %l0, %l6                      ! l6 <= start of physical memory
     111        or %o0, %g0, %l0
    111112
    112113        ! Get bits (PHYSMEM_ADDR_SIZE - 1):13 of physmem_base.
     
    245246        sub %sp, STACK_BIAS, %sp
    246247
    247         or %l1, %g0, %o1
    248         or %l2, %g0, %o2
    249         sethi %hi(bootinfo), %o0
    250         call memcpy                             ! copy bootinfo
    251         or %o0, %lo(bootinfo), %o0
    252 
     248        or %l0, %g0, %o0
    253249        call arch_pre_main
    254250        nop
Note: See TracChangeset for help on using the changeset viewer.