32 Commits
Author SHA1 Message Date
milek7 04ac3d9687 arm64: Implement arch_cpu_sync_icache
Change-Id: I9df1e272971e1a3fd34297f24c6dd7b3d247c190
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7522
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2024-03-13 18:06:18 +00:00
milek7 490d2ed427 arm64: Remove arch_cpu_memory_read/write_barrier functions as they are not used anywhere
Change-Id: I48af0ea175b32f86ed7cbceb079fa3866e8882ac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7521
Reviewed-by: David Karoly <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
2024-03-12 20:45:00 +00:00
milek7 93c6a62bee arm64: Reset state in _fp_save to prevent it from affecting kernel
Change-Id: I5ef64eefc05735bd38314415f644f0124aaf607b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7520
Reviewed-by: Fredrik Holmqvist <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
2024-03-12 20:44:43 +00:00
milek7 6034ee94a2 arm64: Use WFI for idling
Change-Id: I00f17c1db7c032879da59d17c67c13c24e0b9ef8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7519
Reviewed-by: Fredrik Holmqvist <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
2024-03-12 20:44:21 +00:00
milek7 6f1b41351e acpi: Fix ACPI_FLEX_ARRAY in acgcc.h
acgcc.h defines ACPI_FLEX_ARRAY as struct containing empty struct
and flexible array member. This leads to unintended consequences when
it is compiled as C++ code, because empty struct in C++ is not zero-sized.
This breaks querying interrupt numbers in acpi_irq_routing_table.cpp.
Apply fix from upstream: https://github.com/acpica/acpica/commit/bce7c55e99a0b0db22542c2ed0aeff5571d597cb

Change-Id: I8cadbacd564660b0fad9addd2ce58f39c6f45ac2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7516
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2024-03-11 19:09:37 +00:00
milek7 cd806508a8 acpi: Use device node when resolving routing table link devices, because it could be relative path.
Change-Id: I2f0d3e5e8af27f5f42913d0cda23ad38437c5ed3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7515
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2024-03-11 19:09:37 +00:00
milek7 357ab76ef2 acpi: Fix cleanup at initialization failure.
Aside from leaking resources it caused a race that could segfault
DPC thread when its stack was unmapped.

Change-Id: If6943e7fd834cac8f9807b85ecbb77e227f47a94
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7512
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2024-03-11 19:09:37 +00:00
milek7 51edf9322c arm64: Save/restore TPIDR_EL0 in _arch_context_swap
It's not used for anything by the OS but userspace might want
to use it for its own purposes.

Change-Id: Icda4bcd6de9d68596555e81293c8bd075f80a2a4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7511
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2024-03-07 15:53:37 +00:00
milek7 06fae14eb9 arm64: Save/restore FPU state when handling IRQ or syscall
Change-Id: I8b2a36d57f410c0d06ca5ce90d1b997494072c94
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7510
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2024-03-07 13:28:27 +00:00
milek7 b6fd30b0ed arm64: Declare exception handlers as STATIC_FUNCTION
Branch inside exception vector slot is emitted through PLT veneer,
which clobbers x16 and x17.

Making the function static removes the veneer, and fixes the problem.

Change-Id: If8810999675b6e36926be9806e23a78b7e5c0f10
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7509
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2024-03-07 13:27:30 +00:00
milek7 22cfe80c83 arm64: Use ACPI for PCI interrupt routing.
Change-Id: I4bf578aacda1be44cf5b8f95681a57ab5eabda23
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5278
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
2022-08-17 19:23:51 +00:00
milek7 6bef283b50 arm64: Discover PCI from ACPI.
Change-Id: I2e40c8a531f319cce25363ab83d4d0fe9f8702d2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5274
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
2022-08-17 19:23:51 +00:00
milek7 fe2bcea730 Move irq_routing_table from x86 to generic.
There is nothing really x86-specific there, other platforms use
ACPI interrupt routing for PCI too.

Change-Id: Ib02e2917902a161c3d79a1049bcd16ba40bb7814
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5277
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
2022-07-26 16:17:55 +00:00
milek7 1eeb7213db kernel/arm64: reuse existing GICv2 driver
Change-Id: I68d6978d1f4c3bf8d5d53674f794948a9771729b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5276
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2022-07-25 07:02:24 +00:00
milek7 81e0d2d4c2 arm64: Discover GICv2 from ACPI.
Change-Id: I89f2968a756d767f3a88c002292696a725a00918
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5275
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2022-07-24 07:56:07 +00:00
milek7 17f0f4b68f arm64: Discover UART device from ACPI.
Change-Id: I4e97b05dcfcaf6abddff81fbbf676c38fe337775
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5271
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2022-07-24 07:56:07 +00:00
milek7 ea698ddcbc arm64: Use architectural system timer.
Change-Id: Ia31a66b2860b8b4d47583ac55053ff3aea8bb2ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5279
Reviewed-by: John Scipione <[email protected]>
Reviewed-by: Fredrik Holmqvist <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-07-20 08:29:29 +00:00
milek7 f48e3c0f37 arm64: Wire up ACPI
Change-Id: I62ce53179d0c073680df403434b01b0404c53378
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5270
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-07-17 07:36:53 +00:00
milek7 5be45ee70f arm64: Map discovered UART into kernel space as device memory.
Change-Id: I4af09410c29c5586b85e1e1eba5803c0b30a1b01
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5272
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-07-15 20:14:09 +00:00
milek7 07c6982fa6 arm64: Add userspace entry wiring.
Change-Id: I53ecd2208e1c29271f85396d01c63509705ee840
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5266
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2022-07-14 07:09:02 +00:00
milek7 26a39bed4a PCI: Allow initialization to be deferred.
This is for platforms where information from parsed ACPI namespace
is necessary to fully configure PCI subsystem.

Change-Id: I8bdcfab6b99cbe7fdbc902b9fc13b44133325961
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5273
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2022-07-10 09:46:37 +00:00
milek7 748b488347 ACPI: Make it compile on architectures other than x86.
Change-Id: Ie72dd2c6a571234399dc99d3573a5de19252737e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5269
Reviewed-by: Fredrik Holmqvist <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-31 18:22:22 +00:00
milek7 d5f2742d1f arm64: Preserve FPU registers in setjmp/longjmp and arch_context_swap.
Change-Id: If0ca2ecbfa45b663dab39d1e9cb2562f071c3b27
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5268
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2022-05-29 18:51:32 +00:00
milek7 444980deb1 arm64: Implement setjmp/longjmp.
Change-Id: I9cd2d5de27a3b110b185c658e980428fe49392b0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5267
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2022-05-29 18:51:32 +00:00
milek7 e9d04b25e6 arm64: Add thread exit syscall in commpage.
Change-Id: Ia8e7e4626add623735fefefa1af151b7338adc35
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5265
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-29 18:51:32 +00:00
milek7 d1c3213a6d arm64: Add exception handling, handle pagetables access and dirty flags.
Change-Id: I751d78eb458da16098d236f3829d0c26540fbc17
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5264
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-29 18:51:32 +00:00
milek7 78ea9ffc9b arm64: Implement kernel thread switching.
Change-Id: I87cca66ad89cfa85ba98a9ec828c5e357d7406b2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5263
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-29 18:51:32 +00:00
milek7 088321c119 arm64: Fix typos in arm_registers, add define for nGnRE.
Change-Id: I43aa971f2ead3a171af3c707539cbe08ff60cae5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5262
Reviewed-by: Fredrik Holmqvist <[email protected]>
Reviewed-by: David Karoly <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-19 09:42:42 +00:00
milek7 a25542e7ef arm64: MMU WIP.
Change-Id: I19b2b9617fcb7bc047f9bea156801ec78786532e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5261
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2022-05-19 09:42:42 +00:00
milek7 42c53fc8b8 arm64: Fix ELF relocations.
Change-Id: Icc48649d6a3a8c6b5b5ab845e9025352c1e77dfb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5260
Reviewed-by: waddlesplash <[email protected]>
2022-05-03 20:27:18 +00:00
milek7 8417420441 arm64: Do not misalign kernel stack.
AAPCS64 requires stack to be aligned to 16 bytes.
Additionally alignment might be enforced by hardware for every sp-relative
access depending on configuration in SCTLR.

Change-Id: Idd4756dd19386eb491d926b8a9862fa7fa48e506
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5259
Reviewed-by: waddlesplash <[email protected]>
2022-05-03 20:27:18 +00:00
milek7 7c69ebda17 arm64: Add mapping of all memory in kernel virtual space at KERNEL_PMAP_BASE.
Change-Id: I828b1ba8c0add614e9df6bba1e14c5e514ec1bad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5258
Reviewed-by: waddlesplash <[email protected]>
2022-05-03 20:27:18 +00:00