aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/desc_64.h
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-01-30 07:31:14 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 07:31:14 -0500
commit507f90c9f92592e7630b1c1e87bf92d2c9858cc6 (patch)
tree23e011c11bc221e1c51702ca7dc748d2b241005d /include/asm-x86/desc_64.h
parent54cd0eac7286b83ef1a657d2dddd74e0556209e7 (diff)
x86: move _set_gate and its users to a common location
This patch moves _set_gate and its users to desc.h. We can now use common code for x86_64 and i386. [ mingo@elte.hu: set_system_gate() fixes for nasty crashes. ] Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86/desc_64.h')
-rw-r--r--include/asm-x86/desc_64.h45
1 files changed, 0 insertions, 45 deletions
diff --git a/include/asm-x86/desc_64.h b/include/asm-x86/desc_64.h
index b0290c45319c..6bc92e6e5cc3 100644
--- a/include/asm-x86/desc_64.h
+++ b/include/asm-x86/desc_64.h
@@ -11,51 +11,6 @@
11 11
12#include <asm/segment.h> 12#include <asm/segment.h>
13 13
14static inline void _set_gate(int gate, unsigned type, unsigned long func,
15 unsigned dpl, unsigned ist)
16{
17 gate_desc s;
18
19 s.offset_low = PTR_LOW(func);
20 s.segment = __KERNEL_CS;
21 s.ist = ist;
22 s.p = 1;
23 s.dpl = dpl;
24 s.zero0 = 0;
25 s.zero1 = 0;
26 s.type = type;
27 s.offset_middle = PTR_MIDDLE(func);
28 s.offset_high = PTR_HIGH(func);
29 /*
30 * does not need to be atomic because it is only done once at
31 * setup time
32 */
33 write_idt_entry(idt_table, gate, &s);
34}
35
36static inline void set_intr_gate(int nr, void *func)
37{
38 BUG_ON((unsigned)nr > 0xFF);
39 _set_gate(nr, GATE_INTERRUPT, (unsigned long) func, 0, 0);
40}
41
42static inline void set_intr_gate_ist(int nr, void *func, unsigned ist)
43{
44 BUG_ON((unsigned)nr > 0xFF);
45 _set_gate(nr, GATE_INTERRUPT, (unsigned long) func, 0, ist);
46}
47
48static inline void set_system_gate(int nr, void *func)
49{
50 BUG_ON((unsigned)nr > 0xFF);
51 _set_gate(nr, GATE_INTERRUPT, (unsigned long) func, 3, 0);
52}
53
54static inline void set_system_gate_ist(int nr, void *func, unsigned ist)
55{
56 _set_gate(nr, GATE_INTERRUPT, (unsigned long) func, 3, ist);
57}
58
59static inline void set_tss_desc(unsigned cpu, void *addr) 14static inline void set_tss_desc(unsigned cpu, void *addr)
60{ 15{
61 struct desc_struct *d = get_cpu_gdt_table(cpu); 16 struct desc_struct *d = get_cpu_gdt_table(cpu);