Commit Graph
52 Commits
Author SHA1 Message Date
Damien Le MoalandAnup Patel a04c46506a makefile: fix clean directive
Add cleaning of compiled device tree files (.dtb files).

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2020-10-10 11:02:23 +05:30
Damien Le MoalandAnup Patel 86d37bbd7d lib: sbi: Fix misaligned trap handling
Compile time checks of __riscv_compressed can only check if OpenSBI is
being compiled using compressed instructions or not. Checking this macro
does not indicate if an instruction that generated a misaligned trap is
a compressed instruction or not.

Since the misaligned trap handling code inspects instructions _C_ bits
to detect compressed instructions, we can remove all static checks on
__riscv_compressed and dissociate hanlding of misaligned traps and
OpenSBI compilation.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2020-03-13 10:02:42 +05:30
Damien Le MoalandAnup Patel 190e3f4bd9 kendryte/k210: remove unused file
Commit 9dfe720579 ("kendryte/k210: remove sysctl code") missed
removing the file sysctl.c. Fix this here.

Fixes: 9dfe720579 ("kendryte/k210: remove sysctl code")
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
2019-09-28 18:15:18 +05:30
Damien Le MoalandAnup Patel 144acef684 README: Update license information
With the Kendryte K210 platform code cleanup, none of the code copied
from Kendryte standalone SDK remains and this platform code is now
entirely licensed under OpenSBI BSD-2-clause license. Update the
README.md and ThirdPartyNotices.md files to reflect this.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2019-09-05 18:52:32 +05:30
Damien Le MoalandAnup Patel 9dfe720579 kendryte/k210: remove sysctl code
Directly implement frequency discovery, making the sysctl code
unnecessary. While at it, Move all macro definitions from platform.c
into platform.h and cleanup that file, removing the need for the
Apache 2.0 license and Canaan Inc copyright.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2019-09-05 18:50:37 +05:30
Damien Le MoalandAnup Patel fca8c3be01 kendryte/k210: Use sifive UART driver
The Kendryte K210 UARTHS is compatible with SiFive UART. So use the
sifive uart driver and remove the k210 uarths platform code.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2019-09-05 18:47:56 +05:30
Damien Le Moal 14dadeab09 kendryte/k210: Fix file headers
Add missing SPDX and copyright information.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-04-03 10:22:57 +09:00
Damien Le Moal bce71a00bd README: Update license information
Add information regarding the Apache License Version 2.0 of some of the
Kendryte/k210 platform files. Also repeat this information in a new
ThirdPartyNotices.md file.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-04-03 10:22:57 +09:00
Damien Le MoalandAnup Patel 01fe779113 docs: improve library usage document
Clarify the libraries descriptions.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-02-08 09:36:06 +05:30
Damien Le MoalandAnup Patel b1b7e49c63 docs: platform guide updates
Clarify platform support description.
Also fix some Typos, grammar and document style.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-02-08 09:36:06 +05:30
Damien Le MoalandAnup Patel 7b3da0ef0d top: README.md updates
Clarify OpenSBI components explanation.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-02-08 09:36:06 +05:30
Damien Le MoalandAnup Patel fba7e7c3ea docs: README.md update
Reformat to fit lines within 80 chars, fix hyperlinks, etc.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel 84cd4b7cd0 docs/platform: Update QEMU platforms documentation
Mostly reformating. Some minor edits.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel ecfd63025d docs/platform: Add top level document file
List supported platforms and point to the platform specific document.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel 560147b264 docs/firmware: Update FW_PAYLOAD documentation
Reformatting, typos, and various corrections.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel fff48ee2bf docs/firmware: Update FW_JUMP documentation
Reformatting, typos, and various corrections.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel 808fe4b82a docs/firmware: Add top level document file
Provide an overview of all supported firmware files and point to each
firmware type documentation file.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel e580b86a41 docs: Contribution guideline update
Explicitely mention that this project adheres to the Developer
Certificate of Origin (DCO) and include this short text.

Also reformat the file to have lines bounded at 80 chars and add some
more details regarding the expected commit message format.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel 36195f52c1 top: Rename LICENSE file to COPYING.BSD
Also make sure that this file contains only the official BSD 2-clause
license text, nothing else.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel 8c25dcbf76 platform: add template platform files
Create commented template files to use as a base for new platforms
support implementation.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-24 18:45:01 +05:30
Damien Le MoalandAnup Patel b5be19f9e5 sbi: Add ecall helpers
Define sbi_ecall_console_puts() using sbi_ecall_console_putchar()
renamed as sbi_ecall_console_putc() and remove the hardcoded version
of the same funtion in the test payload code.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 42283461d3 payload: rename dummy payload to test payload
Use a more neutral term more representative of this payload intent.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 868ad0b0e5 kendryte/k210: Add device tree support
The Kendryte k210 board initial loader does not provide a device tree
for the firmware and subsequent payload. Add the k210.dts device tree
description file to solve this. This file describes only the SoC core
components: CPUs, memory and PLIC.

Automatically compile and add this file to the firmware generated
using the FW_PAYLOAD_FDT_PATH configuration parameter.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 58d9f2983a kendryte/k210: Fix console
Clear console input when intializing it.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 9c4aca4f1b Makefile: Improve readability
Repeating "ifdef CROSS_COMPILE" multiple times does not help with
readability. Simplify by grouping compilation command setup under a
single ifdef statement.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 0df8269477 Makefile: Add support for device tree compilation
Add rules to compile dts files into dtb files using the device tree
compiler (dtc). A platform can specify the DTS file to compile using
the platform-dtb-y variable. The flattened device tree binary file to be
used for building the final polatform firmware can be specified using
the new FW_PAYLOAD_FDT firmware configuration option to point to the
automatically compiled FDT file. Using the existing FW_PAYLOAD_FDT_PATH
configuration option is still possible and will take precedence over
the FW_PAYLOAD_FDT definition.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel f4373731e3 lib: code cleanup
Use commonly accepted styles: newlines after declarations and before
return to make the code more readable.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel 6939d345ab lib: Fix banner
Define the "OpenSBI" logo string as a macro renamed BANNER, since
it is one rather than a logo.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le MoalandAnup Patel ac3041f4e9 build: Introduce FW_PAYLOAD_ALIGN
The firmware payload offset defined by FW_PAYLOAD_OFFSET must
specify a value large enough so the the payload does not overlap
with the base firmware data, bss and text. For platforms without
any strong requirement on the payload address, introduce the
FW_PAYLOAD_ALIGN build parameter to automatically place the payload
right after the base firmware at an address aligned with the defined
value.

Either FW_PAYLOAD_OFFSET or FW_PAYLOAD_ALIGN should be defined by a
platform configuration. If both FW_PAYLOAD_OFFSET and FW_PAYLOAD_ALIGN
are defined by a platform, FW_PAYLOAD_OFFSET has precedence and is
used for building the final firmawre image.

Using FW_PAYLOAD_ALIGN=4096 with the Kendryte platform rather than
the abitrary FW_PAYLOAD_OFFSET=0x10000 value reduces the final
firmware image size by about 20KB.

Add a description of the FW_PAYLOAD_ALIGN configuration parameter in the
fw_payload documentation file as well. And while at it, also fix
various grammar and style issues in that file..

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21 09:58:33 +05:30
Damien Le Moal c37a8508d1 platform: kendryte/k210: Simplify sysctl code
Simplify sysctl.c code to only the used CPU freqency function.
This reduces the size of the final firmware by 4KB.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-03 14:32:25 +09:00
Damien Le Moal 4079df63a7 platform: kendryte/k210: Declare local function static
k210_console_putc() and k210_console_init() are local functions. Declare
them as static.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-03 13:34:32 +09:00
Damien Le Moal da86853a51 Makefile: Fix messages
Instead of printing the generic "<build_directory>" and
"<install_directory>" strings, print the actual paths for the build
and install directories during "make clean" and "make distclean".

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-03 13:27:17 +09:00
Damien Le Moal 23e2c594cc README: Update
Some rewrite with a more formal style.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-25 16:01:27 +09:00
Damien Le Moal fb3cbe6481 Makefile: Fix clean
Clean was doing nothing. Fix it to remove all compiled files, leaving
only dependency files.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-25 16:01:27 +09:00
Damien Le Moal d06dca9bcc Makefile: Rename CROSS_COMPILE to CROSS_COMPILE_PREFIX
Make it clear what this environment variable defines and update
the README.md file to explain that.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-25 15:37:48 +09:00
Damien Le MoalandAnup Patel 27332e63fa Introduce HAS_MFAULTS_DELEGATION feature
Conditionnally delegate page fault exceptions from M mode to S mode
based on the platform features.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 16:32:30 +05:30
Damien Le Moal e1e8f18130 console: protect output with a spinlock
Avoid getting messages from multiple harts mingled into garbage text
with a spinlock serializing calls to sbi_puts() and sbi_printf().

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 18:12:58 +09:00
Damien Le Moal 07ee5f2e32 Kendryte-k210: Remove unnecessary asm functions
Use functions defined in sbi/riscv_asm.h.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 17:20:56 +09:00
Damien Le Moal 5563a03354 Introduce sbi_current_hartid()
Use this helper instead of hardcoding csr_read(mhartid).

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 17:06:59 +09:00
Damien Le Moal 426adf9f60 Cleanup and rename sbi_hart_boot_next()
Cleanup sbi_hart_boot_nexti() code, adding messages for clarity and
rename the function to sbi_hart_switch_mode() to reflect what the
function actually does.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 16:44:53 +09:00
Damien Le Moal 4fb23c49eb Fiw comment typo
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 16:35:33 +09:00
Damien Le Moal 745ae45e65 Update Kendryte k210 support
Booting now.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:12:22 +09:00
Damien Le Moal d403c70fb1 Fix interrupt and exception delegation
When S mode is not supported, simply clear mideleg and medeleg.
Otherwise, set delegation from M-mode to S-mode, removing the page
fault exceptions as those would not happen in M-mode.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:12:22 +09:00
Damien Le Moal 9c183df632 Add a hang message
Make it clear that the end of the FW execution was reached without the
hand being passed to any payload.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:12:22 +09:00
Damien Le Moal 84df181c84 Add a banner
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:09:13 +09:00
Damien Le Moal 8f91d1142e fw: Disable delegation
Also disable interrupts and exceptions delegation when clearing mie and
mip.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:09:13 +09:00
Damien Le Moal 513474cd1b Fix FDT relocation
Or rather, disable it if FW_PAYLOAD_FDT_ADDR is not defined. This
correspond to cases where the underlying FW that loaded and started
opensbi did not provide any FDT. In such case, the platform code will
need to prepare one.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:09:13 +09:00
Damien Le Moal aa68f0252f Refine platform features control
Allow a platform to report its supported features in more details.
The new features defined are:
* SBI_PLATFORM_HAS_PMP
* SBI_PLATFORM_HAS_SCOUNTEREN
* SBI_PLATFORM_HAS_MCOUNTEREN

In addition, define the macro SBI_PLATFORM_DEFAULT_FEATURES as the set
of features that are generally expected to be supported by a Linux
capable platform.

Operations touching the features controlled with these falgs are not
executed if the platform does not set the corresponding feature flags.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-21 15:09:13 +09:00
Damien Le Moal 316e05f248 plat: Add Kendryte k210 initial support
Only compiles for now, completely untested.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-20 14:43:04 +09:00
Damien Le Moal b88b9ee2d1 blob: Fix comments
Add comments to assembler (not trivial to follow).

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-20 14:43:04 +09:00
Damien Le Moal fcfbb30fc3 Added .gitignore
Ignore build and install directories

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-20 14:41:36 +09:00
Damien Le Moal 91fc25f59b blob: Fix comment typos
Various typos fix.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2018-12-19 17:07:25 +09:00