[parisc-linux] flush_tlb_all_local:

Joel Soete soete.joel@tiscali.be
Sun, 12 Oct 2003 16:07:50 +0000


Hi all,

into parisc/kernel/pacache.S, i find this:
[...]
flush_tlb_all_local:
[...]
         rsm     PSW_SM_Q,%r0       /* Turn off Q bit to load iia queue */
         ldil    L%REAL_MODE_PSW, %r1
         ldo     R%REAL_MODE_PSW(%r1), %r1
         mtctl   %r1, %cr22
         mtctl   %r0, %cr17
         mtctl   %r0, %cr17
[...]

Why twice 'mtctl   %r0, %cr17'?

and also:
[...]
fitmanymiddle:                                  /* Loop if LOOP >= 2 */
         ADDIB>          -1,%r31,fitmanymiddle   /* Adjusted inner loop 
decr */
         pitlbe          0(%sr1,%r28)
         pitlbe,m        %arg1(%sr1,%r28)        /* Last pitlbe and addr 
adjust */

Typicaly the function name is flush_..., so why do we 'purge' here?

Thanks in advance for help,
	Joel