This commit makes bbl read some additional fields from
the device tree if it detects an ns16550a:
- reg-shift
- reg-offset
- clock-frequency
For explanation of these check out the Linux Kernel doc:
https://www.kernel.org/doc/Documentation/devicetree/bindings/serial/8250.txt
In particular this allows the Xilinx AXI UART 16550 to act
as serial console with bbl and the Linux early boot console.
This also fixes a bug in which bbl will ignore any other than the first
"compatible" string when iterating over the nodes.
Previously this line would not have worked:
compatible = "xlnx,xps-uart16550-2.00.a", "ns16550a";
Before bbl would have just checked the first field instead of checking
all strings in the list.
With -ftree-loop-distribute-patterns, GCC detects that the body of memset
is equivalent to memset, and so turns it into a call to memset, causing
infinite recursion.
Closes#170.
For systems where physical memory is mapped to a start address
different from 0x80000000, allow the default to be overridden
using the --with-mem-start argument to the configure script.
Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
On 64-bit Rocket with 'DefaultFPGAConfig' (using 'WithNSmallCores'),
the 'U' extension is not supported, and accessing 'mcounteren' would
trigger an 'Illegal Instruction' trap.
Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
configure script does not support --enable-32bit option since June 2018
(commit c3cf29a8f2). The right step
to enable 32-bit support in pk is to provide '--with-arch=rv32i' option to
configure.
bbl.bin is necessary for booting on hardware and is created by
a simple objcopy line. It's much more convienent for riscv-pk to
create this file then to expect the user to know to do it or
to dig through the SDK's makefile to learn that it's required.
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
The riscv compiler available in Ubuntu enables stack protection and
FORTIFY source by default which breaks the build. Adding
-fno-stack-protector and -U_FORTIFY_SOURCE to the tool flags
fixes this without any side effects.
The compiler available in debian do not have these protections enabled
and work with or without the extra flag.
Fixes: #105
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
The number of interrupt enable words should be the number of devices
divided by the number of bits per word (not the number of bytes per
word) and it should round up.
Without this fix, when using a larger number of interrupts,
the user will see a number of errors in qemu of the form:
plic: invalid register write: %08x
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
A portend from git-submodule:
$ git submodule update --init --recursive
fatal: No url found for submodule path 'softfloat/berkeley-softfloat-3' in .gitmodules
For now, we always compile files with -mabi option by using
soft-fp ABI. But there are some files use the header which in
toolchain, like unistd.h, stdint.h and so on. Finally, these
header files include other header files which existing depend
on ABI such as stubs-lp64.h or stubs-lp64d.h. So it causes the
header file not found when using the double-float toolchain with
soft-float ABI.
Fix up by compiling files with -march and -mabi options only if
there is specifying the --with-arch option at configure time.
If use the --with-arch option at configure time, that means your
toolchain has multi-lib support, so always building riscv-pk
by soft-float ABI is fine. Otherwise, we don't compile files with
specifying march and mabi options explicitly