From: Christophe Leroy > Sent: 20 April 2015 06:27 > Having a macro will help keep clear code. ... > * We have to use the MD_xxx registers for the tablewalk because the > * equivalent MI_xxx registers only perform the attribute functions. > */ > + > +#ifdef CONFIG_8xx_CPU15 > +#define DO_8xx_CPU15(tmp, addr) \ > + addi tmp, addr, PAGE_SIZE; \ > + tlbie tmp; \ > + addi tmp, addr, PAGE_SIZE; \ > + tlbie tmp > +#else > +#define DO_8xx_CPU15(tmp, addr) > +#endif
I'm sure I've spotted the same obvious error in the above before. I'd also suggest calling it 'invalidate_adjacent_pages' - since that it what it does. I also guess that the execution time of 'tlbie' is non-trivial. So you might as well get rid of the temporary register and put an 'addi' to reset 'addr' at the end. David