On 29/04/2019 18:16, Jagan Teki wrote: Hi,
> On Sun, Feb 10, 2019 at 9:49 PM Andre Przywara <[email protected]> wrote: >> >> Hi, this is a resend of what I posted some weeks ago, just adding the >> missing Signed-off-by: in patch 2/3, as pointed out by Philipp. I used >> the opportunity to add his Reviewed-by: tags on the first two patches. >> (Many thanks for that!) The rest is unchanged. >> ------------------- >> >> Admittedly this is the long way round to solve some nasty SPL code size >> problem, but it looked beneficial to others as well, so here we go: >> >> arch/arm/include/asm/io.h looks like it's been around since the dawn of >> time, and was more or less blindly copied from Linux. >> We don't use and don't need most of the definitions, and mainline Linux >> got rid of them anyway, so patch 1/3 cleans up this header file to >> just contain what we need in U-Boot. >> >> Patch 2/3 introduces readl/writel_relaxed accessors, which are cheaper, >> but more importantly save one (barrier) instruction per accessor. This >> helps to bring down code size, since especially DRAM controller inits in >> SPLs tend to do a lot of MMIO. >> >> Consequently patch 3/3 introduces them in the Allwinner H6 DRAM driver, >> which reduces the SPL size by a whopping 2KB, due to a twist: >> The AArch64 exception table needs to be 2KB aligned, but we don't do >> anything special about it the linker script. So depending on where the >> code before the vectors ends, we have potentially large padding: >> At the moment this last address is 0x1824 for the H6, so the vectors can >> only start at 0x2000. By reducing the code size before the vectors by just >> (at least) 9 instructions, the vectors start at 0x1800 and we save most of >> the padding. >> >> I understand that the proper solution is to fill the gap before the vectors >> with code instead of NOPs, but I couldn't find any obvious way doing this >> in the linker script. If anyone has any idea here, I am all ears. >> >> Cheers, >> Andre. >> >> Andre Przywara (3): >> arm: clean up asm/io.h >> arm: introduce _relaxed MMIO accessors >> sunxi: H6: use writel_relaxed for DRAM timing register accesses > > These have build issues with arm32, please send another series. Thanks for the elaborate error report ;-) There is commit 6478848d165b63293f7021db9b70ce25a1e1062c, which does basically the same thing as patch 2/3 in this series and was merged by Tom already. This causes the double definition. So just dropping the middle patch from this series should do the trick. Cheers, Andre. _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

