Changes between Version 67 and Version 68 of boot_procedure
- Timestamp:
- Dec 7, 2019, 2:06:14 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
boot_procedure
v67 v68 83 83 * It jumps to the boot_loader() C function defined in the ''boot.c'' file, passing the two (cxy , lid) arguments. 84 84 85 === B3. Boot -loader sequencial phase ===85 === B3. Bootloader sequencial phase === 86 86 87 87 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. … … 98 98 * The core[0][0] send IPIs to activate all cores [cxy][0] in all other clusters. 99 99 100 === B4. Boot -loader partially parallel phase ===100 === B4. Bootloader partially parallel phase === 101 101 102 102 In this phase all core[cxy][0], other than the core[0][0] are running (one core per cluster). … … 114 114 * In each cluster cxy, the core[cxy][0] activates the other cores that are blocked in the pre-loader. 115 115 116 === B5. Boot -loader fully parallel phase ===116 === B5. Bootloader fully parallel phase === 117 117 118 118 In this phase all cores in all clusters are running. … … 125 125 * '''status register''' : in each core, the cp0_sr register defines the core state, and must be initialized (UM bit reset / IE bit reset / BEV bit reset ). 126 126 127 At this point, the boot -loader completed its job:127 At this point, the bootloader completed its job: 128 128 * The kernel code ''kcode'' and ''kdata'' segments are loaded - in all clusters - in the first ''offset'' physical pages. 129 * The hardware architecture described by the '''arch_info.bin'''file has been analyzed, and copied - in each cluster - in the '''boot_info _t''' structure, stored in the kdata segment.129 * The hardware architecture described by the '''arch_info.bin'''file has been analyzed, and copied - in each cluster - in the '''boot_info''' structure, stored in the kdata segment. 130 130 * Each local kernel instance can use all the physical memory that is not used to store the kernel ''kcode'' and ''kdata'' segments themselves. 131 131 132 == C) __Boot -loader for the I86 architecture__ ==132 == C) __Bootloader for the I86 architecture__ == 133 133 134 134 TODO … … 136 136 == D) __Generic kernel initialization procedure__ == 137 137 138 The kernel_init( boot_info_t * info ) function is the kernel entry point when the boot_loader transfers control to the kernel. The argument is a pointer on the fixed size boot_info_t structure, stored in the local ''kdata'' segment. 138 The kernel_init() function is the kernel entry point when the boot_loader transfers control to the kernel. The argument is a pointer on the fixed size boot_info_t structure, stored in the local ''kdata'' segment. 139 140 The source code for this function is defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/kern/kernel_init.c almos-mkh/kernel/kern/kernel_init.c] file. 139 141 140 142 When a core enters this function, the MMU status depends on the target architecture: