[xtensa-cvscommit] linux/arch/xtensa/kernel handlers.S,1.16,1.17 head.S,1.5,1.6
Brought to you by:
zankel
|
From: <ma...@us...> - 2003-04-01 22:30:39
|
Update of /cvsroot/xtensa/linux/arch/xtensa/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv651 Modified Files: handlers.S head.S Log Message: Fix multihit kernel bug -- essentially adjust pte_none() and related code. Index: handlers.S =================================================================== RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/handlers.S,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** handlers.S 29 Mar 2003 00:08:06 -0000 1.16 --- handlers.S 1 Apr 2003 22:30:29 -0000 1.17 *************** *** 2726,2729 **** --- 2726,2730 ---- pgd = pgd_offset (mm, regs->excvaddr); pmd = pmd_offset (pgd, regs->excvaddr); + pmdval = *pmd; */ *************** *** 2738,2764 **** _PMD_OFFSET a2, addr // empty macro, 2nd parm is optimized away ! /* We want to map the page of PTEs into the Page Table, but if ! * the task doesn't yet have a mapping for the region, just ! * map the exception_pte_table for the region. Note that we ! * do not modify the mappings for the task (tsk->mm->pgd) itself. ! * ! * exception_pte_table contains PTEs that will generate access ! * faults, and the exception will end up in do_page_fault() ! * for further handling. ! ! pmdval = *pmd; ! if (pmd_none(pmdval)) ! pmdval = __pmd((unsigned long)exception_pte_table); ! */ ! ! l32i a2, a2, 0 - movi a3, invalid_pte_table - movi a4, 0 - movi a5, 1 - sub a3, a2, a3 - moveqz a4, a5, a3 - movi a3, exception_pte_table - movnez a2, a3, a4 // a2 has appropriate pmdval /* Read ptevaddr and convert to top of page-table page. --- 2739,2744 ---- _PMD_OFFSET a2, addr // empty macro, 2nd parm is optimized away ! l32i a2, a2, 0 // read pmdval /* Read ptevaddr and convert to top of page-table page. *************** *** 2777,2783 **** movi a4, PAGE_MASK rsr a3, PTEVADDR // a3 = PTEVADDR - dsync - and a3, a4, a3 // a3 &= PAGE_MASK movi a5, -PAGE_OFFSET addi a3, a3, WIRED_WAY_FOR_PAGE_TABLE // a3 += way_number // a3 now has vpnval --- 2757,2762 ---- movi a4, PAGE_MASK rsr a3, PTEVADDR // a3 = PTEVADDR movi a5, -PAGE_OFFSET + and a3, a4, a3 // a3 &= PAGE_MASK addi a3, a3, WIRED_WAY_FOR_PAGE_TABLE // a3 += way_number // a3 now has vpnval *************** *** 2834,2839 **** * in kernel or user code, respectively, and then jump to the common * exception handling code. ! * Thus, rfi is usually never called for debug exceptions. Instead, ! * an rfe in the common exception path is called. * However, if PS.EXCM was set when the debug exception occurred, * it is handled differently; the exception is simply "ignored" --- 2813,2818 ---- * in kernel or user code, respectively, and then jump to the common * exception handling code. ! * Thus, RFI is usually never called for debug exceptions. Instead, ! * an RFE in the common exception path is called. * However, if PS.EXCM was set when the debug exception occurred, * it is handled differently; the exception is simply "ignored" Index: head.S =================================================================== RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/head.S,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** head.S 13 Feb 2003 19:32:02 -0000 1.5 --- head.S 1 Apr 2003 22:30:31 -0000 1.6 *************** *** 427,431 **** .comm swapper_pg_dir,PAGE_SIZE,PAGE_SIZE .comm invalid_pte_table,PAGE_SIZE,PAGE_SIZE - .comm exception_pte_table,PAGE_SIZE,PAGE_SIZE .comm empty_bad_page_table,PAGE_SIZE,PAGE_SIZE .comm empty_bad_page,PAGE_SIZE,PAGE_SIZE --- 427,430 ---- |