|
@@ -131,12 +131,9 @@ fwin_from_user:
|
|
|
|
|
|
/* LOCATION: Window 'W' */
|
|
|
|
|
|
- /* Branch to the architecture specific stack validation
|
|
|
- * routine. They can be found below...
|
|
|
- */
|
|
|
- .globl fwin_mmu_patchme
|
|
|
-fwin_mmu_patchme: b sun4c_fwin_stackchk
|
|
|
- andcc %sp, 0x7, %g0
|
|
|
+ /* Branch to the stack validation routine */
|
|
|
+ b srmmu_fwin_stackchk
|
|
|
+ andcc %sp, 0x7, %g0
|
|
|
|
|
|
#define STACK_OFFSET (THREAD_SIZE - TRACEREG_SZ - STACKFRAME_SZ)
|
|
|
|
|
@@ -242,57 +239,6 @@ fwin_user_finish_up:
|
|
|
* 'someone elses' window possibly.
|
|
|
*/
|
|
|
|
|
|
- .align 4
|
|
|
-sun4c_fwin_stackchk:
|
|
|
- /* LOCATION: Window 'W' */
|
|
|
-
|
|
|
- /* Caller did 'andcc %sp, 0x7, %g0' */
|
|
|
- be 1f
|
|
|
- and %sp, 0xfff, %l0 ! delay slot
|
|
|
-
|
|
|
- b,a fwin_user_stack_is_bolixed
|
|
|
-
|
|
|
- /* See if we have to check the sanity of one page or two */
|
|
|
-1:
|
|
|
- add %l0, 0x38, %l0
|
|
|
- sra %sp, 29, %l5
|
|
|
- add %l5, 0x1, %l5
|
|
|
- andncc %l5, 0x1, %g0
|
|
|
- be 1f
|
|
|
- andncc %l0, 0xff8, %g0
|
|
|
-
|
|
|
- b,a fwin_user_stack_is_bolixed /* %sp is in vma hole, yuck */
|
|
|
-
|
|
|
-1:
|
|
|
- be sun4c_fwin_onepage /* Only one page to check */
|
|
|
- lda [%sp] ASI_PTE, %l1
|
|
|
-sun4c_fwin_twopages:
|
|
|
- add %sp, 0x38, %l0
|
|
|
- sra %l0, 29, %l5
|
|
|
- add %l5, 0x1, %l5
|
|
|
- andncc %l5, 0x1, %g0
|
|
|
- be 1f
|
|
|
- lda [%l0] ASI_PTE, %l1
|
|
|
-
|
|
|
- b,a fwin_user_stack_is_bolixed /* Second page in vma hole */
|
|
|
-
|
|
|
-1:
|
|
|
- srl %l1, 29, %l1
|
|
|
- andcc %l1, 0x4, %g0
|
|
|
- bne sun4c_fwin_onepage
|
|
|
- lda [%sp] ASI_PTE, %l1
|
|
|
-
|
|
|
- b,a fwin_user_stack_is_bolixed /* Second page has bad perms */
|
|
|
-
|
|
|
-sun4c_fwin_onepage:
|
|
|
- srl %l1, 29, %l1
|
|
|
- andcc %l1, 0x4, %g0
|
|
|
- bne fwin_user_stack_is_ok
|
|
|
- nop
|
|
|
-
|
|
|
- /* A page had bad page permissions, losing... */
|
|
|
- b,a fwin_user_stack_is_bolixed
|
|
|
-
|
|
|
.globl srmmu_fwin_stackchk
|
|
|
srmmu_fwin_stackchk:
|
|
|
/* LOCATION: Window 'W' */
|