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 */
> 

Reply via email to