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
00031
00032 #ifndef _RTAI_ASM_I386_OLDNAMES_H
00033 #define _RTAI_ASM_I386_OLDNAMES_H
00034
00035 #ifdef __KERNEL__
00036
00037 #define IFLAG RTAI_IFLAG
00038 #define hard_cli() rtai_cli()
00039 #define hard_sti() rtai_sti()
00040 #define hard_save_flags_and_cli(x) rtai_save_flags_and_cli(x)
00041 #define hard_restore_flags(x) rtai_restore_flags(x)
00042 #define hard_save_flags(x) rtai_save_flags(x)
00043 #define hard_cpu_id hal_processor_id
00044
00045 #endif
00046
00047 #ifndef __RTAI_HAL__
00048
00049 #define tuned rtai_tunables
00050 #define NR_RT_CPUS RTAI_NR_CPUS
00051 #define RT_TIME_END RTAI_TIME_LIMIT
00052
00053 #define CPU_FREQ RTAI_CPU_FREQ
00054 #define TIMER_8254_IRQ RTAI_TIMER_8254_IRQ
00055 #define FREQ_8254 RTAI_FREQ_8254
00056 #define LATENCY_8254 RTAI_LATENCY_8254
00057 #define SETUP_TIME_8254 RTAI_SETUP_TIME_8254
00058
00059 #define FREQ_APIC RTAI_FREQ_APIC
00060 #define LATENCY_APIC RTAI_LATENCY_APIC
00061 #define SETUP_TIME_APIC RTAI_SETUP_TIME_APIC
00062
00063 #define CALIBRATED_APIC_FREQ RTAI_CALIBRATED_APIC_FREQ
00064 #define CALIBRATED_CPU_FREQ RTAI_CALIBRATED_CPU_FREQ
00065
00066 #ifdef __KERNEL__
00067
00068 #undef rdtsc
00069 #define rdtsc() rtai_rdtsc()
00070 #define rd_CPU_ts() rtai_rdtsc()
00071
00072 #define rt_set_rtai_trap_handler rt_set_trap_handler
00073 #define rt_mount_rtai rt_mount
00074 #define rt_umount_rtai rt_umount
00075 #define calibrate_8254 rtai_calibrate_8254
00076
00077 #define ulldiv(a,b,c) rtai_ulldiv(a,b,c)
00078 #define imuldiv(a,b,c) rtai_imuldiv(a,b,c)
00079 #define llimd(a,b,c) rtai_llimd(a,b,c)
00080 #define u64div32(a,b,c) rtai_u64div32c(a,b,c)
00081
00082 #ifndef __cplusplus
00083
00084 #include <linux/irq.h>
00085 #include <asm/desc.h>
00086
00087 extern struct desc_struct idt_table[];
00088
00089 static inline struct desc_struct rt_set_full_intr_vect (unsigned vector,
00090 int type,
00091 int dpl,
00092 void (*handler)(void)) {
00093 struct desc_struct e = idt_table[vector];
00094 idt_table[vector].a = (__KERNEL_CS << 16) | ((unsigned)handler & 0x0000FFFF);
00095 idt_table[vector].b = ((unsigned)handler & 0xFFFF0000) | (0x8000 + (dpl << 13) + (type << 8));
00096 return e;
00097 }
00098
00099 static inline void rt_reset_full_intr_vect(unsigned vector,
00100 struct desc_struct e) {
00101 idt_table[vector] = e;
00102 }
00103
00104 static inline int rt_request_cpu_own_irq (unsigned irq, void (*handler)(void)) {
00105
00106 return rt_request_irq(irq, (rt_irq_handler_t)handler, NULL, 0);
00107 }
00108
00109 static inline int rt_free_cpu_own_irq (unsigned irq) {
00110
00111 return rt_release_irq(irq);
00112 }
00113
00114 static inline void *get_intr_handler (unsigned vector) {
00115
00116 return (void *)((idt_table[vector].b & 0xFFFF0000) |
00117 (idt_table[vector].a & 0x0000FFFF));
00118 }
00119
00120 static inline void set_intr_vect (unsigned vector,
00121 void (*handler)(void)) {
00122
00123 idt_table[vector].a = (idt_table[vector].a & 0xFFFF0000) |
00124 ((unsigned)handler & 0x0000FFFF);
00125 idt_table[vector].b = ((unsigned)handler & 0xFFFF0000) |
00126 (idt_table[vector].b & 0x0000FFFF);
00127 }
00128
00129 static inline void *rt_set_intr_handler (unsigned vector,
00130 void (*handler)(void)) {
00131
00132 void (*saved_handler)(void) = get_intr_handler(vector);
00133 set_intr_vect(vector, handler);
00134 return saved_handler;
00135 }
00136
00137 static inline void rt_reset_intr_handler (unsigned vector,
00138 void (*handler)(void)) {
00139 set_intr_vect(vector, handler);
00140 }
00141
00142 static inline unsigned long get_cr2 (void) {
00143
00144 unsigned long address;
00145 __asm__("movl %%cr2,%0":"=r" (address));
00146 return address;
00147 }
00148
00149 #endif
00150
00151 #endif
00152
00153 #endif
00154
00155 #endif