sys/i386/i386/exception.s RELENG_4 help to understand several lines
Andrey Simonenko
simon at comsys.ntu-kpi.kiev.ua
Tue Oct 7 04:05:53 PDT 2003
Hi,
Help me to understand several lines from RELENG_4
src/sys/i386/i386/exception.s,v 1.65.2.3 file:
214 calltrap:
215 FAKE_MCOUNT(_btrap) /* init "from" _btrap -> calltrap */
216 MPLOCKED incl _cnt+V_TRAP
217 MP_LOCK
218 movl _cpl,%ebx /* keep orig. cpl here during trap() */
219 call _trap
220 /*
221 * Return via _doreti to handle ASTs. Have to change trap frame
222 * to interrupt frame.
223 */
224 pushl %ebx /* cpl to restore */
225 subl $4,%esp /* dummy unit to finish intr frame */
226 incb _intr_nesting_level
227 MEXITCOUNT
228 jmp _doreti
Is everything correct with 218, 219 and 224 lines (or comments are wrong)?
I checked several places in exception.s and vm86bios.s in sys/i386/i386/
and in all places _cpl is saved in the stack, trap() need frame{} in the
stack, so here we can't put _cpl into stack, but it is unclear for
me how above listed lines works.
How can %ebx contain saved _cpl after trap()?
TIA
More information about the freebsd-questions
mailing list