Author: mmel
Date: Thu Feb  4 12:11:18 2016
New Revision: 295252
URL: https://svnweb.freebsd.org/changeset/base/295252

Log:
  ARM: Don't use ugly (and hidden) global variable, control register is
  readable at any time.

Modified:
  head/sys/arm/arm/cpufunc.c
  head/sys/arm/arm/identcpu.c
  head/sys/arm/include/cpufunc.h

Modified: head/sys/arm/arm/cpufunc.c
==============================================================================
--- head/sys/arm/arm/cpufunc.c  Thu Feb  4 12:06:06 2016        (r295251)
+++ head/sys/arm/arm/cpufunc.c  Thu Feb  4 12:11:18 2016        (r295252)
@@ -88,8 +88,6 @@ u_int arm_cache_level;
 u_int  arm_cache_type[14];
 u_int  arm_cache_loc;
 
-int ctrl;
-
 #ifdef CPU_ARM9
 struct cpu_functions arm9_cpufuncs = {
        /* CPU functions */
@@ -889,7 +887,6 @@ arm9_setup(void)
 
        /* Set the control register */
        cpu_control(cpuctrlmask, cpuctrl);
-       ctrl = cpuctrl;
 
 }
 #endif /* CPU_ARM9 */
@@ -928,7 +925,6 @@ arm10_setup(void)
                cpuctrl |= CPU_CONTROL_VECRELOC;
 
        /* Set the control register */
-       ctrl = cpuctrl;
        cpu_control(0xffffffff, cpuctrl);
 
        /* And again. */
@@ -1032,7 +1028,6 @@ arm11x6_setup(void)
        cp15_cpacr_set(0x0fffffff);
 
        /* Set the control register */
-       ctrl = cpuctrl;
        cpu_control(~cpuctrl_wax, cpuctrl);
 
        tmp = cp15_actlr_get();
@@ -1074,7 +1069,6 @@ pj4bv7_setup(void)
        cpu_idcache_wbinv_all();
 
        /* Set the control register */
-       ctrl = cpuctrl;
        cpu_control(0xFFFFFFFF, cpuctrl);
 
        /* And again. */
@@ -1120,7 +1114,6 @@ cortexa_setup(void)
        cpu_idcache_wbinv_all();
 
        /* Set the control register */
-       ctrl = cpuctrl;
        cpu_control(cpuctrlmask, cpuctrl);
 
        /* And again. */
@@ -1167,7 +1160,6 @@ fa526_setup(void)
        cpu_idcache_wbinv_all();
 
        /* Set the control register */
-       ctrl = cpuctrl;
        cpu_control(0xffffffff, cpuctrl);
 }
 #endif /* CPU_FA526 */
@@ -1221,7 +1213,6 @@ xscale_setup(void)
         * Set the control register.  Note that bits 6:3 must always
         * be set to 1.
         */
-       ctrl = cpuctrl;
 /*     cpu_control(cpuctrlmask, cpuctrl);*/
        cpu_control(0xffffffff, cpuctrl);
 

Modified: head/sys/arm/arm/identcpu.c
==============================================================================
--- head/sys/arm/arm/identcpu.c Thu Feb  4 12:06:06 2016        (r295251)
+++ head/sys/arm/arm/identcpu.c Thu Feb  4 12:11:18 2016        (r295252)
@@ -321,7 +321,6 @@ print_enadis(int enadis, char *s)
        printf(" %s %sabled", s, (enadis == 0) ? "dis" : "en");
 }
 
-extern int ctrl;
 enum cpu_class cpu_class = CPU_CLASS_NONE;
 
 u_int cpu_pfr(int num)
@@ -388,9 +387,10 @@ void
 identify_arm_cpu(void)
 {
        u_int cpuid, reg, size, sets, ways;
-       u_int8_t type, linesize;
+       u_int8_t type, linesize, ctrl;
        int i;
 
+       ctrl = cpu_get_control();
        cpuid = cpu_ident();
 
        if (cpuid == 0) {

Modified: head/sys/arm/include/cpufunc.h
==============================================================================
--- head/sys/arm/include/cpufunc.h      Thu Feb  4 12:06:06 2016        
(r295251)
+++ head/sys/arm/include/cpufunc.h      Thu Feb  4 12:11:18 2016        
(r295252)
@@ -202,6 +202,7 @@ u_int       cpufunc_control         (u_int clear, u_i
 void   cpu_domains             (u_int domains);
 u_int  cpu_faultstatus         (void);
 u_int  cpu_faultaddress        (void);
+u_int  cpu_get_control         (void);
 u_int  cpu_pfr                 (int);
 
 #if defined(CPU_FA526)
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to