Age | Commit message (Collapse) | Author | Files | Lines |
|
* If BBL emulates the FPU, the trap handler will load emulated FCSR from
x0's save slot into tp. The emulated FCSR should be initialized, else
the field of rounding mode will contain garbage codes. This will
lead to raising SIGABRT for a user mode program which tries to print a
floating point variable. In glibc, __printf_fp_l() (defined in
riscv-glibc/stdio-common/printf_fp.c) will call round_away() (defined
in riscv-glibc/include/rounding-mode.h). With a garbage rounding mode
in emulated FCSR, round_away() may call abort().
|
|
The E51 core on the U54-MC lacks supervisor mode, thus the plic_s_ie and plic_s_thresh are NULL when running on this core. This adds checks for this case.
|
|
|
|
Otherwise, the emulation code will refuse to emulate FP instructions.
|
|
|
|
The MENTRY_IPI_PENDING_OFFSET offset is based on stack pointer
|
|
Debian toolchain defaults to PIE, and I guess that will also be the case
of most distributions. This cause bbl to be non-functional.
This patch fixes that by adding -fno-PIE in the default CFLAGS.
|
|
Reboot does not work reliably without this.
|
|
* Changed install_subdir to $host_alias with substituted 64->32 instead of hardcoded riscv[32|64]-unknown-elf
* Updated readme to reflect changes in install_subdir.
|
|
Closes #87
|
|
Closes #88
|
|
Otherwise, linux complains the moment an interrupt arrives and
wakes up one of the not-looping cores.
|
|
This makes it more compatible with recent glibc.
|
|
mtrap: loop forever, really
|
|
gcc sometimes takes liberties with optimizing away our important halt function!
|
|
Boot on the first hart
|
|
This code is broken, and it's left over from before we could read the
DTB to find harts to boot on.
|
|
|
|
Add __riscv_flush_icache
|
|
For BBL's purposes a local i-cache flush should be sufficient.
|
|
Add a 16550 UART driver to back the SBI console
|
|
QEMU currently provides the console via HTIF and the SBI. That's a bit
messy because BBL polls for serial input, which means that typing too
quickly loses characters. While QEMU has a standard 16550 device model,
there's no way to have two consoles share the console in QEMU (as they'd
step all over each other) so that means we can't have both the HTIF
console and the 16550 console.
With this patch, QEMU can be changed to use a 16650 instead of the HTIF
for serial output. Linux will use the SBI for early printk support
(which is fine, polling for output is stable) and then swap over as soon
as it detects the UART. When Linux swaps it prints out the whole
history, but there's probably a way to get around that. There's a few
lines that are output to both, but it appears the Linux driver is close
enough to ours that nothing catastrophic happens -- there's not much to
the device, so hopefully that pans out on real hardware too.
Once Linux swaps over to natively using the driver we get reliable
console input. If you don't have the in-kernel driver then Linux never
swaps over and keeps using the SBI console just like before.
|
|
|
|
Fix line endings in the logo
|
|
|
|
Remove the platform interface
|
|
|
|
We now automatically detect everything that the platform interface used
to be used for, so it's now obsolete!
|
|
Detect harts that can't boot Linux instead of hard-coding them
|
|
|
|
Without this I can't get printf to show me debug info during early boot.
|
|
This checks to see if a hart can't boot Linux by looking for a
compatible "mmu-type" field. If the hart can't boot Linux, then bbl
masks it off.
|
|
|
|
Per the Unix-class platform spec
|
|
|
|
|
|
|
|
The DTB argument to boot_other_hart shouldn't be used in BBL
|
|
I screwed up refactoring bbl.
|
|
Add the '--enable-print-device-tree' argument
|
|
I'm trying to debug some device tree problems while booting Linux and
figured it would be really nice to have access to the device tree while
trying to debug these problems. I think this might be useful for lots
of people, so I went ahead and cleaned up the code enough that it should
actaully work in most cases.
|
|
Add a platform interface
|
|
|
|
Since we don't have a coherent platform specification right now, we've
ended up with slightly different platforms between spike and our FPGA
dev kit. For now I've added an autoconf option that allows users to
select the relevant platform.
|
|
Some platforms can't boot Linux on all the harts. This commit allows
platforms to define the set of harts that should be prevented from
booting past BBL. This is essentially just a new mechanism for defining
the DISABLED_HART_MASK.
|
|
|
|
SiFive has a different logo, so let platforms override said logo.
|
|
SiFive's pk fork is the second one I've had to maintain, and it's a huge
pain because people keep just leaving changes all over the tree. I want
to introduce an interface that the platform-specific details can live
behind so I don't have to keep doing these painful merges.
|
|
|
|
We were accidentally advancing the PC by 4, not 2.
|