On Tue, Mar 08, 2016 at 10:59:42PM +0100, Patrick Wildt wrote:
> Hi,
>
> I'd like to get some opinions on this. ARM8 has probably never ever
> been used with OpenBSD, and I doubt it will ever be. I think it also
> makes sense to remove more, like ARM9, ARM9E, ARM10, ARM11. All the
> cruft that is not used, apart from armish, armv7 and zaurus.
>
> In the end it will probably only make sense to support >=ARMv6, which
> does not include armish and zaurus. Not sure how long those will still
> be around though.
>
> This diff removes ARM8 first, I can follow up with more diffs quickly.
>
> Thoughts?
>
> Patrick
StrongARM is ARM8 but has it's own CPU_SA1100 that would have been used
by OpenBSD/cats.
But cats was dropped a long time ago (4.0). It seems it may not be
possible to do eabi without requiring at least armv4t.
armish is CPU_XSCALE_80321
zaurus is CPU_XSCALE_PXA2X0
so we'd just keep the xscale variants and CPU_ARMv7?
CPU_XSCALE_80200
CPU_XSCALE_80321
CPU_XSCALE_PXA2X0
CPU_XSCALE_IXP425
CPU_ARMv7
currently the gcc configuration in base has
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
that could also change to something like TARGET_CPU_arm10tdmi
if the new baseline becomes armv5 instead of armv4.
>
> diff --git sys/arch/arm/arm/cpu.c sys/arch/arm/arm/cpu.c
> index bc96e79..12709b1 100644
> --- sys/arch/arm/arm/cpu.c
> +++ sys/arch/arm/arm/cpu.c
> @@ -80,36 +80,10 @@ cpu_attach(struct device *dv)
> curcpu()->ci_arm_cpuid & CPU_ID_REVISION_MASK;
>
> identify_arm_cpu(dv, curcpu());
> -
> -#ifdef CPU_ARM8
> - if ((curcpu()->ci_arm_cpuid & CPU_ID_CPU_MASK) == CPU_ID_ARM810) {
> - int clock = arm8_clock_config(0, 0);
> - char *fclk;
> - aprint_normal("%s: ARM810 cp15=%02x", dv->dv_xname, clock);
> - aprint_normal(" clock:%s", (clock & 1) ? " dynamic" : "");
> - aprint_normal("%s", (clock & 2) ? " sync" : "");
> - switch ((clock >> 2) & 3) {
> - case 0:
> - fclk = "bus clock";
> - break;
> - case 1:
> - fclk = "ref clock";
> - break;
> - case 3:
> - fclk = "pll";
> - break;
> - default:
> - fclk = "illegal";
> - break;
> - }
> - aprint_normal(" fclk source=%s\n", fclk);
> - }
> -#endif
> }
>
> enum cpu_class {
> CPU_CLASS_NONE,
> - CPU_CLASS_ARM8,
> CPU_CLASS_ARM9TDMI,
> CPU_CLASS_ARM9ES,
> CPU_CLASS_ARM9EJS,
> @@ -219,9 +193,6 @@ struct cpuidtab {
> };
>
> const struct cpuidtab cpuids[] = {
> - { CPU_ID_ARM810, CPU_CLASS_ARM8, "ARM810",
> - generic_steppings },
> -
> { CPU_ID_ARM920T, CPU_CLASS_ARM9TDMI, "ARM920T",
> generic_steppings },
> { CPU_ID_ARM922T, CPU_CLASS_ARM9TDMI, "ARM922T",
> @@ -358,7 +329,6 @@ struct cpu_classtab {
>
> const struct cpu_classtab cpu_classes[] = {
> { "unknown", NULL }, /* CPU_CLASS_NONE */
> - { "ARM8", "CPU_ARM8" }, /* CPU_CLASS_ARM8 */
> { "ARM9TDMI", NULL }, /* CPU_CLASS_ARM9TDMI */
> { "ARM9E-S", "CPU_ARM9E" }, /* CPU_CLASS_ARM9ES */
> { "ARM9EJ-S", "CPU_ARM9E" }, /* CPU_CLASS_ARM9EJS */
> @@ -429,12 +399,6 @@ identify_arm_cpu(struct device *dv, struct cpu_info *ci)
> printf("%s:", dv->dv_xname);
>
> switch (cpu_class) {
> - case CPU_CLASS_ARM8:
> - if ((ci->ci_ctrl & CPU_CONTROL_IDC_ENABLE) == 0)
> - printf(" IDC disabled");
> - else
> - printf(" IDC enabled");
> - break;
> case CPU_CLASS_ARM9TDMI:
> case CPU_CLASS_ARM9ES:
> case CPU_CLASS_ARM9EJS:
> @@ -490,9 +454,6 @@ identify_arm_cpu(struct device *dv, struct cpu_info *ci)
> skip_pcache:
>
> switch (cpu_class) {
> -#ifdef CPU_ARM8
> - case CPU_CLASS_ARM8:
> -#endif
> #ifdef CPU_ARM9
> case CPU_CLASS_ARM9TDMI:
> #endif
> diff --git sys/arch/arm/arm/cpufunc.c sys/arch/arm/arm/cpufunc.c
> index f549e61..4c2c6d8 100644
> --- sys/arch/arm/arm/cpufunc.c
> +++ sys/arch/arm/arm/cpufunc.c
> @@ -97,63 +97,6 @@ int arm_dcache_align_mask;
> /* 1 == use cpu_sleep(), 0 == don't */
> int cpu_do_powersave;
>
> -#ifdef CPU_ARM8
> -struct cpu_functions arm8_cpufuncs = {
> - /* CPU functions */
> -
> - cpufunc_id, /* id */
> - cpufunc_nullop, /* cpwait */
> -
> - /* MMU functions */
> -
> - cpufunc_control, /* control */
> - cpufunc_domains, /* domain */
> - arm8_setttb, /* setttb */
> - cpufunc_dfsr, /* dfsr */
> - cpufunc_dfar, /* dfar */
> - cpufunc_ifsr, /* ifsr */
> - cpufunc_ifar, /* ifar */
> -
> - /* TLB functions */
> -
> - arm8_tlb_flushID, /* tlb_flushID */
> - arm8_tlb_flushID_SE, /* tlb_flushID_SE */
> - arm8_tlb_flushID, /* tlb_flushI */
> - arm8_tlb_flushID_SE, /* tlb_flushI_SE */
> - arm8_tlb_flushID, /* tlb_flushD */
> - arm8_tlb_flushID_SE, /* tlb_flushD_SE */
> -
> - /* Cache operations */
> -
> - cpufunc_nullop, /* icache_sync_all */
> - (void *)cpufunc_nullop, /* icache_sync_range */
> -
> - arm8_cache_purgeID, /* dcache_wbinv_all */
> - (void *)arm8_cache_purgeID, /* dcache_wbinv_range */
> -/*XXX*/ (void *)arm8_cache_purgeID, /* dcache_inv_range */
> - (void *)arm8_cache_cleanID, /* dcache_wb_range */
> -
> - arm8_cache_purgeID, /* idcache_wbinv_all */
> - (void *)arm8_cache_purgeID, /* idcache_wbinv_range */
> -
> - cpufunc_nullop, /* sdcache_wbinv_all */
> - (void *)cpufunc_nullop, /* sdcache_wbinv_range */
> - (void *)cpufunc_nullop, /* sdcache_inv_range */
> - (void *)cpufunc_nullop, /* sdcache_wb_range */
> -
> - /* Other functions */
> -
> - cpufunc_nullop, /* flush_prefetchbuf */
> - cpufunc_nullop, /* drain_writebuf */
> -
> - (void *)cpufunc_nullop, /* sleep */
> -
> - /* Soft functions */
> - arm8_context_switch, /* context_switch */
> - arm8_setup /* cpu setup */
> -};
> -#endif /* CPU_ARM8 */
> -
> #ifdef CPU_ARM9
> struct cpu_functions arm9_cpufuncs = {
> /* CPU functions */
> @@ -624,7 +567,7 @@ struct cpu_functions cpufuncs;
> u_int cputype;
> u_int cpu_reset_needs_v4_MMU_disable; /* flag used in locore.s */
>
> -#if defined(CPU_ARM8) || defined(CPU_ARM9) || \
> +#if defined(CPU_ARM9) || \
> defined(CPU_ARM9E) || defined(CPU_ARM10) || defined(CPU_ARM11) || \
> defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
> defined(CPU_XSCALE_PXA2X0) || defined(CPU_XSCALE_IXP425)
> @@ -704,7 +647,7 @@ get_cachetype_cp15()
> out:
> arm_dcache_align_mask = arm_dcache_align - 1;
> }
> -#endif /* ARM7TDMI || ARM8 || ARM9 || XSCALE */
> +#endif /* ARM7TDMI || ARM9 || XSCALE */
>
> #if defined(CPU_SA1100) || defined(CPU_SA1110) || defined(CPU_IXP12X0)
> /* Cache information for CPUs without cache type registers. */
> @@ -922,16 +865,6 @@ set_cpufuncs()
> * CPU type where we want to use it by default, then we set it.
> */
>
> -#ifdef CPU_ARM8
> - if ((cputype & CPU_ID_IMPLEMENTOR_MASK) == CPU_ID_ARM_LTD &&
> - (cputype & 0x0000f000) == 0x00008000) {
> - cpufuncs = arm8_cpufuncs;
> - cpu_reset_needs_v4_MMU_disable = 0; /* XXX correct? */
> - get_cachetype_cp15();
> - pmap_pte_init_arm8();
> - return 0;
> - }
> -#endif /* CPU_ARM8 */
> #ifdef CPU_ARM9
> if (((cputype & CPU_ID_IMPLEMENTOR_MASK) == CPU_ID_ARM_LTD ||
> (cputype & CPU_ID_IMPLEMENTOR_MASK) == CPU_ID_TI) &&
> @@ -1197,41 +1130,6 @@ set_cpufuncs()
> * CPU Setup code
> */
>
> -#ifdef CPU_ARM8
> -void
> -arm8_setup()
> -{
> - int integer;
> - int cpuctrl, cpuctrlmask;
> - int clocktest;
> - int setclock = 0;
> -
> - cpuctrl = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_32BP_ENABLE
> - | CPU_CONTROL_32BD_ENABLE | CPU_CONTROL_SYST_ENABLE
> - | CPU_CONTROL_IDC_ENABLE | CPU_CONTROL_WBUF_ENABLE
> - | CPU_CONTROL_AFLT_ENABLE;
> - cpuctrlmask = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_32BP_ENABLE
> - | CPU_CONTROL_32BD_ENABLE | CPU_CONTROL_SYST_ENABLE
> - | CPU_CONTROL_IDC_ENABLE | CPU_CONTROL_WBUF_ENABLE
> - | CPU_CONTROL_BPRD_ENABLE | CPU_CONTROL_ROM_ENABLE
> - | CPU_CONTROL_BEND_ENABLE | CPU_CONTROL_AFLT_ENABLE;
> -
> - /* Get clock configuration */
> - clocktest = arm8_clock_config(0, 0) & 0x0f;
> -
> - /* Clear out the cache */
> - cpu_idcache_wbinv_all();
> -
> - /* Set the control register */
> - curcpu()->ci_ctrl = cpuctrl;
> - cpu_control(0xffffffff, cpuctrl);
> -
> - /* Set the clock/test register */
> - if (setclock)
> - arm8_clock_config(0x7f, clocktest);
> -}
> -#endif /* CPU_ARM8 */
> -
> #ifdef CPU_ARM9
> void
> arm9_setup()
> diff --git sys/arch/arm/arm/pmap.c sys/arch/arm/arm/pmap.c
> index dda550f..627f4d5 100644
> --- sys/arch/arm/arm/pmap.c
> +++ sys/arch/arm/arm/pmap.c
> @@ -4439,23 +4439,6 @@ pmap_pte_init_generic(void)
> pmap_zero_page_func = pmap_zero_page_generic;
> }
>
> -#if defined(CPU_ARM8)
> -void
> -pmap_pte_init_arm8(void)
> -{
> -
> - /*
> - * ARM8 is compatible with generic, but we need to use
> - * the page tables uncached.
> - */
> - pmap_pte_init_generic();
> -
> - pte_l1_s_cache_mode_pt = 0;
> - pte_l2_l_cache_mode_pt = 0;
> - pte_l2_s_cache_mode_pt = 0;
> -}
> -#endif /* CPU_ARM8 */
> -
> #if defined(CPU_ARM9)
> void
> pmap_pte_init_arm9(void)
> diff --git sys/arch/arm/conf/files.arm sys/arch/arm/conf/files.arm
> index 0365078..857e7e6 100644
> --- sys/arch/arm/conf/files.arm
> +++ sys/arch/arm/conf/files.arm
> @@ -39,7 +39,6 @@ file arch/arm/arm/bcopyinout.S
> file arch/arm/arm/copystr.S
> file arch/arm/arm/cpufunc.c
> file arch/arm/arm/cpufunc_asm.S
> -file arch/arm/arm/cpufunc_asm_arm8.S cpu_arm8
> file arch/arm/arm/cpufunc_asm_arm9.S cpu_arm9
> file arch/arm/arm/cpufunc_asm_arm10.S cpu_arm9e | cpu_arm10
> file arch/arm/arm/cpufunc_asm_armv4.S cpu_arm9 | cpu_arm9e |
> diff --git sys/arch/arm/include/armreg.h sys/arch/arm/include/armreg.h
> index 68fb253..f2a5854 100644
> --- sys/arch/arm/include/armreg.h
> +++ sys/arch/arm/include/armreg.h
> @@ -176,7 +176,6 @@
> #define CPU_ID_ARM740T4K 0x41817400 /* XXX no MMU, 4KB cache */
>
> /* Post-ARM7 CPUs */
> -#define CPU_ID_ARM810 0x41018100
> #define CPU_ID_ARM920T 0x41129200
> #define CPU_ID_ARM922T 0x41029220
> #define CPU_ID_ARM926EJS 0x41069260
> diff --git sys/arch/arm/include/cpuconf.h sys/arch/arm/include/cpuconf.h
> index 4a64e12..6ed95ee 100644
> --- sys/arch/arm/include/cpuconf.h
> +++ sys/arch/arm/include/cpuconf.h
> @@ -48,7 +48,7 @@
> /*
> * Determine which ARM architecture versions are configured.
> */
> -#if (defined(CPU_ARM8) || defined(CPU_ARM9) || \
> +#if (defined(CPU_ARM9) || \
> defined(CPU_SA1100) || defined(CPU_SA1110) || \
> defined(CPU_IXP12X0) || defined(CPU_XSCALE_IXP425))
> #define ARM_ARCH_4 1
> @@ -91,7 +91,7 @@
> * protection is not used, TEX/AP is used instead.
> */
>
> -#if (defined(CPU_ARM8) || defined(CPU_ARM9) || defined(CPU_ARM9E) || \
> +#if (defined(CPU_ARM9) || defined(CPU_ARM9E) || \
> defined(CPU_ARM10) || defined(CPU_ARM11) || defined(CPU_ARMv7) )
> #define ARM_MMU_GENERIC 1
> #else
> diff --git sys/arch/arm/include/cpufunc.h sys/arch/arm/include/cpufunc.h
> index 9de47c4..416248a 100644
> --- sys/arch/arm/include/cpufunc.h
> +++ sys/arch/arm/include/cpufunc.h
> @@ -213,31 +213,6 @@ u_int cpufunc_dfar (void);
> u_int cpufunc_ifsr (void);
> u_int cpufunc_ifar (void);
>
> -#ifdef CPU_ARM8
> -void arm8_setttb (u_int ttb);
> -void arm8_tlb_flushID (void);
> -void arm8_tlb_flushID_SE (u_int va);
> -void arm8_cache_flushID (void);
> -void arm8_cache_flushID_E (u_int entry);
> -void arm8_cache_cleanID (void);
> -void arm8_cache_cleanID_E (u_int entry);
> -void arm8_cache_purgeID (void);
> -void arm8_cache_purgeID_E (u_int entry);
> -
> -void arm8_cache_syncI (void);
> -void arm8_cache_cleanID_rng (vaddr_t start, vsize_t end);
> -void arm8_cache_cleanD_rng (vaddr_t start, vsize_t end);
> -void arm8_cache_purgeID_rng (vaddr_t start, vsize_t end);
> -void arm8_cache_purgeD_rng (vaddr_t start, vsize_t end);
> -void arm8_cache_syncI_rng (vaddr_t start, vsize_t end);
> -
> -void arm8_context_switch (u_int);
> -
> -void arm8_setup (void);
> -
> -u_int arm8_clock_config (u_int, u_int);
> -#endif
> -
> #if defined(CPU_SA1100) || defined(CPU_SA1110)
> void sa11x0_drain_readbuf (void);
>
> diff --git sys/arch/arm/include/pmap.h sys/arch/arm/include/pmap.h
> index c409ad3..3851abb 100644
> --- sys/arch/arm/include/pmap.h
> +++ sys/arch/arm/include/pmap.h
> @@ -371,9 +371,6 @@ void pmap_copy_page_generic(struct vm_page *, struct
> vm_page *);
> void pmap_zero_page_generic(struct vm_page *);
>
> void pmap_pte_init_generic(void);
> -#if defined(CPU_ARM8)
> -void pmap_pte_init_arm8(void);
> -#endif
> #if defined(CPU_ARM9)
> void pmap_pte_init_arm9(void);
> #endif /* CPU_ARM9 */
>