00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef RTAI_SHM_ASM_H
00023 #define RTAI_SHM_ASM_H
00024
00025 #undef __SHM_USE_VECTOR // until we implement it for arm...
00026 #define RTAI_SHM_VECTOR 0xFD
00027
00028 #ifndef __KERNEL__
00029
00030 #define RTAI_SRQ_MAGIC "0x404404"
00031
00032 #ifdef __SHM_USE_VECTOR
00033 static inline long long rtai_shmrq(unsigned long srq, unsigned long whatever)
00034 {
00035 long long retval;
00036 register unsigned long __sc_0 __asm__ ("r0") = srq | (RTAI_SHM_VECTOR << 24);
00037 register unsigned long __sc_1 __asm__ ("r1") = whatever;
00038
00039 __asm__ __volatile__ (
00040 "swi\t" RTAI_SRQ_MAGIC "\n\t"
00041 : "=&r" (__sc_0), "=&r" (__sc_1)
00042 : "0" (__sc_0), "1" (__sc_1)
00043 : "r0", "r1");
00044 ((unsigned long *)&retval)[0] = __sc_0;
00045 ((unsigned long *)&retval)[1] = __sc_1;
00046 return retval;
00047 }
00048 #endif
00049
00050 #else
00051
00052 #define RTAI_SHM_HANDLER shm_handler
00053
00054 #define DEFINE_SHM_HANDLER
00055
00056 #endif
00057
00058 #endif