Changeset 230


Ignore:
Timestamp:
Feb 22, 2013, 4:03:48 PM (11 years ago)
Author:
meunier
Message:

Correction d'un bug lors du boot pour les alignements
Modification de l'appel SRL pour les CONST

Location:
soft/giet_vm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/boot/boot_init.c

    r228 r230  
    740740
    741741    // get physical segment pointer
    742     mapping_pseg_t *pseg = boot_pseg_get(vseg->psegid);
     742    mapping_pseg_t * pseg = boot_pseg_get(vseg->psegid);
    743743
    744744    // compute vseg physical base address
     
    757757    // loop on vobjs contained in vseg to :
    758758    // (1) computes the length of the vseg,
    759     // (2) initialise the vaddr and paddr fields of all vobjs,
    760     // (3) initialise the page table pointers arrays
     759    // (2) initialize the vaddr and paddr fields of all vobjs,
     760    // (3) initialize the page table pointers arrays
    761761
    762762    cur_vaddr = vseg->vbase;
     
    766766        if (vobj[vobj_id].align) {
    767767            cur_paddr = align_to(cur_paddr, vobj[vobj_id].align);
     768            cur_vaddr = align_to(cur_vaddr, vobj[vobj_id].align);
    768769        }
    769770        // set vaddr/paddr for current vobj
    770771        vobj[vobj_id].vaddr = cur_vaddr;
    771772        vobj[vobj_id].paddr = cur_paddr;
    772 
     773       
    773774        // initialise boot_ptabs_vaddr[] if current vobj is a PTAB
    774775        if (vobj[vobj_id].type == VOBJ_TYPE_PTAB) {
     
    11911192                    boot_puts(" / paddr = ");
    11921193                    boot_putx(vobj[vobj_id].paddr);
     1194                    boot_puts(" / vaddr = ");
     1195                    boot_putx(vobj[vobj_id].vaddr);
    11931196                    boot_puts(" / length = ");
    11941197                    boot_putx(vobj[vobj_id].length);
     1198                    boot_puts(" / buffer = ");
     1199                    boot_putx(memspace->buffer);
     1200                    boot_puts(" / size = ");
     1201                    boot_putx(memspace->size);
    11951202                    boot_puts("\n");
    11961203#endif
    11971204                    break;
    11981205                }
    1199                 case VOBJ_TYPE_PTAB:    // nothing to initialise
     1206                case VOBJ_TYPE_PTAB:    // nothing to initialize
    12001207                {
    12011208                    ptab_found = 1;
     
    12111218                case VOBJ_TYPE_CONST:
    12121219                {
     1220                    unsigned int *addr = (unsigned int *) vobj[vobj_id].paddr;
     1221                    *addr = vobj[vobj_id].init;
    12131222#if BOOT_DEBUG_VOBJS
    12141223                    boot_puts("CONST   : ");
     
    12171226                    boot_putx(vobj[vobj_id].paddr);
    12181227                    boot_puts(" / init = ");
    1219                     boot_putx(vobj[vobj_id].init);
     1228                    boot_putx(*addr);
    12201229                    boot_puts("\n");
    12211230#endif
    1222                     unsigned int *addr = (unsigned int *) vobj[vobj_id].paddr;
    1223                     *addr = vobj[vobj_id].init;
    12241231                    break;
    12251232                }
     
    12281235                    boot_puts("\n[INIT ERROR] illegal vobj type: ");
    12291236                    boot_putd(vobj[vobj_id].type);
    1230                     boot_puts("\n ");
     1237                    boot_puts("\n");
    12311238                    boot_exit();
    12321239                }
  • soft/giet_vm/libs/libsrl/srl_args.h

    r228 r230  
    77#define SRL_GET_BARRIER(port)   (srl_barrier_t)  APP_GET_ARG(port, VOBJ_TYPE_BARRIER)
    88#define SRL_GET_LOCK(port)                       APP_GET_ARG(port, VOBJ_TYPE_LOCK)
    9 #define SRL_GET_CONST(port)                      APP_GET_ARG(port, VOBJ_TYPE_CONST)
    109#define SRL_GET_MEMSPACE(port)  (srl_memspace_t) APP_GET_ARG(port, VOBJ_TYPE_MEMSPACE)
    1110
     
    1413({                                                                                                 \
    1514    unsigned int  vbase;                                                                           \
    16     if (giet_vobj_get_vbase(APP_NAME , alias_##task_name.port, type, &vbase))                      \
     15    if (giet_vobj_get_vbase(APP_NAME , args->port, type, &vbase))                                  \
    1716    {                                                                                              \
    1817        srl_log_printf(NONE, "\n[ERROR] in "#task_name" task :\n");                                \
    1918        srl_log_printf(NONE, "          undefined port <"#port"> for channel \"%s\": %x\n",        \
    20                                                                 alias_##task_name.port, vbase);    \
     19                                                                args->port, vbase);                \
    2120        srl_log_printf(TRACE, "*** &"#port" = %x\n\n", vbase);                                     \
    2221        srl_exit();                                                                                \
     
    2928
    3029
     30#define SRL_GET_CONST(port)                                                                        \
     31({                                                                                                 \
     32    unsigned int vbase;                                                                            \
     33    if (giet_vobj_get_vbase(APP_NAME, args->port, VOBJ_TYPE_CONST, &vbase)) {                      \
     34        srl_log_printf(NONE, "\n[ERROR] in some task :\n");                                        \
     35        srl_log_printf(NONE, "          undefined port <"#port"> for channel \"%s\": %x\n",        \
     36                                                                args->port, vbase);                \
     37        srl_log_printf(TRACE, "*** &"#port" = %x\n\n", vbase);                                     \
     38        srl_exit();                                                                                \
     39    }                                                                                              \
     40    else                                                                                           \
     41        srl_log_printf(TRACE, "%s:%d: arg of %s, from %s; &"#port" = %x\n\n",                      \
     42                            __FILE__, __LINE__, APP_NAME, #port, vbase);                           \
     43    *(int *) vbase;                                                                                \
     44})
     45
    3146
    3247#endif
  • soft/giet_vm/sys/sys_handler.c

    r229 r230  
    148148    unsigned int vobj_id;
    149149
    150 
    151150    // scan vspaces
    152151    for (vspace_id = 0; vspace_id < header->vspaces; vspace_id++) {
     
    162161                        _puts("*** Error in _get_obj: wrong type\n");
    163162                        _release_lock(&_tty_put_lock);
    164                         return -1; //wrong type
     163                        return -1; // wrong type
    165164                    }
    166165                    *res_vobj = &vobj[vobj_id];
  • soft/giet_vm/xml/xml_parser.c

    r228 r230  
    777777        const char * tag = (const char *) xmlTextReaderConstName(reader);
    778778
    779         if (strcmp(tag, "vseg")     == 0 ) {
     779        if (strcmp(tag, "vseg") == 0) {
    780780            vsegNode(reader);
    781781        }
    782         else if (strcmp(tag, "task")     == 0 ) {
     782        else if (strcmp(tag, "task") == 0) {
    783783            taskNode(reader);
    784784        }
    785         else if (strcmp(tag, "#text")    == 0 ) { }
    786         else if (strcmp(tag, "#comment") == 0 ) { }
    787         else if (strcmp(tag, "vspace")   == 0 ) {
     785        else if (strcmp(tag, "#text")    == 0) { }
     786        else if (strcmp(tag, "#comment") == 0) { }
     787        else if (strcmp(tag, "vspace")   == 0) {
    788788            vspace[vspace_index]->vobjs = vobj_loc_index;
    789789            vspace[vspace_index]->tasks = task_loc_index ;
Note: See TracChangeset for help on using the changeset viewer.