From: Arne Jonsson (arne.jonsson@dsp.se)
Date: Fri Jan 19 2001 - 08:18:31 EST
Hi!
This is only for those knowing anything about uClinux for ARM.
When comparing the stuff RedHat (Wirespeed) put together and the stuff
that Aplio has
made I feel totally lost!
For example:
mm/memory.c differs and it seems to me in an important way:
snippet from the RedHat memory.c:
int new_page_tables(struct task_struct * tsk)
{
pgd_t * page_dir, * new_pg;
if (!(new_pg = pgd_alloc()))
return -ENOMEM;
page_dir = pgd_offset(&init_mm, 0);
flush_cache_mm(tsk->mm);
memcpy(new_pg + USER_PTRS_PER_PGD, page_dir + USER_PTRS_PER_PGD,
(PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof (pgd_t));
flush_tlb_mm(tsk->mm);
SET_PAGE_DIR(tsk, new_pg);
tsk->mm->pgd = new_pg;
return 0;
}
snippet from the Aplio memory.c
int new_page_tables(struct task_struct * tsk)
{
pgd_t * page_dir, * new_pg;
if (!(new_pg = pgd_alloc()))
return -ENOMEM;
page_dir = pgd_offset(&init_mm, 0);
flush_cache_mm(tsk->mm);
memcpy(new_pg + USER_PTRS_PER_PGD, page_dir + USER_PTRS_PER_PGD,
(PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof (pgd_t));
#ifdef CONFIG_ARM
/* on the ARM we need to leave the 1st page mapped in */
copy_pmd_range (new_pg, page_dir, 0, PAGE_SIZE, 0);
#endif
flush_tlb_mm(tsk->mm);
SET_PAGE_DIR(tsk, new_pg);
update_mm_cache_task(tsk);
tsk->mm->pgd = new_pg;
return 0;
}
Is there a patch missing?
Is the above ifdef not necessary in the code from aplio?
The update_mm_cache call is also missing in the RedHat code, why?
Please clarify I really appreciate this because I have to make a
descision on what uClinux to start from RedHat or Aplio.
I am also trying to build a big endian tool-chain for ARM7TDMI. I have
read a lot of stuff but
haven't succeded yet, does anyone have any ides/suggestions?
Regards,
/Arne Jonsson
This message resent by the uclinux-dev@uclinux.org list server http://www.uClinux.org/
This archive was generated by hypermail 2.1.4 : Thu Sep 19 2002 - 13:19:26 EDT