summaryrefslogtreecommitdiff
path: root/sys/src/9/zynq/devarch.c
AgeCommit message (Collapse)Author
2023-05-11zynq: fix plcopy() source pointer incrementcinap_lenrek
2019-08-26kernel: expose no execute bit to portable mmu code as SG_NOEXEC / PTENOEXEC, ↵cinap_lenrek
add PTECACHED bits a portable SG_NOEXEC segment attribute was added to allow non-executable (physical) segments. which will set the PTENOEXEC bits for putmmu(). in the future, this can be used to make non-executable stack / bss segments. the SG_DEVICE attribute was added to distinguish between mmio regions and uncached memory. only matterns on arm64. on arm, theres the issue that PTEUNCACHED would have no bits set when using the hardware bit definitions. this is the reason bcm, kw, teg2 and omap kernels use arteficial PTE constants. on zynq, the XN bit was used as a hack to give PTEUNCACHED a non-zero value and when the bit is clear then cache attributes where added to the pte. to fix this, PTECACHED constant was added. the portable mmu code in fault.c will now explicitely set PTECACHED bits for cached memory and PTEUNCACHED for uncached memory. that way the hardware bit definitions can be used everywhere.
2016-03-29zynq: cleanup devarch, flushmmu() after procflushpsecg()cinap_lenrek
2016-03-27zynq: introduce SG_FAULT to prevent access to AXI segment while PL is not readycinap_lenrek
access to the axi segment hangs the machine when the fpga is not programmed yet. to prevent access, we introduce a new SG_FAULT flag, that when set on the Segment.type or Physseg.attr, causes the fault handler to immidiately return with an error (as if the segment would not be mapped). during programming, we temporarily set the SG_FAULT flag on the axi physseg, flush all processes tlb's that have the segment mapped and when programming is done, we clear the flag again.
2015-06-09zynq: add /dev/fbctl to attach framebuffer to devdrawcinap_lenrek
2015-06-07zynq: fix /dev/plcinap_lenrek
prevent double sleep(): callers to sleep() need to be serialized as there can only be one process sleeping at a time. plrlock and plwlock do this. wait for dma to complete in plwrite(): we have to wait for the dma to complete before touching plbuf again. maintain COPEN flag in archopen()/archclose(): when open fails because it was in use, clear the COPEN flag, so archclose() wont screw stuff up.
2014-12-24added zynq kernelaiju