[uClinux-dev] uClinux for ARM to use?

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