Ignore:
Timestamp:
Jul 31, 2017, 1:59:52 PM (7 years ago)
Author:
alain
Message:

Several modifs in the generic scheduler and in the hal_context to
fix the context switch mechanism.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/bootloader_tsar/boot_entry.S

    r6 r296  
    2222 */
    2323
    24 /*************************************************************************************************
    25  * This file contains the entry point of the ALMOS-MK boot-loader for TSAR architecture.         *
    26  * It supports a generic multi-clusters / multi-processors architecture                          *
    27  *                                                                                               *
    28  * - The number of clusters is defined by the (X_SIZE, Y_SIZE) parameters in the                 *
    29  *   hard_config.h file (up to 256 clusters).                                                    *
    30  * - The number of processors per cluster is defined by the NB_PROCS_MAX parameter in the        *
    31  *   hard_config.h file (up to 4 processors per cluster).                                        *
    32  *                                                                                               *
    33  * This assembly code is executed by all cores. It has 2 versions (in order to see if the        *
    34  * contention created by the ARCHINFO core descriptor table scanning loops is acceptable):       *
    35  * with or without the assumption that the core hardware identifier gid has a fixed format:      *
    36  *                                                                                               *
    37  * - Version with fixed format: gid == (((x << Y_WIDTH) + y) << PADDR_WIDTH) + lid               *
    38  *   It does 3 things:                                                                           *
    39  *      + It initializes the stack pointer depending on the lid extracted from the gid,          *
    40  *        using the BOOT_STACK_BASE and BOOT_STACK_SIZE parameters defined in the                *
    41  *        'boot_config.h' file,                                                                  *
    42  *      + It changes the value of the address extension registers using the cxy extracted        *
    43  *        from the gid,                                                                          *
    44  *      + It jumps to the boot_loader() function defined in the 'boot.c' file and passes 2       *
    45  *        arguments which are the cxy and lid of each core to this function.                     *
    46  *                                                                                               *
    47  * - Version without fixed format                                                                *
    48  *   It has to perform an additional step in order to extract the (cxy,lid) values from the      *
    49  *   arch_info.bin structure that has been loaded in the cluster (0,0) memory by the bscpu.      *
    50  *      + Each core other than the bscpu scans the core descriptor table in the arch_info.bin    *
    51  *        structure to make an associative search on the (gid), and get the (cxy,lid).           *
    52  *      + It initializes the stack pointer depending on the lid, using the BOOT_STACK_BASE       *
    53  *        and BOOT_STACK_SIZE parameters defined in the 'boot_config.h' file,                    *
    54  *      + It changes the value of the address extension registers using cxy obtained             *
    55  *        previously,                                                                            *
    56  *      + It jumps to the boot_loader() function defined in the 'boot.c' file and passes 2       *
    57  *        arguments which are the cxy and lid of each core to this function.                     *
    58  *************************************************************************************************/
     24/**********************************************************************************************
     25 * This file contains the entry point of the ALMOS-MK boot-loader for TSAR architecture.      *
     26 * It supports a generic multi-clusters / multi-processors architecture                       *
     27 *                                                                                            *
     28 * - The number of clusters is defined by the (X_SIZE, Y_SIZE) parameters in the              *
     29 *   hard_config.h file (up to 256 clusters).                                                 *
     30 * - The number of processors per cluster is defined by the NB_PROCS_MAX parameter in the     *
     31 *   hard_config.h file (up to 4 processors per cluster).                                     *
     32 *                                                                                            *
     33 * This assembly code is executed by all cores. It has 2 versions (in order to see if the     *
     34 * contention created by the ARCHINFO core descriptor table scanning loops is acceptable):    *
     35 * with or without the assumption that the core hardware identifier gid has a fixed format:   *
     36 *                                                                                            *
     37 * - Version with fixed format: gid == (((x << Y_WIDTH) + y) << PADDR_WIDTH) + lid            *
     38 *   It does 3 things:                                                                        *
     39 *      + It initializes the stack pointer depending on the lid extracted from the gid,       *
     40 *        using the BOOT_STACK_BASE and BOOT_STACK_SIZE parameters defined in the             *
     41 *        'boot_config.h' file,                                                               *
     42 *      + It changes the value of the address extension registers using the cxy extracted     *
     43 *        from the gid,                                                                       *
     44 *      + It jumps to the boot_loader() function defined in the 'boot.c' file and passes 2    *
     45 *        arguments which are the cxy and lid of each core to this function.                  *
     46 *                                                                                            *
     47 * - Version without fixed format                                                             *
     48 *   It has to perform an additional step in order to extract the (cxy,lid) values from the   *
     49 *   arch_info.bin structure that has been loaded in the cluster (0,0) memory by the bscpu.   *
     50 *      + Each core other than the bscpu scans the core descriptor table in the arch_info.bin *
     51 *        structure to make an associative search on the (gid), and get the (cxy,lid).        *
     52 *      + It initializes the stack pointer depending on the lid, using the BOOT_STACK_BASE    *
     53 *        and BOOT_STACK_SIZE parameters defined in the 'boot_config.h' file,                 *
     54 *      + It changes the value of the address extension registers using cxy obtained          *
     55 *        previously,                                                                         *
     56 *      + It jumps to the boot_loader() function defined in the 'boot.c' file and passes 2    *
     57 *        arguments which are the cxy and lid of each core to this function.                  *
     58 *********************************************************************************************/
    5959
    6060#include "mips32_registers.h"
Note: See TracChangeset for help on using the changeset viewer.