K. Lange
5caf43d90a
kernel: x86-64: copy over unmap improvements from aarch64
2022-03-16 08:39:33 +09:00
K. Lange
00075494e6
kernel: aarch64: initial pass at clearing upper page structures on unmap
...
This still has thread issues, but a lot of other things need to be
redesigned to correct them.
Particularly, we have a lot of callers that use `mmu_get_page` without
acquiring any locks on the page directory, so in a multithreaded process
one core may be trying to acquire pages while another is unmapping. In
the normal sbrk setup, this shouldn't happen, especially with the locks
in userspace around malloc, and it shouldn't happen with shm as we avoid
dealing with shm pages in the unmap right now, but from the raw API we
provide it's possible for a crafted program to run into it.
The whole memory management API really needs a redesign, much of what we
expose comes from toaru32, and still leaks details about page size into
other code that shouldn't care.
2022-03-16 08:19:36 +09:00
K. Lange
58a1b6e999
pthread: Remove magic thread exit; pthread_exit() is just syscall_exit
2022-03-12 18:46:28 +09:00
K. Lange
4bcd1b4b89
aarch64: apply e1000 permission changes
2022-03-07 18:08:54 +09:00
K. Lange
2700849ca2
aarch64: clear instruction cache on new pages when forking
2022-03-07 09:20:19 +09:00
K. Lange
4c2ec1f0a0
kernel: add a temporary 'munmap' sysfunc
2022-03-06 15:58:38 +09:00
K. Lange
49fd67bf2d
kernel: relocate some user virtual addresses
2022-03-06 15:58:08 +09:00
K. Lange
f778967edb
aarch64: disable lock debugging
2022-03-06 15:56:53 +09:00
K. Lange
cd04af0a75
aarch64: remove some debug messages
2022-03-04 22:08:05 +09:00
K. Lange
d932559d79
kernel: ensure we're saving/restoring all process state on signals
2022-03-04 22:04:11 +09:00
K. Lange
63fbbec928
kernel: Don't let things clear frames without holding the frame alloc lock
2022-03-04 22:00:37 +09:00
K. Lange
3852646174
kernel: Restart some signals, fix up suspend to work with new signal management
2022-03-04 18:39:38 +09:00
K. Lange
bbebc7c128
kernel: complete redesign of signal handling
2022-03-04 16:12:16 +09:00
K. Lange
b3f6728339
date: add rudimentary support for setting date/time
2022-02-25 21:16:30 +09:00
K. Lange
7d2beb443b
aarch64: expose dtb as a device file
2022-02-23 20:40:53 +09:00
K. Lange
b29edb0db3
rpi400: mini uart driver
2022-02-23 16:33:30 +09:00
K. Lange
94b86558d3
aarch64: cleanup, fix warnings
2022-02-23 10:27:47 +09:00
K. Lange
c96bae5e78
aarch64: temporary device drivers until modules are ready
2022-02-23 10:24:15 +09:00
K. Lange
5a6648a869
rpi400: try to clean up rpi stuff
2022-02-23 09:49:16 +09:00
K. Lange
814f5210ae
aarch64: cleanup some warnings
2022-02-22 17:30:17 +09:00
K. Lange
6c69d235cf
aarch64: implement a better spinlock
2022-02-22 09:53:55 +09:00
K. Lange
4946a0bf5a
aarch64: reset timer on entry into idle wait
2022-02-22 09:53:30 +09:00
K. Lange
4cc4d9520e
aarch64: force task switch when idle gets wakeup signal
2022-02-22 09:53:04 +09:00
K. Lange
5019c047c5
aarch64: expose aarch64_interrupt_dispatch as a symbol
2022-02-22 09:52:37 +09:00
K. Lange
2543e2ce0c
aarch64: this seems to be necessary or hvf can occasionally throw a fault on syscall return?
2022-02-20 18:12:29 +09:00
K. Lange
59c92182b4
aarch64: save/restore fpu status registers
2022-02-20 18:12:02 +09:00
K. Lange
255b2296fd
aarch64: implement panic halting with sgis
2022-02-20 18:11:24 +09:00
K. Lange
975b388962
rpi400: smp startup
2022-02-18 18:44:23 +09:00
K. Lange
4c13c92180
rpi400: request maximum clock speed at startup
2022-02-16 19:43:25 +09:00
K. Lange
116ee0a803
rpi400: initial platform support
2022-02-16 12:36:03 +09:00
K. Lange
54cd122d3e
aarch64: virtio: be even pickier about cache maintenance
2022-02-13 18:29:57 +09:00
K. Lange
ce4bf5162a
aarch64: mmu: be more paranoid about frame allocation/clearing
2022-02-12 17:50:45 +09:00
K. Lange
1695ca6652
aarch64: traceback: fix incorrect base pointer on manual traceback
2022-02-12 17:50:21 +09:00
K. Lange
595727be1d
aarch64: virtio: make sure irq handler symbols are in our table for debugging
2022-02-12 17:49:58 +09:00
K. Lange
ae28f8f832
aarch64: fixup warning about discarded volatile
2022-02-12 13:49:32 +09:00
K. Lange
33f0204c0a
aarch64: mmu: fix up insufficient locking around mulitlevel page mapping
2022-02-12 13:47:22 +09:00
K. Lange
41bdb25715
aarch64: remove superfluous reload of TTBR1
2022-02-12 13:47:22 +09:00
K. Lange
f6d0206059
aarch64: interrupt mapping improvements, chained interrupt handlers
2022-02-12 13:47:21 +09:00
K. Lange
b95f27dc60
aarch64: Add a tty driver for the pl011 uart
2022-02-11 11:55:36 +09:00
K. Lange
85274e61ad
aarch64: cleanup
2022-02-11 11:54:28 +09:00
K. Lange
8062fdda17
aarch64: fix mmu_first_n_frames since ram moved
2022-02-09 23:14:50 +09:00
K. Lange
a72352d163
aarch64: start work on interrupt dispatch
2022-02-09 21:02:00 +09:00
K. Lange
8c7e6209f4
aarch64: increase inital stack size for kernel startup
2022-02-09 21:01:26 +09:00
K. Lange
b55964e451
aarch64: flip smp mutex after doing init for better startup synchronization
2022-02-09 21:01:09 +09:00
K. Lange
1ed8ba466c
aarch64: Actually reset kernel stack on exec
2022-02-07 12:46:13 +09:00
K. Lange
82090737dd
aarch64: basic kernel tracebacks on el1-el1 fault
2022-02-07 12:38:30 +09:00
K. Lange
9f03252e3a
aarch64: Load kernel symbol table
2022-02-06 21:23:35 +09:00
K. Lange
e1e66bf6cd
aarch64: be more flexible about where the kernel is physically
2022-02-06 21:10:20 +09:00
K. Lange
097662ef3d
x86_64: fix segfault not being delivered due to cow regression
2022-02-06 15:04:21 +09:00
K. Lange
92ae583c5b
aarch64: smp: reorder barriers before enabling MMU
2022-02-03 17:48:51 +09:00