= GIET_VM / Boot-Loader = The GIET-VM boot-loader is defined in the [source:soft/giet_vm/giet_boot/boot.c boot.c] file. The ''boot_init()'' function makes the initialisation in two steps: == __Sequencial step__ == The first step executed by proc[0][0][0], while other processors are in wait state. === void '''boot_pmem_init()''' === This function makes the physical memory allocators initialisation. The GIET VM uses two types of pages: * BPP : Big Physical Page (2 Mbytes). * SPP : Small Physical Page (4 Kbytes). There is one SPP and one BPP allocator per cluster containing a physical memory bank. All the physical memory allocation is done by the boot-loader === void '''boot_ptabs_init()''' === This function makes the page table initialisation. There is one page table per user application (vspace) defined in the mapping. All these * Proc[0][0][0] MMU activation * Private vobjs initialisation : ''boot_vobjs_init()'' * Schedulers initialisation : ''boot_schedulers init()'' * Peripherals initialisation : ''boot_peripherals_init()'' * Kernel & application code loading : ''boot_elf_load()'' * Start all other processors == __Parallel step__ == The second step is executed in parallel by all processors: * CP0_SCHED register initialisation * MMU Activation * Status Register Initialisation (to use the GIET_VM exception handler). * Jump to ''kernel_init()''