Changeset 53 for trunk/hal


Ignore:
Timestamp:
Jun 26, 2017, 4:22:00 PM (7 years ago)
Author:
alain
Message:

Compilation OK pout TSAR

Location:
trunk/hal
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/hal/generic/hal_ppm.h

    r50 r53  
    5050 ****************************************************************************************
    5151 * @ info       : pointer on the boot_info structure.
    52  * @ return a local pointer on the Physical Page Table / return NULL if failure.
     52 * @ return 0 if success / return ENOMEMM if failure.
    5353 ***************************************************************************************/
    54 struct page_s * hal_ppm_init( boot_info_t * info );
     54error_t hal_ppm_init( boot_info_t * info );
    5555
    5656#endif  /* HAL_PPM_H_ */
  • trunk/hal/tsar_mips32/hal_gpt.c

    r50 r53  
    121121
    122122    // initialize generic page table descriptor
    123         gpt->ptr  = ppm_page2base( page );
     123        gpt->ptr  = ppm_page2vaddr( page );
    124124        gpt->ppn  = ppm_page2ppn( page );
    125125        gpt->page = page;
     
    193193                // get pointer on PT2
    194194                pt2_ppn = TSAR_MMU_PTBA_FROM_PTE1( pte1 );
    195                 pt2 = ppm_ppn2base( pt2_ppn );
     195                pt2 = ppm_ppn2vaddr( pt2_ppn );
    196196
    197197                // scan the PT2 to release all entries VALID and USER if reference cluster
     
    212212                // release the PT2
    213213                req.type = KMEM_PAGE;
    214                 req.ptr  = ppm_base2page( pt2 );
     214                req.ptr  = ppm_vaddr2page( pt2 );
    215215                kmem_free( &req );
    216216            }
     
    220220    // release the PT1
    221221    req.type = KMEM_PAGE;
    222     req.ptr  = ppm_base2page( pt1 );
     222    req.ptr  = ppm_vaddr2page( pt1 );
    223223    kmem_free( &req );
    224224
     
    255255            {
    256256                pt2_ppn = TSAR_MMU_PTBA_FROM_PTE1( pte1 );
    257                 pt2 = ppm_ppn2base( pt2_ppn );
     257                pt2 = ppm_ppn2vaddr( pt2_ppn );
    258258
    259259                // scan the PT2
     
    339339        }
    340340        pt2_ppn = ppm_page2ppn( page );
    341         pt2     = ppm_page2base( page );
     341        pt2     = ppm_page2vaddr( page );
    342342
    343343        // try to atomicaly set a PTD1 in the PT1 entry
     
    361361
    362362            // compute pointer on PT2 base
    363                         pt2 = (uint32_t*)ppm_ppn2base( pt2_ppn );
     363                        pt2 = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    364364                }
    365365        }
     
    378378
    379379        // compute pointer on PT2 base
    380             pt2 = (uint32_t*)ppm_ppn2base( pt2_ppn );
     380            pt2 = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    381381        }
    382382
     
    424424        // compute PT2 base address
    425425        pt2_ppn = TSAR_MMU_PTBA_FROM_PTE1( pte1 );
    426         pt2     = (uint32_t*)ppm_ppn2base( pt2_ppn );
     426        pt2     = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    427427
    428428            *ppn  = pt2[2*ix2+1] & ((1<<TSAR_MMU_PPN_WIDTH)-1);
     
    478478        // compute PT2 base address
    479479        pt2_ppn = TSAR_MMU_PTBA_FROM_PTE1( pte1 );
    480         pt2 = (uint32_t*)ppm_ppn2base( pt2_ppn );
     480        pt2 = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    481481       
    482482        // get PPN
     
    548548
    549549        pt2_ppn = ppm_page2ppn( page );
    550         pt2     = ppm_page2base( page );
     550        pt2     = ppm_page2vaddr( page );
    551551
    552552        // try to set the PT1 entry
     
    568568            // get the PT2 base address
    569569                        pt2_ppn = TSAR_MMU_PPN_FROM_PTE1( pte1 );
    570                         pt2     = (uint32_t*)ppm_ppn2base( pt2_ppn );
     570                        pt2     = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    571571                }
    572572        }
     
    585585
    586586        // compute pointer on PT2 base
    587             pt2 = (uint32_t*)ppm_ppn2base( pt2_ppn );
     587            pt2 = (uint32_t*)ppm_ppn2vaddr( pt2_ppn );
    588588    }
    589589   
     
    645645    // get pointer on PT2 base
    646646    pt2_ppn = TSAR_MMU_PPN_FROM_PTE1( pte1 );
    647     pt2     = ppm_ppn2base( pt2_ppn );
     647    pt2     = ppm_ppn2vaddr( pt2_ppn );
    648648 
    649649    // get pointer on PTE2
     
    722722
    723723                // get pointer on new PT2 in DST_GPT
    724                 dst_pt2 = (uint32_t *)ppm_page2base( page );
     724                dst_pt2 = (uint32_t *)ppm_page2vaddr( page );
    725725
    726726                // set a new PTD1 in DST_GPT
     
    730730                // get pointer on PT2 in SRC_GPT
    731731                src_pt2_ppn = (ppn_t)TSAR_MMU_PTBA_FROM_PTE1( pte1 );
    732                 src_pt2     = (uint32_t *)ppm_ppn2base( src_pt2_ppn );
     732                src_pt2     = (uint32_t *)ppm_ppn2vaddr( src_pt2_ppn );
    733733
    734734                // scan the SRC_PT2
  • trunk/hal/tsar_mips32/hal_ppm.c

    r50 r53  
    2323 */
    2424
     25#include <kernel_config.h>
     26#include <hal_types.h>
     27#include <hal_ppm.h>
     28#include <hal_special.h>
     29#include <printk.h>
     30#include <spinlock.h>
     31#include <process.h>
     32#include <ppm.h>
     33#include <thread.h>
     34#include <cluster.h>
     35#include <page.h>
    2536
    2637//////////////////////////////////////////////////////////////////////////////////////////
     
    3344
    3445
    35 //////////////////////////////////////////////////
    36 struct page_s * hal_ppm_init( boot_info_t * info )
     46///////////////////////////////////////////
     47error_t hal_ppm_init( boot_info_t * info )
    3748{
     49    uint32_t i;
     50
    3851    // get relevant info from boot_info structure
    3952        uint32_t   pages_nr         = info->pages_nr;
     
    5467
    5568    // initialize all free_pages[] lists as empty
    56         ppm->total_free_pages = 0;
    5769        for( i = 0 ; i < CONFIG_PPM_MAX_ORDER ; i++ )
    5870        {
     
    7082        ppm->pages_nr      = pages_nr;
    7183    ppm->vaddr_base = NULL;
    72         ppm->pages_tbl  = (page_t*)( vaddr_base + (pages_offset << CONFIG_PPM_PAGE_SHIFT) );
     84        ppm->pages_tbl  = (page_t*)( ppm->vaddr_base +
     85                                 (pages_tbl_offset << CONFIG_PPM_PAGE_SHIFT) );
    7386
    7487    // compute size of pages_tbl[] array rounded to an integer number of pages
     
    7992
    8093    // compute total number of reserved pages (kernel code & pages_tbl[])
    81         uint32_t reserved_pages = pages_offset + tbl_nb_pages;
     94        uint32_t reserved_pages = pages_tbl_offset + pages_tbl_nr;
    8295
    8396    // initialises all page descriptors in pages_tbl[]
     
    106119
    107120    // check consistency
    108     ppm_assert_order( ppm );
     121    return ppm_assert_order( ppm );
    109122
    110     // success
    111     return ppm->pages_tbl;
     123}  // end hal_ppm_init()
    112124
    113 }
    114 
Note: See TracChangeset for help on using the changeset viewer.