Changeset 653 for trunk/boot/tsar_mips32/boot_entry.S
- Timestamp:
- Nov 14, 2019, 4:00:51 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/boot/tsar_mips32/boot_entry.S
r623 r653 22 22 */ 23 23 24 /********************************************************************************************** 25 * This file contains the entry point of the ALMOS-MK boot-loader for TSAR architecture, * 26 * that is 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, but at the same time, because all cores * 34 * are not simultaneously activated. It makes the assuption that the CPO register containing * 35 * the core gid (global hardware identifier) has a fixed format: * 36 * gid == (((x << Y_WIDTH) + y) << P_WIDTH) + lid * 37 * * 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 DATA address extension register using the cxy extracted * 43 * from the gid, * 44 * - It jumps to the boot_loader() function defined in the 'boot.c' file, passing the two * 45 * arguments (cxy and lid). * 46 *********************************************************************************************/ 24 /**********************************************************************************************/ 25 /* This file contains the entry point of the ALMOS-MK boot-loader for the TSAR architecture, */ 26 /* that is a generic multi-clusters / multi-processors architecture. */ 27 /* */ 28 /* This assembly code is executed by all cores, but not at the same time, because all cores */ 29 /* are not simultaneously activated. It makes the assuption that the CPO register containing */ 30 /* the core gid (global hardware identifier) has a fixed format: */ 31 /* gid == (((x << Y_WIDTH) + y) << P_WIDTH) + lid */ 32 /* */ 33 /* It does 3 things: */ 34 /* - It initializes the stack pointer depending on the lid extracted from the gid, */ 35 /* using the BOOT_STACK_BASE and BOOT_STACK_SIZE parameters that are defined in */ 36 /* the boot_config.h file, */ 37 /* - It changes the value of the DATA address extension register using the cxy extracted */ 38 /* from the gid, with X_WIDTH, Y_WIDTH, P_WIDTH defined in the boot¨config.h file. */ 39 /* - It jumps to the boot_loader() function defined in the 'boot.c' file, passing the two */ 40 /* arguments (cxy and lid). */ 41 /**********************************************************************************************/ 47 42 48 43 #include "mips32_registers.h" 49 #include "hard_config.h"50 44 #include "boot_config.h" 51 45
Note: See TracChangeset
for help on using the changeset viewer.