Age | Commit message (Collapse) | Author |
|
on various Rockchip SoCs.
This is still WIP. Next steps will be to get rid of various busy-wait loops
and add DMA support.
|
|
control register to enable alignment fault exceptions if the stack
pointer is not correctly aligned when used as a base address in load or
store instructions.
drahn@ pointed out that FreeBSD made this change in svn rev 295270 and
believes we should do the same.
|
|
- keep setbits/clearbits and virtio barriers inside _KERNEL
ok dlg@, kettenis@
|
|
default an require callers of pmap_enter() and require pmap_kenter_pa()
to explicitly request uncached mappings by passing the PMAP_NOCACHE flag
in the low bits of the physical address like we do on other architectures.
ok drahn@, patrick@
|
|
Gigabit Ethernet port on the FireFly-RK3399 actually works!
|
|
this is so drivers can advertise that they can handle 64 dma addresses
to the platform. it may choose to handle dmamaps differently based
on this flag.
tweaks and ok tom@
ok kettenis@
|
|
properties in the /chosen node of the FDT. The properties match the ones
used by Linux (see Documentation/arm/uefi.txt in the Linux kernel source
tree) but with the "linux," prefix replaced by "openbsd,".
ok jmatthew@, tom@
|
|
|
|
ok jsg@
|
|
Broadcom's Vulcan design with a Cavium implementer code
(ThunderX2 T99/CN99xx). Suggested by kettenis@
|
|
only the RK3399 is supported.
|
|
the eMMC controller on the Rockchip RK3399 work.
|
|
ok jsg@, patrick@
|
|
ok patrick@
|
|
ok mpi@, deraadt@
|
|
ok bmercer@, deraadt@
|
|
with the PMAP_CANFAIL flag set. Use PR_NOWAIT in the pool_get() calls such
that we return an error instead of deadlocking if we cannot allocate
a pool item.
ok drahn@ (who says this is needed for SMP as well)
|
|
|
|
of priorities available in secure mode (minimally 32). For non-secure
interrupts we need to make sure the top bit is set and shift our interrupt
priority level into the remaining bits. The priority mask register on the
other hand only exposes the priority levels available to the mode from which
it is accessed. So when accessed from non-secure mode, we need to shift our
interrupt priority level by a different amount.
Also set the binary point register to zero to make sure the maximum number of
available bits are used for the priority group and priority masking actually
works as expected.
This makes the FireFly-RK3399 boot multi-user with the root filesystem on USB.
ok drahn@
|
|
|
|
Using a name with the 'db_' prefix makes it invisible from the dynamic
profiler.
ok deraadt@, kettenis@, visa@
|
|
|
|
RK3399 available to other drivers through the regmap interface.
|
|
ok visa@
|
|
It doesn't compile und hasn't been working during the last decade.
ok kettenis@, deraadt@
|
|
|
|
generic interrupt controller architecture specification v3/4.
The hard work was done by drahn@, I just cleaned it up a bit and fixed
a couple of bugs.
ok patrick@, drahn@
|
|
return from do_el0_sync(). Prevents future mistakes.
|
|
do_el0_sync() or mi_syscall().
|
|
ok kettenis@
|
|
a byte or a half-word is needed. Certain implementations of the Synopsis
Designware copy-and-paste logic blocks don't respond to transactions that
are smaller than a word.
Fixes the serial console on boards with a Rockchip RK3288.
|
|
and identified early on. For the secondary CPUs this happens late, such that
the drivers we need to spin up CPUs, such as psci(4), will be available.
This also fixes some code in simplebus(4) where the return value of
OF_getprop() was not properly checked.
Heavily based on an earlier diff from drahn@.
ok drahn@, jsg@
|
|
of the esr_el1 register for unhandled userland exceptions (and continue to
dump the registers in that case).
Handle breakpoint traps and make sure we call refreshcreds() on userland traps.
ok jsg@
|
|
|
|
long double math stuff (including printf) actually work.
While there remove 'struct ieee_ldouble', which isn't defined on other
architectures.
ok deraadt@
|
|
But those tlb flushes shouldn't be necessary anyway, so simply remove them.
Simplify the tlb flushing code now that we no longer flush ranges, and
revive the branch that doesn't flush a specific ASID for the kernel pmap
since its mappings are global.
ok patrick@, visa@
|
|
|
|
out of kva in the kmem_map. Avoids a hang when spawning a lot of processes.
|
|
in struct mdproc. With that, all archs have those and the __HAVE_MD_TCB
macro can be unifdef'ed as always defined.
ok kettenis@ visa@ jsing@
|
|
ok visa@, deraadt@
|
|
reset the floating-point register state upon exec.
ok guenther@
|
|
interrupt. We already correctly swizzle the pin.
ok patrick@
|
|
interrupts are correctly routed to the boot cpu if that isn't the one
connected to CPU interface zero on the interrupt controller.
ok patrick@
|
|
remove some debug printfs, get rid of STATIC and __inline defines and
remove a bit more unused code.
ok drahn@, visa@
|
|
reason to explicitly flush the cache before invalidating the TLB. The
barrier that is included in out TLB flushing code should be enough to
guarantee that the TLB walking hardware sees the updated page table
contents, so the explicit barriers can go as well. Sanitize the code
immediately surrounding the removed bits while I'm there.
Tested by jsg@, ok drahn@, visa@
|
|
the vfp state via cpacr_el1. This matches the advice given in the
"Synchronization requirements for system registers" section of the ARMv8
ARM.
Without this an overdrive 1000 with A1120 (Cortex A57 r1p2) reliably
triggers "panic: VFP exception in the kernel" when init(8) is run.
ok drahn@ kettenis@
|
|
tables. We need to set them in the final kernel page tables as well.
ok visa@
|
|
timer. virtual timer will always be present where physical timer may
be disabled by hypervisor. Other OSes use virtual timer. ok patrick@
|
|
when a pmap is created and freeing it when the pmap is destroyed. This
diff relies on the fill 16-bit ASID space being implemented in the processor.
While this is documented as an optional feature in the ARMv8 architecture
reference manual, all ARMv8 processors seen in the wild so far implement
the full 16-bit space. This change incorporates changes by drahn@ to
allocate an empty page table for the lower half of the address space for the
kernel.
ok drahn@, patrick@
|
|
containing .text, .rodata and .data/.bss at 2MB boundaries and set the
appropriate access permissions on the block translations.
ok patrick@
|