Jeremy Soller
0c3542ff51
Store funmap data with the context's grants
2021-08-10 20:46:30 -06:00
Jeremy Soller
f94dc3beb8
Allow current process to access its own proc data
2021-08-10 16:33:49 -06:00
4lDO2
1a80351a2c
Fix TLS in paranoid entries.
2021-08-09 14:25:15 +02:00
4lDO2
41d5a2a786
Use naked functions in syscall inst handler too.
2021-08-06 18:08:04 +02:00
4lDO2
d7a1c6255b
Fix possible race condition in paranoid ISRs.
...
Additionally, because it turned out to be infeasible to rely on
link-time constants in global_asm! code, I have also converted the
interrupt handlers to naked fns. This removes the proc-macro-reliant
"paste" dependency, but inserts a tiny ud2 at the end of every ISR.
2021-08-06 17:34:56 +02:00
4lDO2
1047728f35
Only set process regs for faults from ring 3.
...
This fixes a deadlock that might occur if a page fault is triggered
while a lock to the current context is held.
2021-08-06 15:41:38 +02:00
4lDO2
87241a9d3c
Pass AT_PHDR via a grant rather than the stack.
2021-08-01 14:57:41 +02:00
4lDO2
3eedbeb14d
WIP: Let userspace manage fsbase/gsbase and TLS.
2021-08-01 12:09:22 +02:00
4lDO2
0968e4f87e
Support fsgsbase at compile time.
2021-07-31 10:12:59 +02:00
4lDO2
bbe6b4650a
Futex: check for lower-half addrs manually.
2021-07-08 16:08:02 +02:00
4lDO2
9e9d025bb5
Add support for FUTEX_WAIT64.
2021-07-08 13:28:46 +02:00
4lDO2
3e5cf387d5
Use offset_of! in context::arch::switch_to.
...
This is definitely better than hardcoding the offsets!
2021-06-21 10:16:41 +02:00
4lDO2
ecfcedb9bf
Remove explicit .intel_syntax directive.
...
It is now default, and the new compiler generated a lot of warnings now
that Intel syntax has (luckily) become the default.
2021-06-18 09:20:13 +02:00
4lDO2
1cf5f5ea22
Update dependencies to work with latest nightly.
2021-06-17 22:42:54 +02:00
4lDO2
2dc899dc3b
Update paste and align interrupt handlers.
2021-06-17 22:42:50 +02:00
4lDO2
7594dd60d2
Remove compare_and_swap from int_like!.
2021-06-17 22:42:44 +02:00
4lDO2
7d4defa5e5
Use weak CAS and use abort() in context::switch.
...
Previously context::switch used compare_and_swap for acquiring the
global context switch lock, but given its deprecation in more recent
Rust versions, it has been replaced with compare_exchange_weak (which
can be further optimized on some architectures).
It also replaces panic!() with abort() in switch_finish_hook, because
unwinding from assembly is not that fun.
2021-06-17 22:42:38 +02:00
4lDO2
cc6f792a03
Use options(noreturn) in all naked functions.
2021-06-17 22:42:31 +02:00
Jeremy Soller
d3cf4db47b
Prerequisites for risv64 support
2021-05-12 20:23:53 -06:00
Jeremy Soller
0a79c17307
Show meaning of CODE on page fault
2021-05-10 11:34:14 -06:00
Jeremy Soller
8130e4752b
Map TSS using RMM
2021-05-07 09:13:25 -06:00
Jeremy Soller
77f6887fbc
Debug use of memory map and env data
2021-05-07 08:54:36 -06:00
Jeremy Soller
38f7884e21
Improvements for aarch64 serial driver on real hardware
2021-05-06 21:25:15 -06:00
4lDO2
36b3a4a49e
Add KERNEL_PERCPU_PML4 on AArch64.
2021-05-06 21:22:48 +02:00
4lDO2
558109a9cb
Put the KPCRs in high memory, in their own PML4.
...
This also removes the need to do another semi-expensive remap when
cloning processes, since the KPCRs (for kernel TLS) are no longer stored
in the user PML4.
2021-05-06 21:21:37 +02:00
Jeremy Soller
2e38fab913
Do not hardcode aarch64 uart
2021-05-06 13:16:50 -06:00
4lDO2
3eacbdda2a
Remove unnecessary exit() diff.
2021-05-06 19:49:58 +02:00
4lDO2
fd97fa80bb
Move pid back to inner scope in exit() handler.
2021-05-06 19:49:58 +02:00
4lDO2
a771ca699a
Move all DMAR parsing to userspace.
...
We may also want to do this with the MADT and the HPET tables, and let
user drivers specify what the tables mean independent of ACPI. That is,
adding an interface for registering new CPUs, and specifying the main
timer IRQ.
2021-05-06 19:49:58 +02:00
4lDO2
e816d4801f
Remove the empty fadt module.
2021-05-06 19:49:58 +02:00
4lDO2
9b4ce0d0cc
WIP: Fix userspace ACPI shutdown.
2021-05-06 19:49:58 +02:00
4lDO2
b2e131b57b
Fix ACPI scheme fevent warning.
2021-05-06 19:49:58 +02:00
4lDO2
7ac5bdbae0
WIP: Implement userspace-driven shutdown.
2021-05-06 19:49:58 +02:00
4lDO2
64b2dd238a
Rename the kernel ACPI scheme to kernel/acpi:.
2021-05-06 19:49:57 +02:00
4lDO2
bea6747643
Move all AML code to userspace.
...
Currently, there are some things that need to be set up by userspace
that the kernel previously did. These include telling firmware when the
I/O APIC is used, and most importantly, shutting down the system.
The former is not particularly important, but for the latter I think
that we could implement this using a "shutdown pipe". Essentially it
will be a file that triggers an event shutting down, which would be used
to notify to acpid that the kernel is requesting a shutdown.
2021-05-06 19:49:57 +02:00
Jeremy Soller
46a364471c
Re-init aarch64 serial port for interrupts
2021-05-05 20:46:51 -06:00
Jeremy Soller
11a3315255
Re-enable acpi feature and gate it for x86_64 only
2021-05-04 08:33:00 -06:00
Jeremy Soller
3dc08c878f
Fix aarch64 switch_to function
2021-05-04 08:07:44 -06:00
Jeremy Soller
b9a89f2160
More fixes for building aarch64
2021-05-03 22:07:40 -06:00
Jeremy Soller
8f50785781
Fixes for building aarch64
2021-05-03 21:57:45 -06:00
Jeremy Soller
8d61c79b23
Use RMM TableKind and fix x86_64 compilation
2021-05-03 21:15:46 -06:00
Jeremy Soller
2aa4d8caf5
Merge remote-tracking branch 'origin/aarch64-rebase' into riscv64
2021-05-03 20:52:59 -06:00
Jeremy Soller
17c261553b
Fixes for building x86_64
2021-05-03 20:43:18 -06:00
Jeremy Soller
dfdb562e6b
Use RMM PhysicalAddress
2021-05-03 20:33:31 -06:00
Jeremy Soller
9f0532b1d5
Remove unused flags from old EntryFlags
2021-05-03 17:29:55 -06:00
Jeremy Soller
b9448274fc
Switch to using RMM PageFlags
2021-05-03 17:28:08 -06:00
Jeremy Soller
ff8cb8abe8
Enforce must_use
2021-05-03 15:02:32 -06:00
Jeremy Soller
dd0616cc8f
Use RMM for TLB flushing
2021-05-03 12:42:16 -06:00
Jeremy Soller
29460e0bff
Use RMM for some arch-specific paging functions
2021-05-03 12:14:49 -06:00
Jeremy Soller
ad39568fe9
Fix unwrapping stack when there are kernel addresses (and there always are)
2021-05-02 19:53:31 -06:00