59
59
testl $SS_RPL3, CS (%esp ) ;\
60
60
jz 2f
61
61
62
+ #define CHECK_IF_NEED_SCHEDULE \
63
+ movl need_resched, %eax ;\
64
+ testl $0xFFFFFFFF , %eax ;\
65
+ jz 1f ;\
66
+ call do_sched ;\
67
+ 1:
68
+
62
69
#define CHECK_IF_SIGNALS \
63
70
call issig ;\
64
71
testl $0xFFFFFFFF , %eax ;\
65
- jz 1f ;\
72
+ jz 2f ;\
66
73
movl %esp , %eax ;\
67
74
pushl %eax ;\
68
75
call psig ;\
69
76
addl $4 , %esp ;\
70
- 1:
71
-
72
- #define CHECK_IF_NEED_SCHEDULE \
73
- movl need_resched, %eax ;\
74
- testl $0xFFFFFFFF , %eax ;\
75
- jz 2f ;\
76
- call do_sched ;\
77
77
2:
78
78
79
79
#define RESTORE_ALL \
95
95
EXCEPTION(num) ;\
96
96
BOTTOM_HALVES ;\
97
97
CHECK_IF_NESTED_INTERRUPT ;\
98
- CHECK_IF_SIGNALS ;\
99
98
CHECK_IF_NEED_SCHEDULE ;\
99
+ CHECK_IF_SIGNALS ;\
100
100
RESTORE_ALL ;\
101
101
iret
102
102
107
107
EXCEPTION(num) ;\
108
108
BOTTOM_HALVES ;\
109
109
CHECK_IF_NESTED_INTERRUPT ;\
110
- CHECK_IF_SIGNALS ;\
111
110
CHECK_IF_NEED_SCHEDULE ;\
111
+ CHECK_IF_SIGNALS ;\
112
112
RESTORE_ALL ;\
113
113
iret
114
114
@@ -128,8 +128,8 @@ BUILD_EXCEPTION_SIMUL_ERR(6, except6) /* INVALID OPCODE */
128
128
clts # floating-opcode cached!
129
129
BOTTOM_HALVES
130
130
CHECK_IF_NESTED_INTERRUPT
131
- CHECK_IF_SIGNALS
132
131
CHECK_IF_NEED_SCHEDULE
132
+ CHECK_IF_SIGNALS
133
133
RESTORE_ALL
134
134
iret
135
135
@@ -167,8 +167,8 @@ BUILD_EXCEPTION_SIMUL_ERR(31, except31) /* INTEL RESERVED */
167
167
IRQ(num) ;\
168
168
BOTTOM_HALVES ;\
169
169
CHECK_IF_NESTED_INTERRUPT ;\
170
- CHECK_IF_SIGNALS ;\
171
170
CHECK_IF_NEED_SCHEDULE ;\
171
+ CHECK_IF_SIGNALS ;\
172
172
RESTORE_ALL ;\
173
173
iret
174
174
@@ -263,8 +263,8 @@ BUILD_IRQ(15, irq15)
263
263
movl %eax , EAX(%esp ) # save the return value
264
264
265
265
BOTTOM_HALVES
266
- CHECK_IF_SIGNALS
267
266
CHECK_IF_NEED_SCHEDULE
267
+ CHECK_IF_SIGNALS
268
268
.align 4
269
269
.globl return_from_syscall; return_from_syscall:
270
270
RESTORE_ALL
0 commit comments