Rev 348 | Rev 501 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 348 | Rev 413 | ||
---|---|---|---|
Line 80... | Line 80... | ||
80 | :"m"( port), "m" (b) |
80 | :"m"( port), "m" (b) |
81 | :"%rdx","%rax" |
81 | :"%rdx","%rax" |
82 | ); |
82 | ); |
83 | } |
83 | } |
84 | 84 | ||
85 | /** Set priority level low |
85 | /** Enable interrupts. |
86 | * |
86 | * |
87 | * Enable interrupts and return previous |
87 | * Enable interrupts and return previous |
88 | * value of EFLAGS. |
88 | * value of EFLAGS. |
- | 89 | * |
|
- | 90 | * @return Old interrupt priority level. |
|
89 | */ |
91 | */ |
90 | static inline pri_t cpu_priority_low(void) { |
92 | static inline ipl_t interrupts_enable(void) { |
91 | pri_t v; |
93 | ipl_t v; |
92 | __asm__ volatile ( |
94 | __asm__ volatile ( |
93 | "pushfq\n" |
95 | "pushfq\n" |
94 | "popq %0\n" |
96 | "popq %0\n" |
95 | "sti\n" |
97 | "sti\n" |
96 | : "=r" (v) |
98 | : "=r" (v) |
97 | ); |
99 | ); |
98 | return v; |
100 | return v; |
99 | } |
101 | } |
100 | 102 | ||
101 | /** Set priority level high |
103 | /** Disable interrupts. |
102 | * |
104 | * |
103 | * Disable interrupts and return previous |
105 | * Disable interrupts and return previous |
104 | * value of EFLAGS. |
106 | * value of EFLAGS. |
- | 107 | * |
|
- | 108 | * @return Old interrupt priority level. |
|
105 | */ |
109 | */ |
106 | static inline pri_t cpu_priority_high(void) { |
110 | static inline ipl_t interrupts_disable(void) { |
107 | pri_t v; |
111 | ipl_t v; |
108 | __asm__ volatile ( |
112 | __asm__ volatile ( |
109 | "pushfq\n" |
113 | "pushfq\n" |
110 | "popq %0\n" |
114 | "popq %0\n" |
111 | "cli\n" |
115 | "cli\n" |
112 | : "=r" (v) |
116 | : "=r" (v) |
113 | ); |
117 | ); |
114 | return v; |
118 | return v; |
115 | } |
119 | } |
116 | 120 | ||
117 | /** Restore priority level |
121 | /** Restore interrupt priority level. |
118 | * |
122 | * |
119 | * Restore EFLAGS. |
123 | * Restore EFLAGS. |
- | 124 | * |
|
- | 125 | * @param ipl Saved interrupt priority level. |
|
120 | */ |
126 | */ |
121 | static inline void cpu_priority_restore(pri_t pri) { |
127 | static inline void interrupts_restore(ipl_t ipl) { |
122 | __asm__ volatile ( |
128 | __asm__ volatile ( |
123 | "pushq %0\n" |
129 | "pushq %0\n" |
124 | "popfq\n" |
130 | "popfq\n" |
125 | : : "r" (pri) |
131 | : : "r" (ipl) |
126 | ); |
132 | ); |
127 | } |
133 | } |
128 | 134 | ||
129 | /** Return raw priority level |
135 | /** Return interrupt priority level. |
130 | * |
136 | * |
131 | * Return EFLAFS. |
137 | * Return EFLAFS. |
- | 138 | * |
|
- | 139 | * @return Current interrupt priority level. |
|
132 | */ |
140 | */ |
133 | static inline pri_t cpu_priority_read(void) { |
141 | static inline ipl_t interrupts_read(void) { |
134 | pri_t v; |
142 | ipl_t v; |
135 | __asm__ volatile ( |
143 | __asm__ volatile ( |
136 | "pushfq\n" |
144 | "pushfq\n" |
137 | "popq %0\n" |
145 | "popq %0\n" |
138 | : "=r" (v) |
146 | : "=r" (v) |
139 | ); |
147 | ); |