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_local_irq_save(x)
00041 #define hard_restore_flags(x) rtai_local_irq_restore(x)
00042 #define hard_save_flags(x) rtai_local_irq_flags(x)
00043 #define hard_cpu_id adeos_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 #define RTAI_NR_TRAPS ADEOS_NR_FAULTS
00083
00084 #ifndef __cplusplus
00085
00086 #include <linux/irq.h>
00087 #include <asm/desc.h>
00088
00089 extern struct desc_struct idt_table[];
00090
00091 static inline struct desc_struct rt_set_full_intr_vect (unsigned vector,
00092 int type,
00093 int dpl,
00094 void (*handler)(void)) {
00095 struct desc_struct e = idt_table[vector];
00096 idt_table[vector].a = (__KERNEL_CS << 16) | ((unsigned)handler & 0x0000FFFF);
00097 idt_table[vector].b = ((unsigned)handler & 0xFFFF0000) | (0x8000 + (dpl << 13) + (type << 8));
00098 return e;
00099 }
00100
00101 static inline void rt_reset_full_intr_vect(unsigned vector,
00102 struct desc_struct e) {
00103 idt_table[vector] = e;
00104 }
00105
00106 static inline int rt_request_cpu_own_irq (unsigned irq, void (*handler)(void)) {
00107
00108 return rt_request_irq(irq, (rt_irq_handler_t)handler, NULL, 0);
00109 }
00110
00111 static inline int rt_free_cpu_own_irq (unsigned irq) {
00112
00113 return rt_release_irq(irq);
00114 }
00115
00116 static inline void *get_intr_handler (unsigned vector) {
00117
00118 return (void *)((idt_table[vector].b & 0xFFFF0000) |
00119 (idt_table[vector].a & 0x0000FFFF));
00120 }
00121
00122 static inline void set_intr_vect (unsigned vector,
00123 void (*handler)(void)) {
00124
00125 idt_table[vector].a = (idt_table[vector].a & 0xFFFF0000) |
00126 ((unsigned)handler & 0x0000FFFF);
00127 idt_table[vector].b = ((unsigned)handler & 0xFFFF0000) |
00128 (idt_table[vector].b & 0x0000FFFF);
00129 }
00130
00131 static inline void *rt_set_intr_handler (unsigned vector,
00132 void (*handler)(void)) {
00133
00134 void (*saved_handler)(void) = get_intr_handler(vector);
00135 set_intr_vect(vector, handler);
00136 return saved_handler;
00137 }
00138
00139 static inline void rt_reset_intr_handler (unsigned vector,
00140 void (*handler)(void)) {
00141 set_intr_vect(vector, handler);
00142 }
00143
00144 static inline unsigned long get_cr2 (void) {
00145
00146 unsigned long address;
00147 __asm__("movl %%cr2,%0":"=r" (address));
00148 return address;
00149 }
00150
00151 #endif
00152
00153 #endif
00154
00155 #endif
00156
00157 #endif