Commit 2cff5e1a83c61613febf814640dc877b98d585e6

Authored by Hirokazu Takata
1 parent 17d857be64

m32r: fix tme_handler

Fix pmd_bad check code of tme_handler (TLB Miss Exception handler).
The correct _KERNPG_TABLE value is not 0x263(=611) but 0x163.

Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>

Showing 1 changed file with 8 additions and 4 deletions Side-by-side Diff

... ... @@ -150,9 +150,13 @@
150 150  
151 151 ; pmd = pmd_offset(pgd, address);
152 152 ld r3, @r3 ; r3: pmd data
153   - ldi r2, #-4096
154 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 160 ; pte = pte_offset(pmd, address);
157 161 and r2, r3 ; r2: pte base addr
158 162 srl3 r3, r0, #10
... ... @@ -263,9 +267,9 @@
263 267 ld r1, @r3 ; r1: pmd
264 268 beqz r1, 3f ; pmd_none(*pmd) ?
265 269 ;
266   - and3 r1, r1, #0xeff
267   - ldi r4, #611 ; _KERNPG_TABLE(=611)
268   - bne r1, r4, 3f ; !pmd_bad(*pmd) ?
  270 + and3 r1, r1, #0x3ff
  271 + ldi r4, #0x163 ; _KERNPG_TABLE(=0x163)
  272 + bne r1, r4, 3f ; pmd_bad(*pmd) ?
269 273  
270 274 .fillinsn
271 275 4: