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:
#ifdef __STDC__
#define __cpu_fn(name,x) cpu_##name##x
#else
#define __cpu_fn(name,x) cpu_/**/name/**/x
#endif
#define cpu_fn(name,x) __cpu_fn(name,x)
.....
#define cpu_switch_mm(pgd,tsk) cpu_set_pgd(__virt_to_phys((unsigned
long)(pgd)))
#define cpu_get_pgd() \
({ \
unsigned long pg; \
__asm__("mrc p15, 0, %0, c2, c0, 0" \
: "=r" (pg)); \
pg &= ~0x3fff; \
(pgd_t *)phys_to_virt(pg); \
})
what can we do?
How does Rtai call cpu_xscale_switch_mm? We don't know how it does!
Luca & Ste
_________________________________________________________________
Personalizza MSN Messenger con sfondi e fotografie!
http://www.ilovemessenger.msn.it/