On Wed, Mar 09, 2016 at 01:28:55PM +1100, Jonathan Gray wrote:
> 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

We can also safely drop 80200 and IXP425.  That allows us to lose some
more unused code without harming armish or zaurus.

> 
> 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.
> 

Yeah, that's at least a tiny jump.

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