Ignore:
Timestamp:
Feb 4, 2014, 2:16:37 AM (11 years ago)
Author:
cfuguet
Message:

Modifications on GIET-VM IOC driver:

  • Introducing new layer on the IOC driver. Every call to ioc_read, ioc_write, ioc_get_block_size or ioc_init

functions will call the specific driver of the used IOC
controller. Supported IOC controllers are (for now) :

  1. BDV (Soclib Block Device)
  2. HBA
  3. SPI (SDCARD - SPI controller)
  • All functions of IOC controllers drivers respect the same interface.
  • To specify the used IOC controller of the platform, a subtype field has been introduced on the map.xml file. This subtype field must be declared on the IOC periph instantiation. Available subtypes (for now) : BDV, HBA or SPI.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_kernel/kernel_init.c

    r281 r289  
    6464
    6565////////////////////////////////////////////////////////////////////////////////////
    66 // staks for the "idle" tasks (256 bytes for each processor)
     66// staks for the "idle" tasks (512 bytes for each processor)
    6767////////////////////////////////////////////////////////////////////////////////////
    6868
    6969__attribute__((section (".kdata")))
    70 unsigned int _idle_stack[X_SIZE*Y_SIZE * NB_PROCS_MAX * 128];
     70unsigned int _idle_stack[X_SIZE * Y_SIZE * NB_PROCS_MAX * 128 ];
    7171
    7272////////////////////////////////////////////////////////////////////////////////////
     
    343343    // step 5 : each processor updates the idle_task context:
    344344    //          (only CTX_SP, CTX_RA, CTX_EPC).
    345     //          The stack size is 256 bytes, reserved in seg_kdata.
     345    //          The stack size is 512 bytes, reserved in seg_kdata.
    346346    //          The PTPR register, the CTX_PTPR and CTX_PTAB slots
    347347    //          have been initialised in boot code.
    348348
    349     unsigned int stack = (unsigned int)_idle_stack + ((global_pid + 1)<<9);
     349    unsigned int x = cluster_xy >> Y_WIDTH;
     350    unsigned int y = cluster_xy & ((1<<Y_WIDTH)-1);
     351    unsigned int p = ((x * Y_SIZE) + y) * NB_PROCS_MAX + local_pid;
     352
     353    unsigned int stack = (unsigned int)_idle_stack + ((p + 1)<<9);
    350354
    351355    _set_task_slot( global_pid, IDLE_TASK_INDEX, CTX_SP_ID,  stack);
Note: See TracChangeset for help on using the changeset viewer.