* [PATCH] Mini-OS return from exception fix
[not found] ` <45C22150.90402@Sun.COM>
@ 2007-02-02 10:56 ` Grzegorz Milos
0 siblings, 0 replies; only message in thread
From: Grzegorz Milos @ 2007-02-02 10:56 UTC (permalink / raw)
To: Mick.Jordan, xen-devel
[-- Attachment #1: Type: text/plain, Size: 539 bytes --]
This patch fixes ret_from_exception routine. Stack consistency is now
preserved.
Signed-off-by: Grzegorz Milos <gm281@cam.ac.uk>
Keir could you apply? Thanks.
Gregor
> I've modified minios to do dynamic page fault handling rather than setup
> all the page tables ahead of time (just to improve my understanding) but
> it's crashing on return and looks like the stack may be wrong. Before I
> dive in the assembler code, is the code in x86_32.S at page_fault and
> ret_from_exception expected to work if the fault is fixed up?
>
[-- Attachment #2: mini-os.patch --]
[-- Type: text/plain, Size: 753 bytes --]
diff -r 8690e3448971 -r 25619d57eaa5 extras/mini-os/arch/x86/x86_32.S
--- a/extras/mini-os/arch/x86/x86_32.S Wed Jan 17 15:09:50 2007 +0000
+++ b/extras/mini-os/arch/x86/x86_32.S Fri Feb 02 10:50:20 2007 +0000
@@ -69,7 +69,7 @@ CS = 0x2C
popl %ds; \
popl %es; \
addl $4,%esp; \
- iret; \
+ iret;
ENTRY(divide_error)
pushl $0 # no error code
@@ -101,10 +101,9 @@ do_exception:
jmp ret_from_exception
ret_from_exception:
- movb CS(%esp),%cl
- test $2,%cl # slow return to ring 2 or 3
- jne safesti
- RESTORE_ALL
+ movb CS(%esp),%cl
+ addl $8,%esp
+ RESTORE_ALL
# A note on the "critical region" in our callback handler.
# We want to avoid stacking callback handlers due to events occurring
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] only message in thread