Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/main/main.c

    rdabbe28 r26aafe8  
    6868#include <mm/page.h>
    6969#include <genarch/mm/page_pt.h>
    70 #include <mm/km.h>
    7170#include <mm/tlb.h>
    7271#include <mm/as.h>
     
    8786#include <sysinfo/sysinfo.h>
    8887#include <sysinfo/stats.h>
    89 #include <lib/ra.h>
    9088
    9189/** Global configuration structure. */
    92 config_t config = {
    93         .identity_configured = false,
    94         .non_identity_configured = false,
    95         .physmem_end = 0
    96 };
     90config_t config;
    9791
    9892/** Initial user-space tasks */
     
    151145        size_t i;
    152146        for (i = 0; i < init.cnt; i++) {
    153                 if (overlaps(KA2PA(config.stack_base), config.stack_size,
    154                     init.tasks[i].paddr, init.tasks[i].size)) {
    155                         /*
    156                          * The init task overlaps with the memory behind the
    157                          * kernel image so it must be in low memory and we can
    158                          * use PA2KA on the init task's physical address.
    159                          */
    160                         config.stack_base = ALIGN_UP(
    161                             PA2KA(init.tasks[i].paddr) + init.tasks[i].size,
    162                             config.stack_size);
    163                 }
     147                if (PA_OVERLAPS(config.stack_base, config.stack_size,
     148                    init.tasks[i].addr, init.tasks[i].size))
     149                        config.stack_base = ALIGN_UP(init.tasks[i].addr +
     150                            init.tasks[i].size, config.stack_size);
    164151        }
    165152       
     
    218205         */
    219206        arch_pre_mm_init();
    220         km_identity_init();
    221207        frame_init();
     208       
     209        /* Initialize at least 1 memory segment big enough for slab to work. */
    222210        slab_cache_init();
    223         ra_init();
    224211        sysinfo_init();
    225212        btree_init();
     
    227214        page_init();
    228215        tlb_init();
    229         km_non_identity_init();
    230216        ddi_init();
    231217        arch_post_mm_init();
     
    257243                for (i = 0; i < init.cnt; i++)
    258244                        LOG("init[%zu].addr=%p, init[%zu].size=%zu",
    259                             i, (void *) init.tasks[i].paddr, i, init.tasks[i].size);
     245                            i, (void *) init.tasks[i].addr, i, init.tasks[i].size);
    260246        } else
    261247                printf("No init binaries found.\n");
     
    276262         * Create the first thread.
    277263         */
    278         thread_t *kinit_thread =
    279             thread_create(kinit, NULL, kernel, 0, "kinit", true);
     264        thread_t *kinit_thread
     265                = thread_create(kinit, NULL, kernel, 0, "kinit", true);
    280266        if (!kinit_thread)
    281267                panic("Cannot create kinit thread.");
Note: See TracChangeset for help on using the changeset viewer.