Changeset 203 for soft/giet_vm/boot


Ignore:
Timestamp:
Aug 13, 2012, 10:52:25 PM (12 years ago)
Author:
alain
Message:

Introducing support for XICU

Location:
soft/giet_vm/boot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/boot/boot.ld

    r189 r203  
    1 /****************************************************************************
    2 * Definition of the base address for all virtual segments
    3 *****************************************************************************/
    41
    5 /*
    6 The following (virtual) addresses are specific for the boot phase.
    7 They must respect identity mapping: physical address = virtual address
    8 */
     2/****************************************************************************/
     3/* Definition of the base addresses for all vsegs used by the GIET_VM       */
     4/****************************************************************************/
    95
    10 seg_boot_base           = 0xBFC00000;   /* boot code */
     6INCLUDE giet_vsegs.ld
    117
    12 seg_boot_stack_base     = 0xBFC08000;   /* boot temporary stack */
    13 
    14 seg_mapping_base        = 0xBFC0C000;   /* boot mapping_info */
    15 
    16 /*
    17 The following (virtual) addresse are defined and used by the kernel.
    18 They are not constrained to respect identity mapping. 
    19 */
    20 
    21 seg_kernel_init_base    = 0x80090000;   /* system init entry */
    22 
    23 seg_tty_base                = 0x90000000;   /* TTY device */
    24 seg_timer_base              = 0x91000000;   /* Timer device */
    25 seg_ioc_base                = 0x92000000;   /* Block device */
    26 seg_dma_base                = 0x93000000;   /* DMA device */
    27 seg_gcd_base                = 0x95000000;   /* GCD device */
    28 seg_fb_base                 = 0x96000000;   /* FrameBuffer device */
    29 seg_iob_base                = 0x9E000000;   /* IO Bridge device */
    30 seg_icu_base                = 0x9F000000;   /* ICU or XICU device */
    31 
    32 /*
    33 Grouping sections into segments for boot code and data
    34 */
     8/****************************************************************************/
     9/* Grouping sections into virtual segment for boot code and data             */
     10/****************************************************************************/
    3511
    3612SECTIONS
    3713{
    38     /* contain both data and code sections */
    39     . = seg_boot_base;
    40     seg_boot :
     14    . = seg_boot_code_base;
     15    seg_boot_code :
    4116    {
    4217        *(.boot)
     
    5530    }
    5631}
     32
  • soft/giet_vm/boot/boot_init.c

    r200 r203  
    800800    }
    801801
    802     // checking Rnumber of clusters
     802    // checking number of clusters
    803803    if ( header->clusters != NB_CLUSTERS )
    804804    {
     
    820820    }
    821821
    822     // checking harware
     822    // checking hardware
    823823    unsigned int periph_id;
    824824    unsigned int cluster_id;
     
    851851                    boot_exit();
    852852                }
    853                 if ( periph[periph_id].channels > NB_TTYS )
    854                 {
    855                     boot_puts("\n[BOOT ERROR] Too much TTY terminals in cluster ");
     853                if ( periph[periph_id].channels != NB_TTYS )
     854                {
     855                    boot_puts("\n[BOOT ERROR] Wrong NB_TTYS in cluster ");
    856856                    boot_putw( cluster_id );
    857857                    boot_puts(" : ttys = ");
     
    870870                    boot_exit();
    871871                }
    872                 if ( periph[periph_id].channels > NB_NICS )
    873                 {
    874                     boot_puts("\n[BOOT ERROR] Too much NIC channels in cluster ");
     872                if ( periph[periph_id].channels != NB_NICS )
     873                {
     874                    boot_puts("\n[BOOT ERROR] Wrong NB_NICS in cluster ");
    875875                    boot_putw( cluster_id );
    876876                    boot_puts(" : nics = ");
     
    884884            if ( periph[periph_id].type == PERIPH_TYPE_TIM )
    885885            {
    886                 if ( periph[periph_id].channels > NB_TIMERS_MAX )
     886                if ( periph[periph_id].channels != (NB_PROCS_MAX + NB_TIMERS_MAX) )
    887887                {
    888888                    boot_puts("\n[BOOT ERROR] Too much user timers in cluster ");
     
    897897            if ( periph[periph_id].type == PERIPH_TYPE_DMA )
    898898            {
    899                 if ( periph[periph_id].channels > NB_DMAS_MAX )
     899                if ( periph[periph_id].channels != NB_DMAS_MAX )
    900900                {
    901901                    boot_puts("\n[BOOT ERROR] Too much DMA channels in cluster ");
     
    11981198////////////////////////////////////////////////////////////////////////////////
    11991199// This function intializes the periherals and coprocessors, as specified
    1200 // tsuch as the IOB component
    1201 // (I/O bridge, containing the IOMMU, the IOC (external disk controller),
    1202 // the NIC (external network controller), the FBDMA (frame buffer controller),
     1200// in the mapping_info file.
    12031201////////////////////////////////////////////////////////////////////////////////
    12041202void boot_peripherals_init()
     
    13061304
    13071305        } // end for periphs
    1308 
     1306/*
    13091307        for ( coproc_id = cluster[cluster_id].coproc_offset ;
    13101308              coproc_id < cluster[cluster_id].coproc_offset + cluster[cluster_id].coprocs ;
     
    13581356            }
    13591357        } // end for coprocs
    1360 
     1358*/
    13611359    } // end for clusters
    13621360} // end boot_peripherals_init()
Note: See TracChangeset for help on using the changeset viewer.