summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJose Abreu <joabreu@synopsys.com>2018-11-30 09:47:31 +0000
committerVineet Gupta <vgupta@synopsys.com>2018-11-30 11:26:29 -0800
commit10d443431dc2bb733cf7add99b453e3fb9047a2e (patch)
tree2151f6db580fa44d5f1937244bfab029720aef7c /Documentation
parentb7cc40c32a8bfa6f2581a71747f6a7d491fe43ba (diff)
ARC: io.h: Implement reads{x}()/writes{x}()
Some ARC CPU's do not support unaligned loads/stores. Currently, generic implementation of reads{b/w/l}()/writes{b/w/l}() is being used with ARC. This can lead to misfunction of some drivers as generic functions do a plain dereference of a pointer that can be unaligned. Let's use {get/put}_unaligned() helpers instead of plain dereference of pointer in order to fix. The helpers allow to get and store data from an unaligned address whilst preserving the CPU internal alignment. According to [1], the use of these helpers are costly in terms of performance so we added an initial check for a buffer already aligned so that the usage of the helpers can be avoided, when possible. [1] Documentation/unaligned-memory-access.txt Cc: Alexey Brodkin <abrodkin@synopsys.com> Cc: Joao Pinto <jpinto@synopsys.com> Cc: David Laight <David.Laight@ACULAB.COM> Tested-by: Vitor Soares <soares@synopsys.com> Signed-off-by: Jose Abreu <joabreu@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions