<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm63xx/u-boot/arch/riscv/lib, branch master</title>
<subtitle>Broadcom-s U-Boot</subtitle>
<id>https://git.openwrt.org/project/bcm63xx/u-boot/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/project/bcm63xx/u-boot/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/'/>
<updated>2019-05-09T08:47:52Z</updated>
<entry>
<title>RISCV: image: Add booti support</title>
<updated>2019-05-09T08:47:52Z</updated>
<author>
<name>Atish Patra</name>
</author>
<published>2019-05-07T00:49:39Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=3cedc97479ff44cdc00485de7517a833e3dfb630'/>
<id>urn:sha1:3cedc97479ff44cdc00485de7517a833e3dfb630</id>
<content type='text'>
This patch adds booti support for RISC-V Linux kernel. The existing
bootm method will also continue to work as it is.

It depends on the following kernel patch which adds the header to the
flat Image. Gzip compressed Image (Image.gz) support is not enabled with
this patch.

https://patchwork.kernel.org/patch/10925543/

Tested on HiFive Unleashed and QEMU.

Signed-off-by: Atish Patra &lt;atish.patra@wdc.com&gt;
Reviewed-by: Tom Rini &lt;trini@konsulko.com&gt;
Tested-by: Karsten Merker &lt;merker@debian.org&gt;
Reviewed-by: Marek Vasut &lt;marek.vasut@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: Introduce CONFIG_XIP to support booting from flash</title>
<updated>2019-05-09T08:46:46Z</updated>
<author>
<name>Rick Chen</name>
</author>
<published>2019-04-30T05:49:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=bdce38965e79143ed58bf1c6d39c650ff3dfefd1'/>
<id>urn:sha1:bdce38965e79143ed58bf1c6d39c650ff3dfefd1</id>
<content type='text'>
When U-Boot boots from flash, during the boot process,
hart_lottery and available_harts_lock variable addresses
point to flash which is not writable. This causes boot
failures on AE350. Introduce a config option CONFIG_XIP
to support such configuration.

Signed-off-by: Rick Chen &lt;rick@andestech.com&gt;
Cc: Greentime Hu &lt;greentime@andestech.com&gt;
Reviewed-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: Add a SYSCON driver for Andestech's PLMT</title>
<updated>2019-04-08T01:45:08Z</updated>
<author>
<name>Rick Chen</name>
</author>
<published>2019-04-02T07:56:40Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=a1f24875c346a1bf8940b793a27364631d9aabf7'/>
<id>urn:sha1:a1f24875c346a1bf8940b793a27364631d9aabf7</id>
<content type='text'>
The platform-Level Machine Timer (PLMT) block
holds memory-mapped mtime register associated
with timer tick.

This driver implements the riscv_get_time() which
is required by the generic RISC-V timer driver.

Signed-off-by: Rick Chen &lt;rick@andestech.com&gt;
Cc: Greentime Hu &lt;greentime@andestech.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Reviewed-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
</content>
</entry>
<entry>
<title>riscv: Add a SYSCON driver for Andestech's PLIC</title>
<updated>2019-04-08T01:45:08Z</updated>
<author>
<name>Rick Chen</name>
</author>
<published>2019-04-02T07:56:39Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=0d389468e2144f3ba3bdbc566c05c0c05dc14fc6'/>
<id>urn:sha1:0d389468e2144f3ba3bdbc566c05c0c05dc14fc6</id>
<content type='text'>
The Platform-Level Interrupt Controller (PLIC)
block holds memory-mapped claim and pending registers
associated with software interrupt. It is required
for handling IPI.

Signed-off-by: Rick Chen &lt;rick@andestech.com&gt;
Cc: Greentime Hu &lt;greentime@andestech.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Reviewed-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
</content>
</entry>
<entry>
<title>riscv: boot images passed to bootm on all harts</title>
<updated>2019-04-08T01:44:26Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-03-17T18:28:38Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=f28ad250e6ef95ca58490b4e8651749d4f7e5c06'/>
<id>urn:sha1:f28ad250e6ef95ca58490b4e8651749d4f7e5c06</id>
<content type='text'>
Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Anup Patel &lt;anup.patel@wdc.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Tested-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: add support for multi-hart systems</title>
<updated>2019-04-08T01:44:26Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-03-17T18:28:37Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=3dea63c8445b25eb3de471410bbafcf54c9f0e9b'/>
<id>urn:sha1:3dea63c8445b25eb3de471410bbafcf54c9f0e9b</id>
<content type='text'>
On RISC-V, all harts boot independently. To be able to run on a
multi-hart system, U-Boot must be extended with the functionality to
manage all harts in the system. All harts entering U-Boot are registered
in the available_harts mask stored in global data. A hart lottery system
as used in the Linux kernel selects the hart U-Boot runs on. All other
harts are halted. U-Boot can delegate functions to them using
smp_call_function().

Every hart has a valid pointer to the global data structure and a 8KiB
stack by default. The stack size is set with CONFIG_STACK_SIZE_SHIFT.

Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Anup Patel &lt;anup.patel@wdc.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Tested-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: implement IPI platform functions using SBI</title>
<updated>2019-04-08T01:44:26Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-03-17T18:28:34Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=f152febb2a97696f7c7e6df46bf585cfc962a835'/>
<id>urn:sha1:f152febb2a97696f7c7e6df46bf585cfc962a835</id>
<content type='text'>
The supervisor binary interface (SBI) provides the necessary functions
to implement the platform IPI functions riscv_send_ipi() and
riscv_clear_ipi(). Use it to implement them.

This adds support for inter-processor interrupts (IPIs) on RISC-V CPUs
running in supervisor mode. Support for machine mode is already
available for CPUs that include the SiFive CLINT.

Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Anup Patel &lt;anup.patel@wdc.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Reviewed-by: Atish Patra &lt;atish.patra@wdc.com&gt;
Tested-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: add infrastructure for calling functions on other harts</title>
<updated>2019-04-08T01:44:25Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-03-17T18:28:32Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=fa33f08fd657b8568ede929df8a79bd113e9c5b1'/>
<id>urn:sha1:fa33f08fd657b8568ede929df8a79bd113e9c5b1</id>
<content type='text'>
Harts on RISC-V boot independently, U-Boot is responsible for managing
them. Functions are called on other harts with smp_call_function(),
which sends inter-processor interrupts (IPIs) to all other available
harts. Available harts are those marked as available in the device tree
and present in the available_harts mask stored in global data. The
available_harts mask is used to register all harts that have entered
U-Boot. Functions are specified with their address and two function
arguments (argument 2 and 3). The first function argument is always the
hart ID of the hart calling the function. On the other harts, the IPI
interrupt handler handle_ipi() must be called on software interrupts to
handle the request and call the specified function.

Functions are stored in the ipi_data data structure. Every hart has its
own data structure in global data. While this is not required at the
moment (all harts are expected to boot Linux), this does allow future
expansion, where other harts may be used for monitoring or other tasks.

Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Anup Patel &lt;anup.patel@wdc.com&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
Tested-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: use invalidate/flush_*cache_range functions in cache.c</title>
<updated>2019-01-15T01:36:31Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-01-04T00:37:30Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=f74c416e622cec35be95066fb7fcf4c27ac146e9'/>
<id>urn:sha1:f74c416e622cec35be95066fb7fcf4c27ac146e9</id>
<content type='text'>
The flush_cache() function in lib/cache.c ignores its arguments and
flushes the complete data and instruction caches. Use the
invalidate/flush_*cache_range() functions instead to only flush the
requested memory region.

This patch does not change the current behavior of U-Boot, since the
implementation of the invalidate/flush_*cache_range() functions flush
the complete data and instruction caches. It is in preparation for CPUs
with the necessary functionality for flushing a selectable memory range.

Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
<entry>
<title>riscv: move the AX25-specific implementation of flush_dcache_all</title>
<updated>2019-01-15T01:36:31Z</updated>
<author>
<name>Lukas Auer</name>
</author>
<published>2019-01-04T00:37:29Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/bcm63xx/u-boot/commit/?id=c9056653ecd6dfedc5e9f00548f9f1c604a3a193'/>
<id>urn:sha1:c9056653ecd6dfedc5e9f00548f9f1c604a3a193</id>
<content type='text'>
The fence instruction is used to enforce device I/O and memory ordering
constraints in RISC-V. It can not be relied on to directly affect the
data cache on every CPU.
Andes' AX25 does not have a coherence agent. Its fence instruction
flushes the data cache and is used to keep data in the system coherent.
The implementation of flush_dcache_all in lib/cache.c is therefore
specific to the AX25. Move it into the AX25-specific cache.c in
cpu/ax25/.

This also adds a missing new line between flush_dcache_all and
flush_dcache_range in lib/cache.c.

Signed-off-by: Lukas Auer &lt;lukas.auer@aisec.fraunhofer.de&gt;
Reviewed-by: Bin Meng &lt;bmeng.cn@gmail.com&gt;
</content>
</entry>
</feed>
