Changeset 296 for trunk/tools/bootloader_tsar/boot_entry.S
- Timestamp:
- Jul 31, 2017, 1:59:52 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/bootloader_tsar/boot_entry.S
r6 r296 22 22 */ 23 23 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 *********************************************************************************************/ 59 59 60 60 #include "mips32_registers.h"
Note: See TracChangeset
for help on using the changeset viewer.