xref: /linux/arch/mips/mm/tlbex-fault.S (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds/*
2*1da177e4SLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public
3*1da177e4SLinus Torvalds * License.  See the file "COPYING" in the main directory of this archive
4*1da177e4SLinus Torvalds * for more details.
5*1da177e4SLinus Torvalds *
6*1da177e4SLinus Torvalds * Copyright (C) 1999 Ralf Baechle
7*1da177e4SLinus Torvalds * Copyright (C) 1999 Silicon Graphics, Inc.
8*1da177e4SLinus Torvalds */
9*1da177e4SLinus Torvalds#include <asm/mipsregs.h>
10*1da177e4SLinus Torvalds#include <asm/page.h>
11*1da177e4SLinus Torvalds#include <asm/regdef.h>
12*1da177e4SLinus Torvalds#include <asm/stackframe.h>
13*1da177e4SLinus Torvalds
14*1da177e4SLinus Torvalds	.macro tlb_do_page_fault, write
15*1da177e4SLinus Torvalds	NESTED(tlb_do_page_fault_\write, PT_SIZE, sp)
16*1da177e4SLinus Torvalds	SAVE_ALL
17*1da177e4SLinus Torvalds	MFC0	a2, CP0_BADVADDR
18*1da177e4SLinus Torvalds	KMODE
19*1da177e4SLinus Torvalds	move	a0, sp
20*1da177e4SLinus Torvalds	REG_S	a2, PT_BVADDR(sp)
21*1da177e4SLinus Torvalds	li	a1, \write
22*1da177e4SLinus Torvalds	jal	do_page_fault
23*1da177e4SLinus Torvalds	j	ret_from_exception
24*1da177e4SLinus Torvalds	END(tlb_do_page_fault_\write)
25*1da177e4SLinus Torvalds	.endm
26*1da177e4SLinus Torvalds
27*1da177e4SLinus Torvalds	tlb_do_page_fault 0
28*1da177e4SLinus Torvalds	tlb_do_page_fault 1
29