- Apr 24, 2024
-
-
- Apr 18, 2024
-
-
Andrew Waterman authored
-
Andrew Waterman authored
-
Andrew Waterman authored
-
- Mar 23, 2024
-
-
mylai-mtk authored
* Implement syscall readlinkat * Implement syscall readv by read syscalls Since pk lacks kernel-space dynamic memory management, we implement readv with normal read syscalls rather than forwarding it to spike
-
- Jan 29, 2024
-
-
Andrew Waterman authored
It was originally added as a temporary hack to hide a race condition in a prototype. It should've been removed long ago. Resolves #312
-
- Nov 18, 2023
-
-
valentinThomazic authored
-
- May 17, 2023
-
-
Andrew Waterman authored
This reverts commit 54de960a. See #298 for explanation.
-
- May 03, 2023
-
-
Mark Goncharov authored
There are many issues: 260, 285, 287 has to be solved This workaround helps to add neccessary zicsr and zifencei for cssr and fence.i accordingly.
-
- May 02, 2023
-
-
xukl authored
Linux kernel simply return current brk when request brk addr is not feasible. The pk should probably do the same.
-
- Mar 28, 2023
-
-
Andrew Waterman authored
This reverts commit 7ae86fb9. This will continue to allow accesses to cycle/time via mcycle/mtime despite https://github.com/riscv-software-src/riscv-isa-sim/pull/1297. The hope is this will keep most people happy while doing the right thing with Spike.
-
- Jan 06, 2023
-
-
Kenneth Ostby authored
Regenerated the configure file using autoconf 2.71 to avoid the Syntax error problem when running on OSX/AArch64.
-
- Aug 06, 2022
-
-
Andrew Waterman authored
Fixes #282
-
- May 01, 2022
-
-
MaxXing authored
-
- Apr 21, 2022
-
-
Lucheng Zhang authored
-
- Apr 11, 2022
-
-
Andrew Waterman authored
We previously kernel-panicked because that made it more obvious when a syscall implementation was missing. These days, it's more common that the C library will do something sensible in response to returning -ENOSYS. Favor that approach to avoid frustrating users.
-
- Apr 09, 2022
-
-
Andrew Waterman authored
-
- Feb 18, 2022
-
-
Andrew Waterman authored
The UART drivers all return -1 if no character is present, and so that's what we should do if there's no UART at all. See discussion on https://github.com/riscv-non-isa/riscv-sbi-doc/issues/82
-
- Feb 09, 2022
-
-
Fangrui Song authored
See https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html#Local-Register-Variables "Other than when invoking the Extended asm, the contents of the specified register are not guaranteed." Also revert 90191ad9.
-
- Feb 08, 2022
- Jan 29, 2022
-
-
Andrew Waterman authored
-
Saleem Abdulrasool authored
The memory manager maintains the first free page as the page after the `_end` synthetic emitted by the linker. This value is stored in a translation unit local variable. This value is only ever written to from `init_early_alloc` which is static and only ever invoked from `pk_vm_init`. Furthermore, the value that `first_free_page` is ever set to is computed as a rounding of the _address_ of `_end`. Because the address of the symbol cannot change during execution of a normal program, this is effectively a constant, making the computed value a "constant" which can be re-materialized. Now, with the knowledge that the value is effectively a constant that can be re-materialized and the fact that the value is ever written to at a single position, we can simply re-materialize the value if it was ever changed in `free_page_addr`. This will allow the 8-byte value to be truncated to 1-byte. Now, we can inline `__early_pgalloc_align`, and because the combination of `__early_alloc` and `__early_pgalloc_align` is small, we can inline that again at the two sites locally. This changes the `__augment_page_freelist` to re-materialize the constant when needed for the allocation. The re-materialization however uses a pc-relative addressing, which now computes a different value than expected - the address has become a VA rather than a PA. This results in the address computed by `free_page_addr` (which is the result of the `__early_pgalloc_align`) to be a virtual address after the relocation, which then propagates through `__early_alloc` to the value in `__augment_page_freelist`, which is then consumed by `__page_alloc`, which will treat the now VA as a PA and perform an additional translation to a VA. Mark the value as `volatile` to indicate that the value must be read at all points to thwart the size optimization of the compiler resulting in a mis-compilation resulting in the eventual invalid memory access during the `memset` that follows the allocation. Thanks to @nzmichaelh for the help in tracking this down!
-
- Jan 10, 2022
-
-
Andrew Waterman authored
Eliminate excess reference count when associating fd with file. Fixes #258
-
- Nov 23, 2021
-
-
Andreas Kuster authored
-
- Sep 21, 2021
-
-
Andrew Waterman authored
h/t @jrtc27
-
- Sep 15, 2021
-
-
Andrew Waterman authored
This reverts commit fd2ddce5. The SBI took a different approach (explicit SBI call) to support writing the counters, rather than using traps.
-
- Aug 28, 2021
-
-
Saleem Abdulrasool authored
`SYS_getcwd` is different from `getcwd` in that the return value is < 0 on failure otherwise it is the length of the string. The proxy kernel was treating 0 as success and all other values as error. As a result, we would never return a valid value for `getcwd`. The following program now executes properly with the Proxy Kernel: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <linux/limits.h> int main(int argc, char **argv) { unsigned char buffer[PATH_MAX + 1] = {0}; if (getcwd(buffer, PATH_MAX)) printf("cwd: %s\n", buffer); return EXIT_SUCCESS; } ```
-
- Aug 12, 2021
-
-
Andrew Waterman authored
Resolves #249
-
- Aug 05, 2021
-
-
John Baldwin authored
Also use pointer arithmetic on char * instead of void *.
-
Andrew Waterman authored
This reverts commit 5450c2f7.
-
Andrew Waterman authored
This reverts commit 717702ce.
-
Andrew Waterman authored
This reverts commit 17bec41e.
-
John Baldwin authored
Also use pointer arithmetic on char * instead of void *.
-
Andrew Waterman authored
This reverts commit 0d1fdc2e24b7b6247a55d24c13ae85dca7f45695.
-
John Baldwin authored
clang only supports register variables if they are declared globally.
-
Andrew Waterman authored
This reverts commit e8d15a48.
-
- Jun 17, 2021
-
-
Marcus Comstedt authored
-
- May 18, 2021
-
-
Andrew Waterman authored
-
Andrew Waterman authored
-