diff options
Diffstat (limited to 'arch/m32r/mm')
-rw-r--r-- | arch/m32r/mm/discontig.c | 5 | ||||
-rw-r--r-- | arch/m32r/mm/mmu.S | 12 |
2 files changed, 12 insertions, 5 deletions
diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index b7a78ad429b7..5d2858f6eede 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c | |||
@@ -32,6 +32,9 @@ typedef struct { | |||
32 | } mem_prof_t; | 32 | } mem_prof_t; |
33 | static mem_prof_t mem_prof[MAX_NUMNODES]; | 33 | static mem_prof_t mem_prof[MAX_NUMNODES]; |
34 | 34 | ||
35 | extern unsigned long memory_start; | ||
36 | extern unsigned long memory_end; | ||
37 | |||
35 | static void __init mem_prof_init(void) | 38 | static void __init mem_prof_init(void) |
36 | { | 39 | { |
37 | unsigned long start_pfn, holes, free_pfn; | 40 | unsigned long start_pfn, holes, free_pfn; |
@@ -42,7 +45,7 @@ static void __init mem_prof_init(void) | |||
42 | /* Node#0 SDRAM */ | 45 | /* Node#0 SDRAM */ |
43 | mp = &mem_prof[0]; | 46 | mp = &mem_prof[0]; |
44 | mp->start_pfn = PFN_UP(CONFIG_MEMORY_START); | 47 | mp->start_pfn = PFN_UP(CONFIG_MEMORY_START); |
45 | mp->pages = PFN_DOWN(CONFIG_MEMORY_SIZE); | 48 | mp->pages = PFN_DOWN(memory_end - memory_start); |
46 | mp->holes = 0; | 49 | mp->holes = 0; |
47 | mp->free_pfn = PFN_UP(__pa(_end)); | 50 | mp->free_pfn = PFN_UP(__pa(_end)); |
48 | 51 | ||
diff --git a/arch/m32r/mm/mmu.S b/arch/m32r/mm/mmu.S index 49a6d16a3d58..e9491a5ae827 100644 --- a/arch/m32r/mm/mmu.S +++ b/arch/m32r/mm/mmu.S | |||
@@ -150,9 +150,13 @@ ENTRY(tme_handler) | |||
150 | 150 | ||
151 | ; pmd = pmd_offset(pgd, address); | 151 | ; pmd = pmd_offset(pgd, address); |
152 | ld r3, @r3 ; r3: pmd data | 152 | ld r3, @r3 ; r3: pmd data |
153 | ldi r2, #-4096 | ||
154 | beqz r3, 3f ; pmd_none(*pmd) ? | 153 | beqz r3, 3f ; pmd_none(*pmd) ? |
155 | 154 | ||
155 | and3 r2, r3, #0xfff | ||
156 | add3 r2, r2, #-355 ; _KERNPG_TABLE(=0x163) | ||
157 | bnez r2, 3f ; pmd_bad(*pmd) ? | ||
158 | ldi r2, #-4096 | ||
159 | |||
156 | ; pte = pte_offset(pmd, address); | 160 | ; pte = pte_offset(pmd, address); |
157 | and r2, r3 ; r2: pte base addr | 161 | and r2, r3 ; r2: pte base addr |
158 | srl3 r3, r0, #10 | 162 | srl3 r3, r0, #10 |
@@ -263,9 +267,9 @@ ENTRY(tme_handler) | |||
263 | ld r1, @r3 ; r1: pmd | 267 | ld r1, @r3 ; r1: pmd |
264 | beqz r1, 3f ; pmd_none(*pmd) ? | 268 | beqz r1, 3f ; pmd_none(*pmd) ? |
265 | ; | 269 | ; |
266 | and3 r1, r1, #0xeff | 270 | and3 r1, r1, #0x3ff |
267 | ldi r4, #611 ; _KERNPG_TABLE(=611) | 271 | ldi r4, #0x163 ; _KERNPG_TABLE(=0x163) |
268 | bne r1, r4, 3f ; !pmd_bad(*pmd) ? | 272 | bne r1, r4, 3f ; pmd_bad(*pmd) ? |
269 | 273 | ||
270 | .fillinsn | 274 | .fillinsn |
271 | 4: | 275 | 4: |