Ignore:
File:
1 edited

Legend:

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

    r7f1d897 r4872160  
    3636#include <arch/mm/tlb.h>
    3737#include <arch/mm/tte.h>
    38 #include <arch/mm/cache_spec.h>
    3938
    4039#ifdef CONFIG_SMP
     
    6362 *
    6463 * The registers are expected to be in this state:
    65  *  - %o0 starting address of physical memory
     64 *  - %o0 bootinfo structure address (BSP only)
     65 *  - %o1 starting address of physical memory
    6666 *        + bootstrap processor flag
    6767 *          bits 63...1: physical memory starting address / 2
    6868 *          bit 0:       non-zero on BSP processor, zero on AP processors
    69  *  - %o1 bootinfo structure address (BSP only)
    70  *
    7169 *
    7270 * Moreover, we depend on boot having established the following environment:
     
    7977kernel_image_start:
    8078        mov BSP_FLAG, %l0
    81         and %o0, %l0, %l7                       ! l7 <= bootstrap processor?
    82         andn %o0, %l0, %l6                      ! l6 <= start of physical memory
     79        and %o1, %l0, %l7                       ! l7 <= bootstrap processor?
     80        andn %o1, %l0, %l6                      ! l6 <= start of physical memory
    8381
    8482        ! Get bits (PHYSMEM_ADDR_SIZE - 1):13 of physmem_base.
     
    270268        or %l3, %l5, %l3
    271269        stx %l3, [%l4 + %lo(kernel_8k_tlb_data_template)]
    272        
    273         ! flush the whole D-cache
    274         set (DCACHE_SIZE - DCACHE_LINE_SIZE), %g1
    275         stxa %g0, [%g1] ASI_DCACHE_TAG
    276        
    277 0:
    278         membar #Sync
    279         subcc %g1, DCACHE_LINE_SIZE, %g1
    280         bnz,pt %xcc, 0b
    281         stxa %g0, [%g1] ASI_DCACHE_TAG
    282         membar #Sync
    283        
     270
     271        /*
     272         * Flush D-Cache.
     273         */
     274        call dcache_flush
     275        nop
     276
    284277        /*
    285278         * So far, we have not touched the stack.
     
    289282        or %sp, %lo(temporary_boot_stack), %sp
    290283        sub %sp, STACK_BIAS, %sp
    291        
    292         /*
    293          * Call arch_pre_main(bootinfo)
    294          */
     284
    295285        call arch_pre_main
    296         mov %o1, %o0
    297        
    298         /*
    299          * Create the first stack frame.
    300          */
    301         save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE), %sp
    302         flushw
    303         add %g0, -STACK_BIAS, %fp
    304 
     286        nop
     287       
    305288        call main_bsp
    306289        nop
     
    309292
    3102930:
    311         ba,a %xcc, 0b
     294        ba %xcc, 0b
     295        nop
    312296
    313297
     
    359343        ldx [%g1], %o6
    360344
    361         /*
    362          * Create the first stack frame.
    363          */
    364         save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE), %sp
    365         flushw
    366         add %g0, -STACK_BIAS, %fp
    367 
    368345        call main_ap
    369346        nop
     
    373350       
    3743510:
    375         ba,a %xcc, 0b
     352        ba %xcc, 0b
     353        nop
    376354
    377355
Note: See TracChangeset for help on using the changeset viewer.