ARM: remove old pmap-v6 code. The new pmap-v6 is mature enough, and

dual implementation is showstopper for major cleanup.

This patch only removes old code from tree. Cleanups will follow asap.
This commit is contained in:
Michal Meloun 2016-01-29 10:31:54 +00:00
parent 05ef7ed17b
commit 41a7c569b0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295036
16 changed files with 44 additions and 5515 deletions

View File

@ -61,16 +61,16 @@ __FBSDID("$FreeBSD$");
ASSYM(KERNBASE, KERNBASE);
ASSYM(PCB_NOALIGNFLT, PCB_NOALIGNFLT);
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
ASSYM(CPU_ASID_KERNEL,CPU_ASID_KERNEL);
#endif
ASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault));
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
ASSYM(PCB_DACR, offsetof(struct pcb, pcb_dacr));
#endif
ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags));
ASSYM(PCB_PAGEDIR, offsetof(struct pcb, pcb_pagedir));
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
ASSYM(PCB_L1VEC, offsetof(struct pcb, pcb_l1vec));
ASSYM(PCB_PL1VEC, offsetof(struct pcb, pcb_pl1vec));
#endif

View File

@ -30,6 +30,7 @@
#include "assym.s"
#include <sys/syscall.h>
#include <machine/acle-compat.h>
#include <machine/asm.h>
#include <machine/asmacros.h>
#include <machine/armreg.h>
@ -39,11 +40,6 @@
__FBSDID("$FreeBSD$");
#ifndef ARM_NEW_PMAP
#define PTE1_OFFSET L1_S_OFFSET
#define PTE1_SHIFT L1_S_SHIFT
#define PTE1_SIZE L1_S_SIZE
#endif
#if __ARM_ARCH >= 7
#if defined(__ARM_ARCH_7VE__) || defined(__clang__)
@ -287,7 +283,6 @@ ASENTRY_NP(init_mmu)
mov r0, #((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT)
mcr CP15_DACR(r0)
#ifdef ARM_NEW_PMAP
/*
* Set TEX remap registers
* - All is set to uncacheable memory
@ -296,7 +291,6 @@ ASENTRY_NP(init_mmu)
mcr CP15_PRRR(r0)
mov r0, #0
mcr CP15_NMRR(r0)
#endif
mcr CP15_TLBIALL /* Flush TLB */
DSB
ISB
@ -305,9 +299,7 @@ ASENTRY_NP(init_mmu)
mrc CP15_SCTLR(r0)
orr r0, r0, #CPU_CONTROL_MMU_ENABLE
orr r0, r0, #CPU_CONTROL_V6_EXTPAGE
#ifdef ARM_NEW_PMAP
orr r0, r0, #CPU_CONTROL_TR_ENABLE
#endif
orr r0, r0, #CPU_CONTROL_AF_ENABLE
mcr CP15_SCTLR(r0)
DSB
@ -398,23 +390,11 @@ END(reinit_mmu)
* Addresses must be 1MiB aligned
*/
build_device_pagetables:
#if defined(ARM_NEW_PMAP)
ldr r4, =PTE1_V|PTE1_A|PTE1_AP_KRW|TEX1_CLASS_0
#elif defined(SMP)
ldr r4, =(L1_TYPE_S|L1_S_AP(AP_KRW)|L1_SHARED)
#else
ldr r4, =(L1_TYPE_S|L1_S_AP(AP_KRW))
#endif
b 1f
build_pagetables:
/* Set the required page attributed */
#if defined(ARM_NEW_PMAP)
ldr r4, =PTE1_V|PTE1_A|PTE1_AP_KRW|TEX1_CLASS_0
#elif defined(SMP)
ldr r4, =(L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW)|L1_SHARED)
#else
ldr r4, =(L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW))
#endif
1:
orr r1, r4

View File

@ -199,7 +199,7 @@ static char *loader_envp;
vm_paddr_t pmap_pa;
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
vm_offset_t systempage;
vm_offset_t irqstack;
vm_offset_t undstack;
@ -456,7 +456,7 @@ cpu_startup(void *dummy)
pcb->pcb_regs.sf_sp = (u_int)thread0.td_kstack +
USPACE_SVC_STACK_TOP;
pmap_set_pcb_pagedir(pmap_kernel(), pcb);
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
vector_page_setprot(VM_PROT_READ);
pmap_postinit();
#endif
@ -1283,7 +1283,7 @@ arm_predict_branch(void *cookie, u_int insn, register_t pc, register_t *new_pc,
}
}
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
void
set_stackptrs(int cpu)
{
@ -1447,7 +1447,7 @@ print_kenv(void)
debugf(" %x %s\n", (uint32_t)cp, cp);
}
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
void *
initarm(struct arm_boot_params *abp)
{
@ -1717,7 +1717,7 @@ initarm(struct arm_boot_params *abp)
return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -
sizeof(struct pcb)));
}
#else /* !ARM_NEW_PMAP */
#else /* __ARM_ARCH < 6 */
void *
initarm(struct arm_boot_params *abp)
{
@ -1905,7 +1905,7 @@ initarm(struct arm_boot_params *abp)
}
#endif /* !ARM_NEW_PMAP */
#endif /* __ARM_ARCH < 6 */
#endif /* FDT */
uint32_t (*arm_cpu_fill_vdso_timehands)(struct vdso_timehands *,

View File

@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$");
#include <vm/pmap.h>
#include <vm/vm_extern.h>
#include <machine/acle-compat.h>
#include <machine/memdev.h>
#include <machine/vmparam.h>
@ -113,7 +114,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags)
return (EINVAL);
sx_xlock(&tmppt_lock);
pmap_kenter((vm_offset_t)_tmppt, v);
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
pmap_tlb_flush(kernel_pmap, (vm_offset_t)_tmppt);
#endif
o = (int)uio->uio_offset & PAGE_MASK;

View File

@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_kern.h>
#include <vm/pmap.h>
#include <machine/acle-compat.h>
#include <machine/armreg.h>
#include <machine/cpu.h>
#include <machine/cpufunc.h>
@ -155,7 +156,7 @@ init_secondary(int cpu)
#ifndef ARM_INTRNG
int start = 0, end = 0;
#endif
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
uint32_t actlr_mask, actlr_set;
pmap_set_tex();
@ -167,11 +168,11 @@ init_secondary(int cpu)
set_stackptrs(cpu);
enable_interrupts(PSR_A);
#else /* ARM_NEW_PMAP */
#else /* __ARM_ARCH >= 6 */
cpu_setup();
setttb(pmap_pa);
cpu_tlb_flushID();
#endif /* ARM_NEW_PMAP */
#endif /* __ARM_ARCH >= 6 */
pc = &__pcpu[cpu];
/*
@ -183,7 +184,7 @@ init_secondary(int cpu)
pcpu_init(pc, cpu, sizeof(struct pcpu));
dpcpu_init(dpcpu[cpu - 1], cpu);
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
/* Provide stack pointers for other processor modes. */
set_stackptrs(cpu);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -114,7 +114,7 @@ __FBSDID("$FreeBSD$");
.word _C_LABEL(blocked_lock)
#ifndef ARM_NEW_PMAP
#if __ARM_ARCH < 6
#define DOMAIN_CLIENT 0x01
@ -418,7 +418,7 @@ ENTRY(cpu_switch)
END(cpu_switch)
#else /* !ARM_NEW_PMAP */
#else /* __ARM_ARCH < 6 */
#include <machine/sysreg.h>
ENTRY(cpu_context_switch) /* QQQ: What about macro instead of function? */
@ -789,7 +789,7 @@ sw4_panic_str:
END(cpu_switch)
#endif /* !ARM_NEW_PMAP */
#endif /* __ARM_ARCH < 6 */
ENTRY(savectx)
stmfd sp!, {lr}

View File

@ -334,13 +334,11 @@ abort_handler(struct trapframe *tf, int prefetch)
* they are not from KVA space. Thus, no action is needed here.
*/
#ifdef ARM_NEW_PMAP
rv = pmap_fault(PCPU_GET(curpmap), far, fsr, idx, usermode);
if (rv == KERN_SUCCESS)
return;
if (rv == KERN_INVALID_ADDRESS)
goto nogo;
#endif
/*
* Now, when we handled imprecise and debug aborts, the rest of
* aborts should be really related to mapping.
@ -488,13 +486,6 @@ abort_handler(struct trapframe *tf, int prefetch)
last_fault_code = fsr;
#endif
#ifndef ARM_NEW_PMAP
if (pmap_fault_fixup(vmspace_pmap(td->td_proc->p_vmspace), va, ftype,
usermode)) {
goto out;
}
#endif
#ifdef INVARIANTS
onfault = pcb->pcb_onfault;
pcb->pcb_onfault = NULL;

View File

@ -37,8 +37,6 @@ options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options FREEBSD_BOOT_LOADER # Process metadata passed from loader(8)
options VFP # Enable floating point hardware support
options ARM_NEW_PMAP # Use new pmap code.
# DTrace support
options KDTRACE_HOOKS # Kernel DTrace hooks
options DDB_CTF # all architectures - kernel ELF linker loads CTF data

View File

@ -4,8 +4,10 @@
#ifndef _MACHDEP_BOOT_MACHDEP_H_
#define _MACHDEP_BOOT_MACHDEP_H_
#include <machine/acle-compat.h>
/* Structs that need to be initialised by initarm */
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
extern vm_offset_t irqstack;
extern vm_offset_t undstack;
extern vm_offset_t abtstack;

View File

@ -46,9 +46,11 @@
*
* $FreeBSD$
*/
#ifdef ARM_NEW_PMAP
#include <machine/acle-compat.h>
#if __ARM_ARCH >= 6
#include <machine/pmap-v6.h>
#else /* ARM_NEW_PMAP */
#else /* __ARM_ARCH >= 6 */
#ifndef _MACHINE_PMAP_H_
#define _MACHINE_PMAP_H_
@ -704,4 +706,4 @@ extern vm_paddr_t dump_avail[];
#endif /* !LOCORE */
#endif /* !_MACHINE_PMAP_H_ */
#endif /* !ARM_NEW_PMAP */
#endif /* __ARM_ARCH >= 6 */

View File

@ -33,9 +33,11 @@
*
* $FreeBSD$
*/
#ifdef ARM_NEW_PMAP
#include <machine/acle-compat.h>
#if __ARM_ARCH >= 6
#include <machine/pte-v6.h>
#else /* ARM_NEW_PMAP */
#else /* __ARM_ARCH >= 6 */
#ifndef _MACHINE_PTE_H_
#define _MACHINE_PTE_H_
@ -356,6 +358,6 @@ typedef pt_entry_t pt2_entry_t; /* compatibility with v6 */
* 1 X 1 1 1 Y Y WT Y Y
*/
#endif /* !_MACHINE_PTE_H_ */
#endif /* !ARM_NEW_PMAP */
#endif /* __ARM_ARCH >= 6 */
/* End of pte.h */

View File

@ -29,11 +29,13 @@
#ifndef _MACHINE_SF_BUF_H_
#define _MACHINE_SF_BUF_H_
#include <machine/acle-compat.h>
static inline void
sf_buf_map(struct sf_buf *sf, int flags)
{
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
pmap_qenter(sf->kva, &(sf->m), 1);
#else
pmap_kenter(sf->kva, VM_PAGE_TO_PHYS(sf->m));
@ -44,7 +46,7 @@ static inline int
sf_buf_unmap(struct sf_buf *sf)
{
#ifdef ARM_NEW_PMAP
#if __ARM_ARCH >= 6
pmap_qremove(sf->kva, 1);
#else
pmap_kremove(sf->kva);

View File

@ -29,7 +29,9 @@
#ifndef _MACHINE_VM_H_
#define _MACHINE_VM_H_
#ifdef ARM_NEW_PMAP
#include <machine/acle-compat.h>
#if __ARM_ARCH >= 6
#include <machine/pte-v6.h>
#define VM_MEMATTR_WB_WA ((vm_memattr_t)PTE2_ATTR_WB_WA)
@ -40,9 +42,11 @@
#define VM_MEMATTR_DEFAULT VM_MEMATTR_WB_WA
#define VM_MEMATTR_UNCACHEABLE VM_MEMATTR_SO /* misused by DMA */
#ifdef _KERNEL
/* Don't export aliased VM_MEMATTR to userland */
#define VM_MEMATTR_WRITE_COMBINING VM_MEMATTR_WT /* for DRM */
#define VM_MEMATTR_WRITE_BACK VM_MEMATTR_WB_WA /* for DRM */
#endif
#else
/* Memory attribute configuration. */
#define VM_MEMATTR_DEFAULT 0

View File

@ -64,8 +64,7 @@ arm/arm/pl310.c optional pl310
arm/arm/platform.c optional platform
arm/arm/platform_if.m optional platform
arm/arm/pmap.c optional !armv6
arm/arm/pmap-v6.c optional armv6 !arm_new_pmap
arm/arm/pmap-v6-new.c optional armv6 arm_new_pmap
arm/arm/pmap-v6-new.c optional armv6
arm/arm/pmu.c optional pmu | fdt hwpmc
arm/arm/sc_machdep.c optional sc
arm/arm/setcpsr.S standard

View File

@ -5,7 +5,6 @@ ARM_INTRNG opt_global.h
ARM_KERN_DIRECTMAP opt_vm.h
ARM_L2_PIPT opt_global.h
ARM_MANY_BOARD opt_global.h
ARM_NEW_PMAP opt_global.h
NKPT2PG opt_pmap.h
ARM_WANT_TP_ADDRESS opt_global.h
COUNTS_PER_SEC opt_timer.h