Loading arch/sparc/kernel/wof.S +2 −70 Original line number Diff line number Diff line Loading @@ -163,8 +163,7 @@ spwin_fromuser: * the label 'spwin_user_stack_is_bolixed' which will take * care of things at that point. */ .globl spwin_mmu_patchme spwin_mmu_patchme: b spwin_sun4c_stackchk b spwin_srmmu_stackchk andcc %sp, 0x7, %g0 spwin_good_ustack: Loading Loading @@ -306,73 +305,6 @@ spwin_bad_ustack_from_kernel: * As noted above %curptr cannot be touched by this routine at all. */ spwin_sun4c_stackchk: /* LOCATION: Window to be saved on the stack */ /* See if the stack is in the address space hole but first, * check results of callers andcc %sp, 0x7, %g0 */ be 1f sra %sp, 29, %glob_tmp rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: add %glob_tmp, 0x1, %glob_tmp andncc %glob_tmp, 0x1, %g0 be 1f and %sp, 0xfff, %glob_tmp ! delay slot rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop /* See if our dump area will be on more than one * page. */ 1: add %glob_tmp, 0x38, %glob_tmp andncc %glob_tmp, 0xff8, %g0 be spwin_sun4c_onepage ! only one page to check lda [%sp] ASI_PTE, %glob_tmp ! have to check first page anyways spwin_sun4c_twopages: /* Is first page ok permission wise? */ srl %glob_tmp, 29, %glob_tmp cmp %glob_tmp, 0x6 be 1f add %sp, 0x38, %glob_tmp /* Is second page in vma hole? */ rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: sra %glob_tmp, 29, %glob_tmp add %glob_tmp, 0x1, %glob_tmp andncc %glob_tmp, 0x1, %g0 be 1f add %sp, 0x38, %glob_tmp rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: lda [%glob_tmp] ASI_PTE, %glob_tmp spwin_sun4c_onepage: srl %glob_tmp, 29, %glob_tmp cmp %glob_tmp, 0x6 ! can user write to it? be spwin_good_ustack ! success nop rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop /* This is a generic SRMMU routine. As far as I know this * works for all current v8/srmmu implementations, we'll * see... Loading arch/sparc/mm/srmmu.c +0 −1 Original line number Diff line number Diff line Loading @@ -2144,7 +2144,6 @@ static void __init patch_window_trap_handlers(void) { unsigned long *iaddr, *daddr; PATCH_BRANCH(spwin_mmu_patchme, spwin_srmmu_stackchk); PATCH_BRANCH(tsetup_mmu_patchme, tsetup_srmmu_stackchk); PATCH_BRANCH(rtrap_mmu_patchme, srmmu_rett_stackchk); } Loading Loading
arch/sparc/kernel/wof.S +2 −70 Original line number Diff line number Diff line Loading @@ -163,8 +163,7 @@ spwin_fromuser: * the label 'spwin_user_stack_is_bolixed' which will take * care of things at that point. */ .globl spwin_mmu_patchme spwin_mmu_patchme: b spwin_sun4c_stackchk b spwin_srmmu_stackchk andcc %sp, 0x7, %g0 spwin_good_ustack: Loading Loading @@ -306,73 +305,6 @@ spwin_bad_ustack_from_kernel: * As noted above %curptr cannot be touched by this routine at all. */ spwin_sun4c_stackchk: /* LOCATION: Window to be saved on the stack */ /* See if the stack is in the address space hole but first, * check results of callers andcc %sp, 0x7, %g0 */ be 1f sra %sp, 29, %glob_tmp rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: add %glob_tmp, 0x1, %glob_tmp andncc %glob_tmp, 0x1, %g0 be 1f and %sp, 0xfff, %glob_tmp ! delay slot rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop /* See if our dump area will be on more than one * page. */ 1: add %glob_tmp, 0x38, %glob_tmp andncc %glob_tmp, 0xff8, %g0 be spwin_sun4c_onepage ! only one page to check lda [%sp] ASI_PTE, %glob_tmp ! have to check first page anyways spwin_sun4c_twopages: /* Is first page ok permission wise? */ srl %glob_tmp, 29, %glob_tmp cmp %glob_tmp, 0x6 be 1f add %sp, 0x38, %glob_tmp /* Is second page in vma hole? */ rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: sra %glob_tmp, 29, %glob_tmp add %glob_tmp, 0x1, %glob_tmp andncc %glob_tmp, 0x1, %g0 be 1f add %sp, 0x38, %glob_tmp rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop 1: lda [%glob_tmp] ASI_PTE, %glob_tmp spwin_sun4c_onepage: srl %glob_tmp, 29, %glob_tmp cmp %glob_tmp, 0x6 ! can user write to it? be spwin_good_ustack ! success nop rd %psr, %glob_tmp b spwin_user_stack_is_bolixed + 0x4 nop /* This is a generic SRMMU routine. As far as I know this * works for all current v8/srmmu implementations, we'll * see... Loading
arch/sparc/mm/srmmu.c +0 −1 Original line number Diff line number Diff line Loading @@ -2144,7 +2144,6 @@ static void __init patch_window_trap_handlers(void) { unsigned long *iaddr, *daddr; PATCH_BRANCH(spwin_mmu_patchme, spwin_srmmu_stackchk); PATCH_BRANCH(tsetup_mmu_patchme, tsetup_srmmu_stackchk); PATCH_BRANCH(rtrap_mmu_patchme, srmmu_rett_stackchk); } Loading