[PATCH] arm: ensure that cache manager operations are implemented for CPUs using cache.

Pavel Pisa pisa at cmp.felk.cvut.cz
Sat Jun 25 15:15:29 UTC 2016


Hello all,

I have tested that changes do not break build of next BSPs

 altcycv_devkit                c/src/lib/libbsp/arm/altera-cyclone-v
 altcycv_devkit_smp            c/src/lib/libbsp/arm/altera-cyclone-v
 atsamv                        c/src/lib/libbsp/arm/atsam
 beagleboneblack               c/src/lib/libbsp/arm/beagle
 csb336                        c/src/lib/libbsp/arm/csb336
 csb337                        c/src/lib/libbsp/arm/csb337
 csb637                        c/src/lib/libbsp/arm/csb337
 kit637_v6                     c/src/lib/libbsp/arm/csb337
 edb7312                       c/src/lib/libbsp/arm/edb7312
 arm1136jfs                    c/src/lib/libbsp/arm/gdbarmsim
 arm1136js                     c/src/lib/libbsp/arm/gdbarmsim
 arm7tdmi                      c/src/lib/libbsp/arm/gdbarmsim
 arm920                        c/src/lib/libbsp/arm/gdbarmsim
 armcortexa9                   c/src/lib/libbsp/arm/gdbarmsim
 gumstix                       c/src/lib/libbsp/arm/gumstix
 lm3s6965                      c/src/lib/libbsp/arm/lm3s69xx
 lm4f120                       c/src/lib/libbsp/arm/lm3s69xx
 lpc17xx_ea_ram                c/src/lib/libbsp/arm/lpc24xx
 lpc24xx_ea                    c/src/lib/libbsp/arm/lpc24xx
 lpc40xx_ea_ram                c/src/lib/libbsp/arm/lpc24xx
 lpc40xx_ea_rom_int            c/src/lib/libbsp/arm/lpc24xx
 lpc32xx_mzx                   c/src/lib/libbsp/arm/lpc32xx
 raspberrypi2                  c/src/lib/libbsp/arm/raspberrypi
 raspberrypi                   c/src/lib/libbsp/arm/raspberrypi
 realview_pbx_a9_qemu          c/src/lib/libbsp/arm/realview-pbx-a9
 realview_pbx_a9_qemu_smp      c/src/lib/libbsp/arm/realview-pbx-a9
 rtl22xx                       c/src/lib/libbsp/arm/rtl22xx
 rtl22xx_t                     c/src/lib/libbsp/arm/rtl22xx
 smdk2410                      c/src/lib/libbsp/arm/smdk2410
 stm32f105rc                   c/src/lib/libbsp/arm/stm32f4
 stm32f4                       c/src/lib/libbsp/arm/stm32f4
 tms570ls3137_hdk_sdram        c/src/lib/libbsp/arm/tms570
 xilinx_zynq_zedboard          c/src/lib/libbsp/arm/xilinx-zynq

I have tested with RPi1 VideoCore mailbox exchange that

  rtems_cache_flush_multiple_data_lines(buf, size)
  rtems_cache_invalidate_multiple_data_lines(buf, size)

really ensure that operations work even after multitasking/thread context
is enabled.

Next BSPs have now changed/non-dummy cache manager operations added
(compared to y previous report)

 Checking cache manager operations for beagle beagleboneblack
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for csb336 csb336
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for csb337 csb337
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for csb337 csb637
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for csb337 kit637_v6
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for gumstix gumstix
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for raspberrypi raspberrypi2
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  4770            bx      lr
-   2:  bf00            nop
+   0:  b161            cbz     r1, 1c <rtems_cache_flush_multiple_data_lines+0x1c>
+   2:  f020 031f       bic.w   r3, r0, #31

 Checking cache manager operations for raspberrypi raspberrypi
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

 Checking cache manager operations for realview-pbx-a9 realview_pbx_a9_qemu_smp
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  b480            push    {r7}
-   2:  b083            sub     sp, #12
+   0:  b580            push    {r7, lr}
+   2:  b084            sub     sp, #16

 Checking cache manager operations for smdk2410 smdk2410
 00000000 <rtems_cache_flush_multiple_data_lines>:
-   0:  e12fff1e        bx      lr
+   0:  e3510000        cmp     r1, #0

It is highly probable that shared CP15 operations fail
on some subarchitecture but I consider this as required
step forward.

Best wishes,

              Pavel



More information about the devel mailing list