On Tue, 2005-02-15 at 12:35, Stefano Gafforelli wrote:
> >Well, it looks like one of those preprocessor "##" tricks. I think, in the
> >kernel there are some macros cpu_##CPU##_switch_mm defined. Right, look in
> >include/asm-arm/cpu-single.h
> 
> but in 2.6.7 /include/asm-arm/cpu-single.h there are different macros:
> 
> #ifdef __STDC__
> #define __catify_fn(name,x)   name##x
> #else
> #define __catify_fn(name,x)   name/**/x
> #endif
> #define __cpu_fn(name,x)      __catify_fn(name,x)
> 
> #define cpu_do_switch_mm              __cpu_fn(CPU_NAME,_switch_mm)
> 
> in kernel 2.4.x there are:
>   [deleted as not relevant]
>
> what can we do?
> How does Rtai call  cpu_xscale_switch_mm? We don't know how it does!

Well, you cited (nearly) all the relevant code:
      * CPU_NAME == "cpu_xscale"
      * cpu_do_switch_mm gets defined as "cpu_xscale_switch_mm" which
        can be found in arch/arm/mm/proc-xscale.S
      * proc-fns.h defines cpu_switch_mm() as cpu_do_switch_mm(...)
      * switch_mm() from mmu_context.h is used by RTAI and uses
        cpu_switch_mm()

So for a quick fix just add
        extern void cpu_xscale_switch_mm(void);
        EXPORT_SYMBOL(cpu_xscale_switch_mm);
to arch/arm/kernel/armksyms.c

Mike
-- 
Dr. Michael Neuhauser                phone: +43 1 789 08 49 - 30
Firmix Software GmbH                   fax: +43 1 789 08 49 - 55
Vienna/Austria/Europe                      email: [EMAIL PROTECTED]
Embedded Linux Development and Services    http://www.firmix.at/


Reply via email to