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/


Reply via email to