00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _RTAI_ASM_X8664_VECTORS_H
00031 #define _RTAI_ASM_X8664_VECTORS_H
00032
00033 #define RTAI_SYS_VECTOR 0 // was 0xF6 used no more
00034
00035 #ifdef __KERNEL__
00036
00037 #include <linux/version.h>
00038
00039 #include <rtai_hal_names.h>
00040 #include <rtai_config.h>
00041
00042 #define RTAI_APIC_HIGH_VECTOR IPIPE_SERVICE_VECTOR3 // HAL_APIC_HIGH_VECTOR
00043 #define RTAI_APIC_LOW_VECTOR IPIPE_SERVICE_VECTOR0 // HAL_APIC_LOW_VECTOR
00044
00045 #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
00046 #define RTAI_APIC_HIGH_IPI ipipe_apic_vector_irq(RTAI_APIC_HIGH_VECTOR)
00047 #define RTAI_APIC_LOW_IPI ipipe_apic_vector_irq(RTAI_APIC_LOW_VECTOR)
00048 #define RTAI_SYS_IRQ ipipe_apic_vector_irq(RTAI_SYS_VECTOR)
00049 #define LOCAL_TIMER_IPI ipipe_apic_vector_irq(LOCAL_TIMER_VECTOR)
00050 #else
00051 #define RTAI_APIC_HIGH_IPI (RTAI_APIC_HIGH_VECTOR - FIRST_EXTERNAL_VECTOR)
00052 #define RTAI_APIC_LOW_IPI (RTAI_APIC_LOW_VECTOR - FIRST_EXTERNAL_VECTOR)
00053 #define RTAI_SYS_IRQ (RTAI_SYS_VECTOR - FIRST_EXTERNAL_VECTOR)
00054 #define LOCAL_TIMER_IPI (LOCAL_TIMER_VECTOR - FIRST_EXTERNAL_VECTOR)
00055 #endif
00056
00057 #include <linux/interrupt.h>
00058 #if RTAI_APIC_HIGH_VECTOR == RTAI_SYS_VECTOR || RTAI_APIC_LOW_VECTOR == RTAI_SYS_VECTOR
00059 #error *** RTAI_SYS_VECTOR CONFLICTS WITH APIC VECTORS USED BY RTAI ***
00060 #endif
00061
00062 #endif
00063
00064 #define __rtai_stringize0(_s_) #_s_
00065 #define __rtai_stringize(_s_) __rtai_stringize0(_s_)
00066 #define __rtai_trap_call(_t_) _t_
00067 #define __rtai_do_trap0(_t_) __rtai_stringize(int $ _t_)
00068 #define __rtai_do_trap(_t_) __rtai_do_trap0(__rtai_trap_call(_t_))
00069
00070 #define RTAI_DO_TRAP(v, r, a1, a2) do { __asm__ __volatile__ (__rtai_do_trap(v): : "a" (a1), "c" (a2), "d" (&r)); } while (0)
00071
00072 #endif