1. 28 9月, 2006 2 次提交
    • H
      [ARM] nommu: manage the CP15 things · f12d0d7c
      Hyok S. Choi 提交于
      All the current CP15 access codes in ARM arch can be categorized and
      conditioned by the defines as follows:
      
           Related operation	Safe condition
        a. any CP15 access	!CPU_CP15
        b. alignment trap	CPU_CP15_MMU
        c. D-cache(C-bit)	CPU_CP15
        d. I-cache		CPU_CP15 && !( CPU_ARM610 || CPU_ARM710 ||
      				CPU_ARM720 || CPU_ARM740 ||
      				CPU_XSCALE || CPU_XSC3 )
        e. alternate vector	CPU_CP15 && !CPU_ARM740
        f. TTB		CPU_CP15_MMU
        g. Domain		CPU_CP15_MMU
        h. FSR/FAR		CPU_CP15_MMU
      
      For example, alternate vector is supported if and only if
      "CPU_CP15 && !CPU_ARM740" is satisfied.
      Signed-off-by: NHyok S. Choi <hyok.choi@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      f12d0d7c
    • H
      [ARM] nommu: defines CPU_CP15, CPU_CP15_MMU and CPU_CP15_MPU · fefdaa06
      Hyok S. Choi 提交于
      By merging of uClinux/ARM, we need to treat various CPU cores which have
      MMU, MPU or even none for memory management. The memory management
      coprocessors are controlled by CP15 register set and the ARM core family
      can be categorized by 5 groups by the register ;
        G-a. CP15 is MMU : 610, 710, 720, 920, 922, 925, 926, 1020, 1020e, 1022,
      		v6 and the derivations sa1100, sa110, xscale, xsc3.
        G-b. CP15 is MPU : 740, 940, 946, 996, 1156.
        G-c. CP15 is MPU or MMU : 1026 (selectable by schematic design)
        G-d. CP15 is exist, but nothing for memory managemnt : 966, 968.
        G-e. no-CP15 : 7tdmi, 9tdmi, 9e, 9ej
      
      This patch defines CPU_CP15, CPU_CP15_MMU and CPU_CP15_MPU. Thus the
      family can be defined as :
        - CPU_CP15 only : G-d
        - CPU_CP15_MMU(implies CPU_CP15) : G-a, G-c(selectable)
        - CPU_CP15_MPU(implies CPU_CP15) : G-b, G-c(selectable)
        - !CPU_CP15 : G-e
      Signed-off-by: NHyok S. Choi <hyok.choi@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      fefdaa06
  2. 27 9月, 2006 7 次提交
  3. 25 9月, 2006 4 次提交
  4. 20 9月, 2006 2 次提交
  5. 15 9月, 2006 1 次提交
  6. 07 9月, 2006 1 次提交
  7. 03 9月, 2006 1 次提交
    • G
      [ARM] 3762/1: Fix ptrace cache coherency bug for ARM1136 VIPT nonaliasing Harvard caches · a188ad2b
      George G. Davis 提交于
      Patch from George G. Davis
      
      Resolve ARM1136 VIPT non-aliasing cache coherency issues observed when
      using ptrace to set breakpoints and cleanup copy_{to,from}_user_page()
      while we're here as requested by Russell King because "it's also far
      too heavy on non-v6 CPUs".
      
      NOTES:
      
      1. Only access_process_vm() calls copy_{to,from}_user_page().
      2. access_process_vm() calls get_user_pages() to pin down the "page".
      3. get_user_pages() calls flush_dcache_page(page) which ensures cache
         coherency between kernel and userspace mappings of "page".  However
         flush_dcache_page(page) may not invalidate I-Cache over this range
         for all cases, specifically, I-Cache is not invalidated for the VIPT
         non-aliasing case.  So memory is consistent between kernel and user
         space mappings of "page" but I-Cache may still be hot over this
         range.  IOW, we don't have to worry about flush_cache_page() before
         memcpy().
      4. Now, for the copy_to_user_page() case, after memcpy(), we must flush
         the caches so memory is consistent with kernel cache entries and
         invalidate the I-Cache if this mm region is executable.  We don't
         need to do anything after memcpy() for the copy_from_user_page()
         case since kernel cache entries will be invalidated via the same
         process above if we access "page" again.  The flush_ptrace_access()
         function (borrowed from SPARC64 implementation) is added to handle
         cache flushing after memcpy() for the copy_to_user_page() case.
      Signed-off-by: NGeorge G. Davis <gdavis@mvista.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      a188ad2b
  8. 28 8月, 2006 1 次提交
  9. 29 7月, 2006 3 次提交
  10. 03 7月, 2006 5 次提交
  11. 02 7月, 2006 2 次提交
  12. 01 7月, 2006 2 次提交
  13. 30 6月, 2006 2 次提交
    • R
      [ARM] Add section support to ioremap · ff0daca5
      Russell King 提交于
      Allow section mappings to be setup using ioremap() and torn down
      with iounmap().  This requires additional support in the MM
      context switch to ensure that mappings are properly synchronised
      when mapped in.
      
      Based an original implementation by Deepak Saxena, reworked and
      ARMv6 support added by rmk.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ff0daca5
    • R
      [ARM] Set bit 4 on section mappings correctly depending on CPU · 8799ee9f
      Russell King 提交于
      On some CPUs, bit 4 of section mappings means "update the
      cache when written to".  On others, this bit is required to
      be one, and others it's required to be zero.  Finally, on
      ARMv6 and above, setting it turns on "no execute" and prevents
      speculative prefetches.
      
      With all these combinations, no one value fits all CPUs, so we
      have to pick a value depending on the CPU type, and the area
      we're mapping.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8799ee9f
  14. 29 6月, 2006 7 次提交