Changes between Version 62 and Version 63 of boot_procedure
- Timestamp:
- Nov 7, 2019, 5:57:53 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
boot_procedure
v62 v63 48 48 The two main constraint are the following: 49 49 * the ''kcode'' and ''kdata'' segments (in the KERNEL_CODE zone) must be entirely contained in one single big physical page (2 Mbytes), because it will be mapped as one single big page in all process virtual spaces. 50 * the BOOT_CODE zone (containing the boot loader instructions and data) must be entirely contained in the 51 next big physical page, because it will be mapped in the boot-loader page table to allow the cores to access locally the boot code as soon as it has been copied in the local cluster. 52 53 A core is identified by two indexes: '''cxy''' is the cluster identifier, an '''lid''' is the core local index in cluster. 50 * the BOOT_CODE zone (containing the boot loader instructions and data) must be entirely contained in the next big physical page, because it will be mapped in the boot-loader page table to allow the cores to access locally the boot code as soon as it has been copied in the local cluster. 51 52 A core[cxy][lid] is identified by two indexes: '''cxy''' is the cluster identifier, an '''lid''' is the core local index in cluster. 54 53 The CP0 register containing the core gid (global hardware identifier) has a fixed format: '''gid''' = ('''cxy''' << 2) + '''lid''' 55 54 56 55 All cores contribute to the boot procedure, but all cores are not simultaneously active: 57 * in the first phase - fully sequencial - only core[0][0] is running (core 0 in cluster 0).56 * in the first phase - fully sequencial - only core[0][0] is running. 58 57 * In the second phase - partially parallel - only core[cxy][0] is running in each cluster. 59 58 * in the last phase - fully parallel - all core[cxy][lid] are running. … … 75 74 === B2. Boot-loader sequencial phase === 76 75 77 In this phase, only core [0][0] is running, while all other cores are blocked in the preloade d, waiting to be activated by an IPI.76 In this phase, only core [0][0] is running, while all other cores are blocked in the preloader, waiting to be activated by an IPI. 78 77 79 78 The first instructions of the boot-loader are defined in the ''boot_entry.S'' file. This assembly code is executed by all cores entering the boot-loader, but not at the same time.