Date: Sat, 14 May 2011 14:47:20 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r221893 - head/sys/ia64/ia64 Message-ID: <201105141447.p4EElKKb006522@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Sat May 14 14:47:19 2011 New Revision: 221893 URL: http://svn.freebsd.org/changeset/base/221893 Log: Sharpening the saw: o Clobber the register that holds the restart token immediately after crossing the restart point. This prevents false positives (i.e. a nested exception that we don't know can happen and that is being treated as one we know by virtue of a lingering restart token). o Now that the bootstrap kernel stack is free, switch onto it and call trap() for nested traps that we don't know about. In trap we panic() so that we can analyze the condition. Modified: head/sys/ia64/ia64/exception.S Modified: head/sys/ia64/ia64/exception.S ============================================================================== --- head/sys/ia64/ia64/exception.S Sat May 14 14:42:12 2011 (r221892) +++ head/sys/ia64/ia64/exception.S Sat May 14 14:47:19 2011 (r221893) @@ -202,13 +202,13 @@ exception_save_restart: { .mmi st8 [r30]=r19,16 // length st8 [r31]=r0,16 // flags - add r19=16,r19 + add r29=16,r19 // Clobber restart token ;; } { .mmi st8.spill [r30]=sp,16 // sp st8 [r31]=r20,16 // unat - sub sp=r23,r19 + sub sp=r23,r29 ;; } { .mmi @@ -641,7 +641,7 @@ exception_restore_restart: mov r30=ar.bspstore ;; loadrs // load user regs - nop 0 + mov r29=0 // Clobber restart token ;; } { .mmi @@ -1094,22 +1094,26 @@ IVT_ENTRY(Data_Nested_TLB, 0x1400) } { .mlx mov r26=ar.bsp - movl r27=kstack + movl r29=kstack ;; } -{ .mmi +{ .mlx mov r28=sp - nop 0 - addl r27=KSTACK_PAGES*PAGE_SIZE-16,r0 + movl r27=kstack_top ;; } { .mmi - mov sp=r27 + add sp=-16,r27 ;; mov r27=ar.bspstore nop 0 ;; } + mov ar.rsc=0 + dep r29=r27,r29,0,9 + ;; + mov ar.bspstore=r29 + ;; CALL(trap, 5, r30) IVT_END(Data_Nested_TLB)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105141447.p4EElKKb006522>