Subversion Repositories HelenOS

Rev

Rev 413 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 413 Rev 432
Line 136... Line 136...
136
 * Enable interrupts and return previous
136
 * Enable interrupts and return previous
137
 * value of EFLAGS.
137
 * value of EFLAGS.
138
 *
138
 *
139
 * @return Old interrupt priority level.
139
 * @return Old interrupt priority level.
140
 */
140
 */
141
static inline ipl_t interrupts_enable(void) {
141
static inline ipl_t interrupts_enable(void)
-
 
142
{
142
    ipl_t v;
143
    ipl_t v;
143
    __asm__ volatile (
144
    __asm__ volatile (
144
        "pushf\n\t"
145
        "pushf\n\t"
145
        "popl %0\n\t"
146
        "popl %0\n\t"
146
        "sti\n"
147
        "sti\n"
Line 154... Line 155...
154
 * Disable interrupts and return previous
155
 * Disable interrupts and return previous
155
 * value of EFLAGS.
156
 * value of EFLAGS.
156
 *
157
 *
157
 * @return Old interrupt priority level.
158
 * @return Old interrupt priority level.
158
 */
159
 */
159
static inline ipl_t interrupts_disable(void) {
160
static inline ipl_t interrupts_disable(void)
-
 
161
{
160
    ipl_t v;
162
    ipl_t v;
161
    __asm__ volatile (
163
    __asm__ volatile (
162
        "pushf\n\t"
164
        "pushf\n\t"
163
        "popl %0\n\t"
165
        "popl %0\n\t"
164
        "cli\n"
166
        "cli\n"
Line 171... Line 173...
171
 *
173
 *
172
 * Restore EFLAGS.
174
 * Restore EFLAGS.
173
 *
175
 *
174
 * @param ipl Saved interrupt priority level.
176
 * @param ipl Saved interrupt priority level.
175
 */
177
 */
176
static inline void interrupts_restore(ipl_t ipl) {
178
static inline void interrupts_restore(ipl_t ipl)
-
 
179
{
177
    __asm__ volatile (
180
    __asm__ volatile (
178
        "pushl %0\n\t"
181
        "pushl %0\n\t"
179
        "popf\n"
182
        "popf\n"
180
        : : "r" (ipl)
183
        : : "r" (ipl)
181
    );
184
    );
Line 183... Line 186...
183
 
186
 
184
/** Return interrupt priority level.
187
/** Return interrupt priority level.
185
 *
188
 *
186
 * @return EFLAFS.
189
 * @return EFLAFS.
187
 */
190
 */
188
static inline ipl_t interrupts_read(void) {
191
static inline ipl_t interrupts_read(void)
-
 
192
{
189
    ipl_t v;
193
    ipl_t v;
190
    __asm__ volatile (
194
    __asm__ volatile (
191
        "pushf\n\t"
195
        "pushf\n\t"
192
        "popl %0\n"
196
        "popl %0\n"
193
        : "=r" (v)
197
        : "=r" (v)