Changeset a03b609 in mainline for kernel/arch/arm32/src/cpu/cpu.c


Ignore:
Timestamp:
2013-01-19T18:17:27Z (11 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.

File:
1 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();
Note: See TracChangeset for help on using the changeset viewer.