From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grzegorz Milos Subject: [PATCH] Mini-OS return from exception fix Date: Fri, 02 Feb 2007 10:56:14 +0000 Message-ID: <45C318CE.3070104@cam.ac.uk> References: <45BE2C6E.8060806@Sun.COM> <45BE3F9F.3030602@cam.ac.uk> <45BE5128.9050807@Sun.COM> <45C2100C.60007@cam.ac.uk> <45C22150.90402@Sun.COM> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030505060601080005050609" Return-path: In-Reply-To: <45C22150.90402@Sun.COM> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Mick.Jordan@sun.com, xen-devel List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------030505060601080005050609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit This patch fixes ret_from_exception routine. Stack consistency is now preserved. Signed-off-by: Grzegorz Milos 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? > --------------030505060601080005050609 Content-Type: text/plain; name="mini-os.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="mini-os.patch" 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 --------------030505060601080005050609 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------030505060601080005050609--