diff options
Diffstat (limited to 'arch/mips/mm/tlbex-fault.S')
-rw-r--r-- | arch/mips/mm/tlbex-fault.S | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/mips/mm/tlbex-fault.S b/arch/mips/mm/tlbex-fault.S new file mode 100644 index 000000000000..9e7f4175b493 --- /dev/null +++ b/arch/mips/mm/tlbex-fault.S | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1999 Ralf Baechle | ||
7 | * Copyright (C) 1999 Silicon Graphics, Inc. | ||
8 | */ | ||
9 | #include <asm/mipsregs.h> | ||
10 | #include <asm/page.h> | ||
11 | #include <asm/regdef.h> | ||
12 | #include <asm/stackframe.h> | ||
13 | |||
14 | .macro tlb_do_page_fault, write | ||
15 | NESTED(tlb_do_page_fault_\write, PT_SIZE, sp) | ||
16 | SAVE_ALL | ||
17 | MFC0 a2, CP0_BADVADDR | ||
18 | KMODE | ||
19 | move a0, sp | ||
20 | REG_S a2, PT_BVADDR(sp) | ||
21 | li a1, \write | ||
22 | jal do_page_fault | ||
23 | j ret_from_exception | ||
24 | END(tlb_do_page_fault_\write) | ||
25 | .endm | ||
26 | |||
27 | tlb_do_page_fault 0 | ||
28 | tlb_do_page_fault 1 | ||