From 9cfd5776aa0fa21b7189269957a8362fd1d78c0c Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 20 Oct 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-10-20 --- pc/l.s | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/pc/l.s b/pc/l.s index 882947fa5c2dfd80ca03c98f4420c3317df61e00..c4792ac9eace465b3cdf3cafc47453d86e489836 100644 --- a/pc/l.s +++ b/pc/l.s @@ -512,27 +512,28 @@ TEXT setlabel(SB), $0 * The size of each entry in the vector table (6 bytes) is known in trapinit(). */ TEXT _strayintr(SB), $0 - PUSHL AX /* save AX */ - MOVL 4(SP), AX /* return PC from vectortable(SB) */ - MOVBLZX (AX), AX /* trap type */ - XCHGL AX, (SP) /* restore AX and put the type on the stack */ + PUSHL AX /* save AX */ + MOVL 4(SP), AX /* return PC from vectortable(SB) */ JMP intrcommon TEXT _strayintrx(SB), $0 - XCHGL AX, (SP) /* exchange AX with pointer to trap type */ - MOVBLZX (AX), AX /* trap type -> AX */ - XCHGL AX, (SP) /* exchange trap type with AX */ - + XCHGL AX, (SP) /* swap AX with vectortable CALL PC */ intrcommon: - PUSHL DS - PUSHL ES - PUSHL FS + PUSHL DS /* save DS */ + PUSHL $(KDSEL) + POPL DS /* fix up DS */ + MOVBLZX (AX), AX /* trap type -> AX */ + XCHGL AX, 4(SP) /* exchange trap type with saved AX */ + + PUSHL ES /* save ES */ + PUSHL $(KDSEL) + POPL ES /* fix up ES */ + + PUSHL FS /* save the rest of the Ureg struct */ PUSHL GS PUSHAL - MOVL $(KDSEL), AX - MOVW AX, DS - MOVW AX, ES - PUSHL SP + + PUSHL SP /* Ureg* argument to trap */ CALL trap(SB) TEXT forkret(SB), $0