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/