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

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