Changeset a03b609 in mainline for kernel/arch/arm32/src


Ignore:
Timestamp:
2013-01-19T18:17:27Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
26e3db2
Parents:
827aae5
Message:

arm32: Convert sctlr use to cp15 helpers.

Location:
kernel/arch/arm32/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/src/cpu/cpu.c

    r827aae5 ra03b609  
    129129void cpu_arch_init(void)
    130130{
    131         /* Get rid of any boot code hiding in ICache
    132          * This is safe without regards to ICache state. */
    133         memory_barrier();
    134         smc_coherence();
    135 
    136         uint32_t control_reg = 0;
    137         asm volatile (
    138                 "mrc p15, 0, %[control_reg], c1, c0"
    139                 : [control_reg] "=r" (control_reg)
    140         );
     131        uint32_t control_reg = SCTLR_read();
    141132       
    142133        /* Turn off tex remap, RAZ/WI prior to armv7 */
    143         control_reg &= ~CP15_R1_TEX_REMAP_EN;
     134        control_reg &= ~SCTLR_TEX_REMAP_EN_FLAG;
    144135        /* Turn off accessed flag, RAZ/WI prior to armv7 */
    145         control_reg &= ~(CP15_R1_ACCESS_FLAG_EN | CP15_R1_HW_ACCESS_FLAG_EN);
     136        control_reg &= ~(SCTLR_ACCESS_FLAG_EN_FLAG | SCTLR_HW_ACCESS_FLAG_EN_FLAG);
    146137        /* Disable branch prediction RAZ/WI if not supported */
    147         control_reg &= ~CP15_R1_BRANCH_PREDICT_EN;
     138        control_reg &= ~SCTLR_BRANCH_PREDICT_EN_FLAG;
    148139
    149140        /* Unaligned access is supported on armv6+ */
     
    153144         * see ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition
    154145         * L.3.1 (p. 2456) */
    155         control_reg |= CP15_R1_UNALIGNED_EN;
     146        control_reg |= SCTLR_UNALIGNED_EN_FLAG;
    156147        /* Disable alignment checks, this turns unaligned access to undefined,
    157148         * unless U bit is set. */
    158         control_reg &= ~CP15_R1_ALIGN_CHECK_EN;
     149        control_reg &= ~SCTLR_ALIGN_CHECK_EN_FLAG;
    159150        /* Enable caching, On arm prior to armv7 there is only one level
    160151         * of caches. Data cache is coherent.
     
    167158         * L2 Cache for armv7 was enabled in boot code.
    168159         */
    169         control_reg |= CP15_R1_CACHE_EN;
     160        control_reg |= SCTLR_CACHE_EN_FLAG;
    170161#endif
    171162#ifdef PROCESSOR_cortex_a8
     
    173164          * Cortex-A8 implements IVIPT extension.
    174165          * Cortex-A8 TRM ch. 7.2.6 p. 7-4 (PDF 245) */
    175         control_reg |= CP15_R1_INST_CACHE_EN;
    176 #endif
    177        
    178         asm volatile (
    179                 "mcr p15, 0, %[control_reg], c1, c0"
    180                 :: [control_reg] "r" (control_reg)
    181         );
     166        control_reg |= SCTLR_INST_CACHE_EN_FLAG;
     167#endif
     168        SCTLR_write(control_reg);
     169
    182170#ifdef CONFIG_FPU
    183171        fpu_setup();
  • kernel/arch/arm32/src/exception.c

    r827aae5 ra03b609  
    3939#include <interrupt.h>
    4040#include <arch/mm/page_fault.h>
     41#include <arch/cp15.h>
    4142#include <arch/barrier.h>
    4243#include <print.h>
     
    136137static void high_vectors(void)
    137138{
    138         uint32_t control_reg = 0;
    139         asm volatile (
    140                 "mrc p15, 0, %[control_reg], c1, c0"
    141                 : [control_reg] "=r" (control_reg)
    142         );
     139        uint32_t control_reg = SCTLR_read();
    143140       
    144141        /* switch on the high vectors bit */
    145         control_reg |= CP15_R1_HIGH_VECTORS_EN;
    146        
    147         asm volatile (
    148                 "mcr p15, 0, %[control_reg], c1, c0"
    149                 :: [control_reg] "r" (control_reg)
    150         );
     142        control_reg |= SCTLR_HIGH_VECTORS_EN_FLAG;
     143       
     144        SCTLR_write(control_reg);
    151145}
    152146#endif
Note: See TracChangeset for help on using the changeset viewer.