Changeset 230 for soft/giet_vm/boot


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

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

File:
1 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                }
Note: See TracChangeset for help on using the changeset viewer.