linux/arch/mips/mm
Huang Pei c6972fb9ba MIPS: clean up CONFIG_MIPS_PGD_C0_CONTEXT handling
+. LOONGSON64 use 0x98xx_xxxx_xxxx_xxxx as xphys cached, instread of
0xa8xx_xxxx_xxxx_xxxx

+. let CONFIG_MIPS_PGD_C0_CONTEXT depend on 64bit

+. cast CAC_BASE into u64 to silence warning on MIPS32

CP0 Context has enough room for wraping pgd into its 41-bit PTEBase field.

+. For XPHYS, the trick is that pgd is 4kB aligned, and the PABITS <= 53,
only save 53 - 12 = 41 bits, aka :

   bit[63:59] | 0000 00 |  bit[53:12] | 0000 0000 0000

+. for CKSEG0, only save 29 - 12 = 17 bits

when switching pgd, only need to save bit[53:12] or bit[28:12] into
CP0 Context's bit[63:23], see folling asm generated at run time

tlbmiss_handler_setup_pgd:
	.set	push
	.set	noreorder

	dsra	a2, a0, 29
	move	a3, a0
	dins	a0, zero, 29, 35
	daddiu	a2, a2, 4	//for CKSEG0, a2 from 0xfffffffffffffffc
				//into 0

	movn	a0, a3, a2
	dsll	a0, a0, 11
	jr	ra
	dmtc0	a0, CP0_CONTEXT

	.set	pop

when using it on page walking

	dmfc0	k0, CP0_CONTEXT
	dins	k0, zero, 0, 23	         // zero badv2
	ori	k0, k0, (CAC_BASE >> 53) // *prefix* with bit[63:59]
	drotr	k0, k0, 11		 // kick it in the right place

Signed-off-by: Huang Pei <huangpei@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2021-03-14 14:08:15 +01:00
..
c-octeon.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
c-r3k.c mm: pgtable: add shortcuts for accessing kernel PMD and PTE 2020-06-09 09:39:13 -07:00
c-r4k.c driver core: lift dma_default_coherent into common code 2021-02-13 09:51:45 +01:00
c-tx39.c mm: pgtable: add shortcuts for accessing kernel PMD and PTE 2020-06-09 09:39:13 -07:00
cache.c MIPS: make userspace mapping young by default 2021-02-26 09:41:05 -08:00
cerr-sb1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cex-gen.S
cex-oct.S
cex-sb1.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
context.c MIPS: Export mm switching functions used by KVM 2019-02-05 11:44:44 -08:00
dma-noncoherent.c MIPS: remove CONFIG_DMA_PERDEV_COHERENT 2021-02-13 09:51:46 +01:00
extable.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
fault.c MIPS: mm: abort uaccess retries upon fatal signal 2021-01-22 11:34:19 +01:00
highmem.c mips/mm/highmem: Switch to generic kmap atomic 2020-11-06 23:14:56 +01:00
hugetlbpage.c MIPS: mm: Remove unused is_aligned_hugepage_range 2020-11-27 10:53:32 +01:00
init.c MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ioremap64.c MIPS: move ioremap_prot und iounmap out of line 2020-04-19 16:12:31 +02:00
ioremap.c MIPS: use ioremap_page_range 2020-04-19 16:13:18 +02:00
Makefile MIPS: move ioremap_prot und iounmap out of line 2020-04-19 16:12:31 +02:00
mmap.c mips: use generic mmap top-down layout and brk randomization 2019-09-24 15:54:12 -07:00
page-funcs.S MIPS: Export {copy, clear}_page functions alongside their definitions 2017-01-03 16:48:39 +01:00
page.c MIPS: Convert R4600_V2_HIT_CACHEOP into a config option 2020-09-07 22:23:48 +02:00
pgtable-32.c MIPS: do not call flush_tlb_all when setting pmd entry 2021-02-24 13:38:32 -08:00
pgtable-64.c MIPS: do not call flush_tlb_all when setting pmd entry 2021-02-24 13:38:32 -08:00
pgtable.c MIPS: Move pgd_alloc() out of header 2017-02-02 15:06:26 +00:00
sc-debugfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sc-ip22.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sc-mips.c mips: fix Section mismatch in reference 2020-12-14 16:39:42 +01:00
sc-r5k.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sc-rm7k.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tlb-funcs.S MIPS: Consistently declare TLB functions 2018-08-10 17:27:53 -07:00
tlb-r3k.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
tlb-r4k.c MIPS: export has_transparent_hugepage() for modules 2020-10-27 12:44:34 +01:00
tlbex-fault.S MIPS: Add DWARF unwinding to assembly 2017-09-06 11:01:52 +02:00
tlbex.c MIPS: clean up CONFIG_MIPS_PGD_C0_CONTEXT handling 2021-03-14 14:08:15 +01:00
uasm-micromips.c mips: bpf: implement jitting of BPF_ALU | BPF_ARSH | BPF_X 2018-12-07 13:30:48 -08:00
uasm-mips.c MIPS: uasm: Add div, mul and sel instructions for mipsr6 2019-03-19 15:26:06 -07:00
uasm.c MIPS: Get rid of CAVIUM_OCTEON_DCACHE_PREFETCH_WAR 2020-09-07 22:25:16 +02:00