kernel_optimize_test/arch/arc
Vineet Gupta ee40bd1e0c ARCv2: mm: Merge 2 updates to DC_CTRL for region flush
Region Flush has a weird programming model.

 1. Flush or Invalidate is selected by DC_CTRL.RGN_OP
 2 Flush-n-Invalidate is done by DC_CTRL.IM

Given the code structuring before, case #2 above was generating two
seperate updates to DC_CTRL which was pointless.

| 80a342b0 <__dma_cache_wback_inv_l1>:
| 80a342b0:	clri	r4
| 80a342b4:	lr	r2,[dc_ctrl]
| 80a342b8:	bset_s	r2,r2,0x6
| 80a342ba:	sr	r2,[dc_ctrl]	<-- FIRST
|
| 80a342be:	bmskn	r3,r0,0x5
|
| 80a342c2:	lr	r2,[dc_ctrl]
| 80a342c6:	and	r2,r2,0xfffff1ff
| 80a342ce:	bset_s	r2,r2,0x9
| 80a342d0:	sr	r2,[dc_ctrl]	<-- SECOND
|
| 80a342d4:	add_s	r1,r1,0x3f
| 80a342d6:	bmsk_s	r0,r0,0x5
| 80a342d8:	add_s	r0,r0,r1
| 80a342da:	add_s	r0,r0,r3
| 80a342dc:	sr	r0,[78]
| 80a342e0:	sr	r3,[77]
|...
|...

So move setting of DC_CTRL.RGN_OP into __before_dc_op() and combine with
any other update.

| 80b63324 <__dma_cache_wback_inv_l1>:
| 80b63324:	clri	r3
| 80b63328:	lr	r2,[dc_ctrl]
| 80b6332c:	and	r2,r2,0xfffff1ff
| 80b63334:	or	r2,r2,576
| 80b63338:	sr	r2,[dc_ctrl]
|
| 80b6333c:	add_s	r1,r1,0x3f
| 80b6333e:	bmskn	r2,r0,0x5
| 80b63342:	add_s	r0,r0,r1
| 80b63344:	sr	r0,[78]
| 80b63348:	sr	r2,[77]

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
2017-05-02 16:16:07 -07:00
..
boot arc: axs10x: Fix ARC PGU default clock frequency 2017-04-27 12:08:28 -07:00
configs arc: vdk: Add support of UIO 2017-02-06 09:37:57 -08:00
include ARCv2: mm: Implement cache region flush operations 2017-05-02 15:57:22 -07:00
kernel ARCv2: entry: save Accumulator register pair (r58:59) if present 2017-04-20 15:37:49 -07:00
lib
mm ARCv2: mm: Merge 2 updates to DC_CTRL for region flush 2017-05-02 16:16:07 -07:00
oprofile
plat-axs10x
plat-eznps ARC: [plat-*] ARC_HAS_COH_CACHES no longer relevant 2017-02-06 09:37:57 -08:00
plat-sim ARC: [plat-*] ARC_HAS_COH_CACHES no longer relevant 2017-02-06 09:37:57 -08:00
plat-tb10x
Kbuild
Kconfig ARCv2: entry: save Accumulator register pair (r58:59) if present 2017-04-20 15:37:49 -07:00
Kconfig.debug
Makefile