From 04ec2115ad9e838c1684dac1e2e78bd5f1b58a60 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 1 Apr 2020 15:48:30 +1100 Subject: [PATCH] hello_world: Use ldcix/stdcix to access UART This is one step towards ultimately removing the address-based cache inhibit hack from dcache.vhdl. Signed-off-by: Paul Mackerras --- hello_world/console.c | 11 +---- hello_world/hello_world.bin | Bin 4688 -> 4536 bytes hello_world/hello_world.elf | Bin 78552 -> 77520 bytes hello_world/hello_world.hex | 93 ++++++++++++++---------------------- 4 files changed, 39 insertions(+), 65 deletions(-) diff --git a/hello_world/console.c b/hello_world/console.c index f8e5441..8dca8cb 100644 --- a/hello_world/console.c +++ b/hello_world/console.c @@ -25,23 +25,16 @@ static uint64_t potato_uart_base; static uint64_t potato_uart_reg_read(int offset) { - uint64_t addr; uint64_t val; - addr = potato_uart_base + offset; - - val = *(volatile uint64_t *)addr; + __asm__ volatile("ldcix %0,%1,%2" : "=r" (val) : "b" (potato_uart_base), "r" (offset)); return val; } static void potato_uart_reg_write(int offset, uint64_t val) { - uint64_t addr; - - addr = potato_uart_base + offset; - - *(volatile uint64_t *)addr = val; + __asm__ volatile("stdcix %0,%1,%2" : : "r" (val), "b" (potato_uart_base), "r" (offset)); } static int potato_uart_rx_empty(void) diff --git a/hello_world/hello_world.bin b/hello_world/hello_world.bin index 0be528309d864c0d26b86675b7c2fd0fa9da17e4..73bc181a46073d0bccc3f5eb37f54f36447de921 100755 GIT binary patch delta 371 zcmcbhvO{@803(lxKu_W_=FVD0mIl8~tjvrP1D0%NW|riwU&h2y^W*=+-~azVvR_g7 z-&%ly@yEsgia!Dw7(5sl7!oReKd!fAgtDbmYC!ylP`OknZO4`zG8M{x^Z&m$P#*{| zHZTGS1_v941x^+W2NZ09VhIcinu!t&43-KEnw1Oldlk-UzC%=%LSAG0P9h9YybcN delta 467 zcmdm?d_iSH03(l$U{B&Q=FVD0mIl8~tjvrP1D0%NW|rjDU^t*)%fP^pz@VU+sKB6E z$Z*;qU+dAK6bR{BI32?BKuu-W9(e z*RKUCs*p~p0kI>2?3X}sJGSHyNg(?R5Ci=O0*noe3=AHrIXU?X;rT^5DZE@jK>@H7 zP_inBfu+KcQJRMlEG7XIkNEfhzXL?R9xSK>g>mE2ksFJf``KE_?=pj&;sld<>5F@3A>@1EoNgHvsV)pjwdGARq(8Q-GM||Ns9W Pa~NEJ`sZ^&wFCJ8lYo&M diff --git a/hello_world/hello_world.elf b/hello_world/hello_world.elf index 452bf297682baeee0f1ded02fa2d59ae8eb40442..02a362d1b126d4379cac2550c5e30050b8e5f506 100755 GIT binary patch literal 77520 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

aXGu21}FsUh9LHPN*3 z?HfavvA6SPjl%Z#gzWA4vS{q>Jg#T|SjgVqmtHmYc73d8KM}IG=hgKM#-9t>+xy&s z_JE&V|LetnI%IFx>AbP8-v5k)FhBV^ERhbGc6&~~V(jg7n&#?TbC8~96M zkP<=mnz64xH>4$8|4WuxUx8(Cwf1jC>ZPl7Ut7oiPvj#lr&RUrQCC;RdY#2<#s9mW zK)U}X_CHw1{`&5~{`*1L>NU*sC+paMXHQ`N*Hz1)5bo=**0C?%7HICcN&o-T*r!5q zKKFsZ{`u;}HpaL8h;Tv5Vf&VSfyUz@zt+y?ZCtSBdeuo||HFDAm&5Bv?u?->YKx)$ zfmbsPRWIRKQV${0y65Eo@HnN6^PODo<)4keOBy+~@Ncd7zkeXGe@<)FF5&q918$d6 A2mk;8 literal 78552 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