Ignore:
Timestamp:
Feb 26, 2013, 9:19:41 AM (12 years ago)
Author:
cfuguet
Message:

Introducing IRQ_PER_PROC constant in the tsar boot loader
(pre-loader).
This constant is used to know how many XICU irq outputs
are connected to each processor.

i.e.

IRQ_PER_PROC = 3
NPROCS=2

xicu.irq_out[0] -> proc0 xicu.irq_out[3] -> proc1
xicu.irq_out[1] -> proc0 xicu.irq_out[4] -> proc1
xicu.irq_out[2] -> proc0 xicu.irq_out[5] -> proc1

This change the way the mailboxes for each processor
are calculated in the reset.S file.

Location:
trunk/softs/tsar_boot/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/softs/tsar_boot/src/boot_ioc.c

    r292 r302  
    33
    44#ifndef SOCLIB_IOC
    5 static struct sdcard_dev  _sdcard_device;
    6 static struct spi_dev   * _spi_device   = ( struct spi_dev * )IOC_BASE;
    7 #endif
    85
    96#ifndef SYSCLK_FREQ
     
    118#define SYSCLK_FREQ 50000000U
    129#endif
     10
     11static struct sdcard_dev  _sdcard_device;
     12static struct spi_dev   * _spi_device   = ( struct spi_dev * )IOC_BASE;
     13#endif
     14
    1315
    1416int boot_ioc_init()
  • trunk/softs/tsar_boot/src/reset.S

    r292 r302  
    9999     * Compute the output index for the Write Triggered Interruption mask.
    100100     * Each processor enable the WTI for its irq output
    101      */
    102      
    103     sll     t4,     t1,     2       /* t4 <= OUT_INDEX = local_id * 4  */
    104     li      t5,     (0xC << 7)      /* t5 <= FUNC      = XICU_MSK_HWI  */
    105     or      t4,     t4,     t5      /* t4 <= FUNC | INDEX | 00         */
    106     or      t5,     t3,     t4      /* t5 <= &XICU[MSK_WTI][OUT_INDEX] */
     101     * Each processor may have IRQ_PER_PROC private irq outputs from
     102     * the XICU
     103     */
     104
     105    move    t4,     t1              /* t4 <= local_id                   */
     106    li      t5,     IRQ_PER_PROC    /* t5 <= IRQ_PER_PROC               */
     107    multu   t4,     t5             
     108    mflo    t6                      /* t6 <= IRQ_PER_PROC * local_id    */
     109    sll     t4,     t6,     2       /* t4 <= OUT_INDEX = t6 * 4         */
     110
     111    li      t5,     (0xC << 7)      /* t5 <= FUNC      = XICU_MSK_HWI   */
     112    or      t4,     t4,     t5      /* t4 <= FUNC | INDEX | 00          */
     113    or      t5,     t3,     t4      /* t5 <= &XICU[MSK_WTI][OUT_INDEX]  */
    107114   
    108115    /* Compute and set WTI mask */
     
    142149
    143150    /**
    144      * Jump to the boot elf loader routing routine
     151     * Jump to the boot elf loader routine
    145152     * Passing as argument the block number in which it must be
    146      * the boot loader elf file
     153     * the executable elf file to load
    147154     */
    148155
     
    209216
    210217    .set reorder
     218
     219/*
     220 * vim: tabstop=4 : shiftwidth=4 : expandtab
     221 */
Note: See TracChangeset for help on using the changeset viewer.