summaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/fault-armo.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-01-27 01:05:20 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-01-27 01:05:20 +0000
commit546db14ee74118296f425f3b91634fb767d67290 (patch)
tree22b613a3da8d4bf663eec5e155af01b87fdf9094 /arch/arm/mm/fault-armo.c
parent1e25e41c4f5474e14452094492dbc169b800e4c8 (diff)
Merge with Linux 2.3.23. The new bootmem stuff has broken various
platforms. At this time I've only verified that IP22 support compiles and IP27 actually works.
Diffstat (limited to 'arch/arm/mm/fault-armo.c')
-rw-r--r--arch/arm/mm/fault-armo.c53
1 files changed, 2 insertions, 51 deletions
diff --git a/arch/arm/mm/fault-armo.c b/arch/arm/mm/fault-armo.c
index c51980771..19a1fff7c 100644
--- a/arch/arm/mm/fault-armo.c
+++ b/arch/arm/mm/fault-armo.c
@@ -23,61 +23,12 @@
#define FAULT_CODE_FORCECOW 0x80
#define FAULT_CODE_PREFETCH 0x04
#define FAULT_CODE_WRITE 0x02
-#define FAULT_CODE_USER 0x01
#define DO_COW(m) ((m) & (FAULT_CODE_WRITE|FAULT_CODE_FORCECOW))
#define READ_FAULT(m) (!((m) & FAULT_CODE_WRITE))
#include "fault-common.c"
-static void *alloc_table(int size, int prio)
-{
- if (size != 128)
- printk("invalid table size\n");
- return (void *)get_page_8k(prio);
-}
-
-void free_table(void *table)
-{
- free_page_8k((unsigned long)table);
-}
-
-pgd_t *get_pgd_slow(void)
-{
- pgd_t *pgd = (pgd_t *)alloc_table(PTRS_PER_PGD * BYTES_PER_PTR, GFP_KERNEL);
- pgd_t *init;
-
- if (pgd) {
- init = pgd_offset(&init_mm, 0);
- memzero(pgd, USER_PTRS_PER_PGD * BYTES_PER_PTR);
- memcpy(pgd + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
- (PTRS_PER_PGD - USER_PTRS_PER_PGD) * BYTES_PER_PTR);
- }
- return pgd;
-}
-
-pte_t *get_pte_slow(pmd_t *pmd, unsigned long offset)
-{
- pte_t *pte;
-
- pte = (pte_t *)alloc_table(PTRS_PER_PTE * BYTES_PER_PTR, GFP_KERNEL);
- if (pmd_none(*pmd)) {
- if (pte) {
- memzero(pte, PTRS_PER_PTE * BYTES_PER_PTR);
- set_pmd(pmd, mk_pmd(pte));
- return pte + offset;
- }
- set_pmd(pmd, mk_pmd(BAD_PAGETABLE));
- return NULL;
- }
- free_table((void *)pte);
- if (pmd_bad(*pmd)) {
- __bad_pmd(pmd);
- return NULL;
- }
- return (pte_t *) pmd_page(*pmd) + offset;
-}
-
/*
* Handle a data abort. Note that we have to handle a range of addresses
* on ARM2/3 for ldm. If both pages are zero-mapped, then we have to force
@@ -96,11 +47,11 @@ asmlinkage int
do_PrefetchAbort(unsigned long addr, struct pt_regs *regs)
{
#if 0
- if (the memc mapping for this page exists - can check now...) {
+ if (the memc mapping for this page exists) {
printk ("Page in, but got abort (undefined instruction?)\n");
return 0;
}
#endif
- do_page_fault(addr, FAULT_CODE_USER|FAULT_CODE_PREFETCH, regs);
+ do_page_fault(addr, FAULT_CODE_PREFETCH, regs);
return 1;
}