Commit Graph

1052 Commits

Author SHA1 Message Date
Robin Randhawa 4dbfaf3ec1 Nit: Add missing close brace in code comment 2021-01-27 17:19:37 +00:00
Robin Randhawa 1462fe8638 aarch64: context: Align with x86_64 code 2021-01-27 17:17:59 +00:00
Robin Randhawa 3afa0f0895 aarch64: Basic Floating-point/SIMD support 2021-01-27 17:17:11 +00:00
Robin Randhawa 00723c4ac2 aarch64: Make IRQs use the exception macros 2021-01-26 19:37:23 +00:00
Jeremy Soller 9621c64991 Update syscall 2021-01-26 11:46:09 -07:00
Jeremy Soller 81c33a3f6a Merge branch 'aarch64-base' into 'aarch64-rebase'
Misc exception handling fixups

See merge request redox-os/kernel!163
2021-01-26 18:41:53 +00:00
Robin Randhawa 28dfc0f46b aarch64: Basic exception handlers 2021-01-26 18:18:19 +00:00
Robin Randhawa 4a215c7c2c aarch64: exception management and clone fixups 2021-01-26 18:17:09 +00:00
Jeremy Soller fa62b48285 Merge branch 'fixes-for-grant-maps-and-others' into 'aarch64-rebase'
Fixes for grant maps and others

See merge request redox-os/kernel!162
2021-01-22 15:15:08 +00:00
Robin Randhawa 78d1cd1798 syscall: process: empty: Use user-space specific page table 2021-01-21 11:53:35 +00:00
Robin Randhawa 6cacbb47f6 scheme: user: Use user-space specific pagt table 2021-01-21 11:53:07 +00:00
Robin Randhawa 591775874b ptrace: with_context_memory: use user-space specific page table 2021-01-21 11:50:56 +00:00
Robin Randhawa 65448c2d48 aarch64: context: memory: Grant::map_inactive: Bugfix
When mapping one (from) virtual address range to another (to) virtual
address range, be mindful of which mapper type to use for each range.

Before this, the same mapper type was used for both ranges. This meant
that if from and to were different (as in not both kernel virtual
addresses or user virtual addresses) then it would appear that either
from or to was not mapped previously and the kernel would panic.
2021-01-21 11:41:26 +00:00
Robin Randhawa 75870a655f aarch64: context: Add separate kspace and uspace page table getters 2021-01-21 11:40:02 +00:00
Robin Randhawa 3da345867a aarch64: paging: Derive Debug, PartialEq for VirtualAddressType
This makes asserts on VirtualAddressType equality possible.
2021-01-21 11:38:46 +00:00
Robin Randhawa 452196b81f aarch64: consts: Use the same USER_TLS_SIZE as x86_64 2021-01-21 11:37:32 +00:00
Jeremy Soller d76298b3f8 Merge branch 'wip-clone-and-misc-fixes' into 'aarch64-rebase'
Wip clone and misc fixes

See merge request redox-os/kernel!161
2021-01-18 23:00:00 +00:00
Robin Randhawa f1db56f026 aarch64: clone: Further uspace and kspace mods 2021-01-18 21:55:42 +00:00
Robin Randhawa 9429032cec aarch64: clone: Further clone_ret + tpidr_el0 fixes 2021-01-18 21:53:04 +00:00
Robin Randhawa fd0336692d aarch64: clone: Introduce kernel and user space specific mods
At present these are done 'wholesale' without any regard for x86_64.
That needs to change eventually.
2021-01-18 21:50:19 +00:00
Robin Randhawa c188a60871 aarch64: Fix clone_ret
FIXME: Explain the magic numbers here later.
2021-01-18 21:47:28 +00:00
Robin Randhawa 95bd8f2013 clone: Make stack manipulation arch specific 2021-01-17 10:26:49 +00:00
Robin Randhawa ae0aebd036 aarch64: clone: Return from clone syscall
No CLONE_STACK functionality yet.
2021-01-17 10:12:42 +00:00
Robin Randhawa 67ec6c23e7 aarch64: Move tpidr_el0 setup from spawn to switch 2021-01-17 10:09:03 +00:00
Robin Randhawa 67d72532a9 aarch64: usermode: Remove tpidr_el0 manipulation
Was using the incorrect USER_TLS_OFFSET instead of USER_TCB_OFFSET. In
any case, this is better done in process::clone.
2021-01-17 10:06:04 +00:00
Robin Randhawa 3585f620b0 aarch64: clone: Fix incorrect stack offset in clone_ret 2021-01-17 10:03:50 +00:00
Robin Randhawa 208fb681f4 aarch64: vectors: Manage unhandled exceptions
So we can more clearly see when things go wrong.
2021-01-17 10:01:34 +00:00
Jeremy Soller 17fd135017 Merge branch 'pagetabletype-and-misc-fixes' into 'aarch64-rebase'
Pagetabletype and misc fixes

See merge request redox-os/kernel!158
2021-01-15 19:50:13 +00:00
Jeremy Soller e124fa171b Merge branch 'misc-fixes' into 'aarch64-rebase'
Misc fixes

See merge request redox-os/kernel!160
2021-01-15 19:43:23 +00:00
Robin Randhawa 5bc9dea242 aarch64: context::switch: update the CONTEXT_SWITCH_LOCK 2021-01-15 19:03:42 +00:00
Robin Randhawa 6677cfbf1e aarch64: Make interrupt::pause use nop so we can move ahead before interrupts are enabled 2021-01-15 19:02:43 +00:00
Robin Randhawa 825bc4a02d aarch64: spawn: split out arch specific mods 2021-01-15 09:12:30 -07:00
Robin Randhawa 14d79927af aarch64: Add a set_tcb method to setup tpidr_el0 2021-01-15 09:12:30 -07:00
Robin Randhawa ae3a55f5d1 Introduce a PageTableType enum to help distinguish User and Kernel Tables 2021-01-15 09:12:30 -07:00
Robin Randhawa 76129ddf75 aarch64: Mirror PRESENT and VALID bits in Page and Table descriptors 2021-01-15 15:54:25 +00:00
Robin Randhawa c5e077546a aarch64: spawn: split out arch specific mods 2021-01-15 15:51:47 +00:00
Robin Randhawa e0a7471cf8 aarch64: Add a set_tcb method to setup tpidr_el0 2021-01-15 15:50:00 +00:00
Robin Randhawa 9c3f6e3660 Introduce a PageTableType enum to help distinguish User and Kernel Tables 2021-01-15 15:49:04 +00:00
Jeremy Soller bdea7f553a Remove PRESENT flag from aarch64 descriptors 2021-01-15 06:57:02 -07:00
Jeremy Soller 5f8b004476 Fix typo in InterruptStack parameter 2021-01-15 06:56:36 -07:00
Robin Randhawa 252ec24905 aarch64: Use target-feature for NEON insn suppression and tpidr_el1 use 2021-01-15 06:09:42 -07:00
Robin Randhawa aa3839605f aarch64: Remove code-model from the JSON spec
We use a target-feature for this now.
2021-01-15 06:09:42 -07:00
Robin Randhawa ea21fba3aa build.rs: aarch64: Specify target for cc::Build
Oddly, not specifying this or using aarch64-unknown-none (which would be
the default that cc gets from the TARGET environment variable) both
fail to invoke the appropriate compiler to build the asm code.

Using aarch64-unknown-redox works but shouldn't really be needed. This
is perhaps because of some odd arrangement of KTARGET, TARGET, the
installed prefix toolchain and the kernel target JSON spec.

The early_init asm code shall be replaced by a pure Rust bootloader
eventually so let's move with this for the moment.
2021-01-15 06:09:42 -07:00
Robin Randhawa 02c37d3fae WIP: aarch64 rebase 2021-01-15 05:54:42 -07:00
Jeremy Soller 5e10feeaeb Fix whitespace in linker file 2021-01-12 19:59:05 -07:00
Jeremy Soller 6c4c19a95c Move consts to arch 2021-01-12 19:57:42 -07:00
Jeremy Soller ed55b49093 Update aarch64 target to new Rust 2021-01-12 19:57:07 -07:00
Jeremy Soller ea6b1e7f8b Update redox_syscall to 0.2.4 2021-01-11 07:01:05 -07:00
Jeremy Soller 334584b3d5 Use rmm::PhysicalAddress and rmm::VirtualAddress directly 2021-01-09 21:16:11 -07:00
Jeremy Soller ccddabadf7 Make x86 specific dependencies, x86 specific 2021-01-09 20:12:59 -07:00