base/include/asm/rtai_oldnames.h

Go to the documentation of this file.
00001 /* 00002 * ARTI -- RTAI-compatible Adeos-based Real-Time Interface. Based on 00003 * the original RTAI layer for x86. This file provides user-visible 00004 * definitions for compatibility purpose with the legacy RTHAL. Must 00005 * be included from rtai_hal.h only. 00006 * 00007 * Original RTAI/x86 layer implementation: 00008 * Copyright (C) 2000 Paolo Mantegazza, 00009 * Copyright (C) 2000 Steve Papacharalambous, 00010 * Copyright (C) 2000 Stuart Hughes, 00011 * and others. 00012 * 00013 * RTAI/x86 rewrite over Adeos: 00014 * Copyright (C) 2002 Philippe Gerum. 00015 * 00016 * This program is free software; you can redistribute it and/or modify 00017 * it under the terms of the GNU General Public License as published by 00018 * the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139, 00019 * USA; either version 2 of the License, or (at your option) any later 00020 * version. 00021 * 00022 * This program is distributed in the hope that it will be useful, 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00025 * GNU General Public License for more details. 00026 * 00027 * You should have received a copy of the GNU General Public License 00028 * along with this program; if not, write to the Free Software 00029 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 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 /* __KERNEL__ */ 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 /* __KERNEL__ */ 00150 00151 #endif /* !__cplusplus */ 00152 00153 #endif /* !__RTAI_HAL__ */ 00154 00155 #endif /* !_RTAI_ASM_I386_OLDNAMES_H */

Generated on Thu Nov 20 11:49:49 2008 for RTAI API by doxygen 1.3.8