Changeset 246 for soft/giet_vm/boot


Ignore:
Timestamp:
Jul 9, 2013, 3:54:53 PM (11 years ago)
Author:
meunier
Message:

Cosmétique + gestion du reset de l'irq du timer ou de l'xicu lors d'un task_switch

Location:
soft/giet_vm/boot
Files:
2 edited

Legend:

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

    r245 r246  
    156156{
    157157    unsigned int value;
    158     unsigned int lsb = (unsigned int)paddr;
    159     unsigned int msb = (unsigned int)(paddr >> 32);
     158    unsigned int lsb = (unsigned int) paddr;
     159    unsigned int msb = (unsigned int) (paddr >> 32);
    160160
    161161    asm volatile(
     
    489489    }
    490490
     491
    491492    // get page table physical base address
    492493    pt1_pbase = boot_ptabs_paddr[vspace_id];
    493494
    494495    // get ptd in PT1
    495     ptd = boot_physical_read( pt1_pbase + 4*ix1 );
     496    ptd = boot_physical_read(pt1_pbase + 4 * ix1);
    496497
    497498    if ((ptd & PTE_V) == 0)    // invalid PTD: compute PT2 base address,
     
    508509        {
    509510            pt2_pbase = pt1_pbase + PT1_SIZE + PT2_SIZE * pt2_id;
    510             ptd = PTE_V | PTE_T | (unsigned int)(pt2_pbase >> 12);
    511             boot_physical_write( pt1_pbase + 4*ix1 , ptd);
     511            ptd = PTE_V | PTE_T | (unsigned int) (pt2_pbase >> 12);
     512            boot_physical_write( pt1_pbase + 4 * ix1, ptd);
    512513            boot_next_free_pt2[vspace_id] = pt2_id + 1;
    513514        }
     
    519520
    520521    // set PTE in PT2 : flags & PPN in two 32 bits words
    521     pte_paddr = pt2_pbase + 8*ix2;
    522     boot_physical_write( pte_paddr     , flags);
    523     boot_physical_write( pte_paddr + 4 , ppn);
    524 
    525 if ( verbose )
    526 {
    527 boot_puts("     / pt1_pbase = ");
    528 boot_putl( pt1_pbase );
    529 boot_puts(" / ptd = ");
    530 boot_putl( ptd );
    531 boot_puts(" / pt2_pbase = ");
    532 boot_putl( pt2_pbase );
    533 boot_puts(" / pte_paddr = ");
    534 boot_putl( pte_paddr );
    535 boot_puts(" / ppn = ");
    536 boot_putx( ppn );
    537 boot_puts("/\n");
    538 }
     522    pte_paddr = pt2_pbase + 8 * ix2;
     523    boot_physical_write(pte_paddr    , flags);
     524    boot_physical_write(pte_paddr + 4, ppn);
     525
     526    if (verbose)
     527    {
     528        boot_puts("     / pt1_pbase = ");
     529        boot_putl( pt1_pbase );
     530        boot_puts(" / ptd = ");
     531        boot_putl( ptd );
     532        boot_puts(" / pt2_pbase = ");
     533        boot_putl( pt2_pbase );
     534        boot_puts(" / pte_paddr = ");
     535        boot_putl( pte_paddr );
     536        boot_puts(" / ppn = ");
     537        boot_putx( ppn );
     538        boot_puts("/\n");
     539    }
    539540
    540541}   // end boot_add_pte()
     
    567568    {
    568569        vpn = vseg[vseg_id].vbase >> 12;
    569         ppn = (unsigned int)(vseg[vseg_id].pbase >> 12);
     570        ppn = (unsigned int) (vseg[vseg_id].pbase >> 12);
     571
    570572        npages = vseg[vseg_id].length >> 12;
    571573        if ((vseg[vseg_id].length & 0xFFF) != 0) npages++;
    572574
    573575        flags = PTE_V;
    574         if (vseg[vseg_id].mode & C_MODE_MASK)  flags = flags | PTE_C;
    575         if (vseg[vseg_id].mode & X_MODE_MASK)  flags = flags | PTE_X;
    576         if (vseg[vseg_id].mode & W_MODE_MASK)  flags = flags | PTE_W;
    577         if (vseg[vseg_id].mode & U_MODE_MASK)  flags = flags | PTE_U;
     576        if (vseg[vseg_id].mode & C_MODE_MASK) flags = flags | PTE_C;
     577        if (vseg[vseg_id].mode & X_MODE_MASK) flags = flags | PTE_X;
     578        if (vseg[vseg_id].mode & W_MODE_MASK) flags = flags | PTE_W;
     579        if (vseg[vseg_id].mode & U_MODE_MASK) flags = flags | PTE_U;
    578580
    579581#if BOOT_DEBUG_PT
     
    705707        vobj[vobj_id].paddr = cur_paddr;
    706708       
    707         // initialise boot_ptabs_vaddr[] & boot_ptabs-paddr[] if PTAB
     709        // initialize boot_ptabs_vaddr[] & boot_ptabs-paddr[] if PTAB
    708710        if (vobj[vobj_id].type == VOBJ_TYPE_PTAB)
    709711        {
     
    725727            boot_ptabs_vaddr[vspace_id] = vobj[vobj_id].vaddr;
    726728            boot_ptabs_paddr[vspace_id] = vobj[vobj_id].paddr;
    727 
     729           
    728730            // reset all valid bits in PT1
    729731            for ( offset = 0 ; offset < 8192 ; offset = offset + 4)
    730732            {
    731                 boot_physical_write( cur_paddr + offset, 0);
     733                boot_physical_write(cur_paddr + offset, 0);
    732734            }
    733735
     
    9981000
    9991001        for (vseg_id = vspace[vspace_id].vseg_offset;
    1000                 vseg_id < (vspace[vspace_id].vseg_offset + vspace[vspace_id].vsegs);
    1001                 vseg_id++)
     1002             vseg_id < (vspace[vspace_id].vseg_offset + vspace[vspace_id].vsegs);
     1003             vseg_id++)
    10021004        {
    10031005            boot_vseg_map(&vseg[vseg_id], vspace_id);
     
    11321134boot_puts(vobj[vobj_id].name);
    11331135boot_puts(" / paddr = ");
    1134 boot_putx(vobj[vobj_id].paddr);
     1136boot_putl(vobj[vobj_id].paddr);
    11351137boot_puts(" / length = ");
    11361138boot_putx(vobj[vobj_id].length);
     
    11791181boot_puts(vobj[vobj_id].name);
    11801182boot_puts(" / Paddr :");
    1181 boot_putx(vobj[vobj_id].paddr);
     1183boot_putl(vobj[vobj_id].paddr);
    11821184boot_puts(" / init = ");
    11831185boot_putx(*addr);
     
    18841886
    18851887    // mmu activation ( with page table [Ø] )
    1886     boot_set_mmu_ptpr( (unsigned int)(boot_ptabs_paddr[0] >> 13) );
     1888    boot_set_mmu_ptpr((unsigned int) (boot_ptabs_paddr[0] >> 13));
    18871889    boot_set_mmu_mode(0xF);
    18881890
     
    18901892    boot_putd(boot_proctime());
    18911893    boot_puts("\n");
     1894
    18921895
    18931896    // vobjs initialisation
  • soft/giet_vm/boot/reset.S

    r240 r246  
    5252
    5353    # get the lock protecting TTY0
    54     la          k0, boot_tty0_lock
    55     ll          k1, 0(k0)
    56     bnez        k1, boot_excep
    57     li          k1, 1
    58     sc      k1, 0(k0)
    59     beqz        k1, boot_excep
    60     nop
     54    #la         k0, boot_tty0_lock
     55    #ll         k1, 0(k0)
     56    #bnez       k1, boot_excep
     57    #li         k1, 1
     58    #sc      k1, 0(k0)
     59    #beqz       k1, boot_excep
     60    #nop
    6161
    6262    # display error messages on TTY0 
Note: See TracChangeset for help on using the changeset viewer.