csky: Improve tlb operation with help of asid
authorGuo Ren <ren_guo@c-sky.com>
Tue, 18 Jun 2019 12:34:35 +0000 (20:34 +0800)
committerGuo Ren <ren_guo@c-sky.com>
Fri, 19 Jul 2019 06:21:36 +0000 (14:21 +0800)
commit4e562c11664c0e0e84bb8495894b8637acc1c095
treef0ec771bb3184272cd60db0f530e89361fb0525c
parent22d55f02b8922a097cd4be1e2f131dfa7ef65901
csky: Improve tlb operation with help of asid

There are two generations of tlb operation instruction for C-SKY.
First generation is use mcr register and it need software do more
things, second generation is use specific instructions, eg:
 tlbi.va, tlbi.vas, tlbi.alls

We implemented the following functions:

 - flush_tlb_range (a range of entries)
 - flush_tlb_page (one entry)

 Above functions use asid from vma->mm to invalid tlb entries and
 we could use tlbi.vas instruction for newest generation csky cpu.

 - flush_tlb_kernel_range
 - flush_tlb_one

 Above functions don't care asid and it invalid the tlb entries only
 with vpn and we could use tlbi.vaas instruction for newest generat-
 ion csky cpu.

Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Cc: Arnd Bergmann <arnd@arndb.de>
arch/csky/mm/tlb.c