in cmem.c :
static unsigned long get_phys(unsigned long virtp)
{
    pgd_t *pgd;
    pmd_t *pmd;
    pte_t *pte;
    struct mm_struct *mm = current->mm;

    pgd = pgd_offset(mm, virtp);
    if (!(pgd_none(*pgd) || pgd_bad(*pgd))) {
        pmd = pmd_offset(pgd, virtp);

        if (!(pmd_none(*pmd) || pmd_bad(*pmd))) {
            pte = pte_offset_kernel(pmd, virtp);                  

            if (pte_present(*pte)) {
                return __pa(page_address(pte_page(*pte)) +
                            (virtp & ~PAGE_MASK));
            }
        }
    }

    return 0;
}

get_phys() is different from      __pa() ? or they are all correct but used in 
different condittion ?





_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to