summaryrefslogtreecommitdiff
path: root/libcpu
AgeCommit message (Collapse)Author
38 hours[libcpu][risc-v] Fix ticket spinlock stalls under SMP contentionGuEe-GUI
Eight-core boot on SpacemiT K1 could stall with one CPU in the unlock LR/SC loop, two CPUs allocating tickets, and the remaining CPUs waiting for the scheduler lock. Replace LR/SC ticket allocation with amoadd.w.aqrl and release the lock with a halfword owner update. Order critical-section accesses after acquiring ownership and before releasing it. Verified eight-core boot on K1 with temporary diagnostics and reservation-clearing changes removed. Signed-off-by: GuEe-GUI <[email protected]>
5 days[bsp][spacemit/k1] first version #11132GUI
7 days[ARCH/RISC-V] Next RISC-V (#10320)GUI
* [libcpu][risc-v] Refactor the RISC-V architecture port Introduce an opt-in unified RISC-V common layer for RV32 and RV64 while keeping existing BSPs on the legacy implementation during migration. - use ARCH_RISCV and ARCH_CPU_64BIT for architecture and XLEN selection - unify context, trap, MMU, cache, timer, SBI, SMP and ISA handling - add PLIC, CLIC, ACLINT, APLIC and IMSIC support - map physical hart IDs to contiguous logical CPU IDs - add T-Head vendor overrides while preserving legacy ports - migrate qemu-virt64-riscv with RV32 and RV64 support - update clock_time, MM, LWP, OFW, PCI and Rust integration Existing BSPs continue using legacy_common or common64 unless they select RT_USING_RISCV_NEW_COMMON. Signed-off-by: GuEe-GUI <[email protected]> * [libcpu][risc-v] skip disabled CPU nodes in early FDT walk Rbb666 noted that rt_hw_fdt_install_early() walked every /cpus child without checking status, so disabled cores still joined hart registration and MMU capability probing. Skip nodes that are not okay/ok via rt_fdt_device_is_available() before reading reg or mmu-type. Signed-off-by: seteiro <[email protected]> * [libcpu][risc-v] Fix per-CPU page table mapping - reuse existing non-leaf page table entries when mapping per-CPU areas - reject leaf entry conflicts instead of overwriting mappings Signed-off-by: GuEe-GUI <[email protected]> --------- Signed-off-by: GuEe-GUI <[email protected]> Signed-off-by: seteiro <[email protected]> Co-authored-by: seteiro <[email protected]>
10 days[risc-v][vector] Restore vstart after vector configurationPiyush Patle
2026-09-15[libcpu][risc-v]Feat: Add OpenSBI SMP support to t-head c908guanxi.cgh
2026-09-15[libcpu][risc-v]Feat: Add mmu SV48/SV57 mode support and add mmu_demo for C908.guanxi.cgh
2026-09-10[libcpu] Fix RZ/N2L interrupt dispatchCYFS
2026-09-01fix[arm][cortex-m4]: clarify MPU permission expressionswdfk-prog
2026-08-28feat[bsp][xuantie]: c908 support rt-smart #11719BadmintonMaster
2026-08-26[arm][cortex-m4] Add hardware stack guard supporthanzhijian
Enable RT_USING_HW_STACK_GUARD on Cortex-M4, which was previously only available on Cortex-M7 and Cortex-M33. Core porting (libcpu/arm/cortex-m4/): - Add mpu.c/mpu.h/mputype.h aligned with the Cortex-M7 MPU layer. The only difference is the default memory type attribute: Cortex-M4 has no L1 cache, so the cacheability bits are reduced to three cases. - Add rt_hw_stack_guard_init() to cpuport.c. - Add missing #include <rtconfig.h> to context_gcc.S and invoke rt_hw_mpu_table_switch() in the PendSV context switch path. - Update SConscript to exclude mpu.c when memory protection is disabled. BSP reference (bsp/stm32/stm32f407-fk407m2-zgt6/): - board.h: include rtthread.h and define NUM_STATIC_REGIONS. - board.c: define static_regions[] marking the Flash region read-only, guarded by RT_USING_MEM_PROTECTION so it is not enabled by default.
2026-08-21Ensure that c906 uses only the Xuantie MMU propertiesrcitach
2026-08-16[bsp/raspberry-pi] update DM supportGuEe-GUI
- reorganize common Raspberry Pi drivers under the device framework - add the Raspberry Pi 5 BSP, configuration and documentation - add BCM2712 and DesignWare AXI DMA controller support - distinguish BCM2712 DMA32 and DMA40 channels by channel mask - restore DesignWare AXI DMA enable bits after controller reset - support a shared AXI maximum burst length across DMA channels Signed-off-by: GuEe-GUI <[email protected]>
2026-08-14[dm][dma] Update DMA (#11678)GUI
* [dm][dma] update DMA interface Extend DMA mapping to honor OFW dma-ranges even when no reserved memory pool is present, and add PCI host-bridge DMA-region translation for PCI devices. Prefer 32-bit-addressable allocations for translated devices, improve pool allocation fallbacks and synchronization, and establish a linear mapping for installed DMA pools when possible. Signed-off-by: GuEe-GUI <[email protected]> * [dm][dma] fixup PL330 work flow Fix PL330 channel allocation so device-tree cells select peripheral request lines rather than execution channels. Generate proper peripheral DMA microcode using DMAWFP, DMALDP, DMASTP, and DMAFLUSHP, encode burst lengths correctly, honor transfer direction and non-secure attributes, and allocate microcode from DMA-coherent memory. Signed-off-by: GuEe-GUI <[email protected]> * style: format code with clang-format * style: format complete changed files with clang-format * drivers: dma: fix diagnostic format types * style: format DMA changes for current master --------- Signed-off-by: GuEe-GUI <[email protected]>
2026-08-12refactor(pic): dispatch NVIC IRQs through trapsRbb666
2026-08-12fix(dm): route Cortex-M resets through power coreRbb666
2026-08-12feat(dm): support OFW on Cortex-M targetsRbb666
Add the ARM NVIC PIC driver, no-MMU I/O mapping, built-in FDT support, and Cortex-M CPU hooks required by the native RT-Thread device model.
2026-06-26Fix:Always use vmalle1is for kernel aspace; only use aside1is for user ↵run.mao
aspace with non-global PTE.
2026-06-23[libcpu][aarch64] support DVFS idleGuEe-GUI
Signed-off-by: GuEe-GUI <[email protected]>
2026-06-08[bsp][zynqmp-a53-dfzu2eg] enable full dmGuEe-GUI
This is a builtin fdt example BSP Signed-off-by: GuEe-GUI <[email protected]>
2026-06-02fix IAR build error蒙蒙plus
2026-05-19[libcpu][arm][cortex-m33] allows rewrite to interrupt enable/disable api to ↵Evlers
support independent interrupts management
2026-04-08feat(core): Add Cortex-M4 interrupt context helperswdfk-prog
2026-04-07[libcpu][risc-v] Fix PLIC interrupt processing orderFurryAcetylCoA
2026-04-07fix(libcpu): correct arm mpu region validation precedenceAFWEF_147
2026-04-07fix(libcpu): validate ia32 pic irq vectorsAFWEF_147
2026-04-07fix(libcpu): validate arm irq vectors before maskingAFWEF_147
2026-04-03[docs][libcpu][arm][cortex-a] correct TLBIALL comments in start_gcc.Slaidene
2026-03-20feat[bsp][xuantie]: c/r serial cpus support SMP;shuta.lst
2026-03-16feat(core): Add 8-bit and 16-bit atomic operation supportwdfk-prog
2026-03-15[libcpu][cortex-m7]Canonical alignmentwdfk-prog
2026-02-26fix[libcpu][risc-v]:shuta.lst
- Implement _noncache() and _cache() function features; - Correct rt_hw_mmu_setup function for NORMAL_NOCACHE_MEM type property configuration; - Update C908/C906 PTE macro definition configuration;
2026-02-26feat[libcpu][t-head][c908]: Support RISC-V Standard Svpbmt Extension For C908;shuta.lst
2026-02-25[bsp/gd32] fix gd32vw553 bspMuChenger
2026-02-13chore: fix typo in components and libcputheqengineer
2026-01-31[components][clock_time] Refactor time subsystem around clock_time (#11111)Bernard Xiong
* [components][clock_time] Refactor time subsystem around clock_time Introduce the clock_time core with clock source/event separation, high-resolution scheduling, and boot-time helpers, plus clock_timer adapters for timer peripherals. Remove legacy ktime/cputime/hwtimer implementations and migrate arch and BSP time paths to the new subsystem while keeping POSIX time integration functional. Update drivers, Kconfig/SConscript wiring, documentation, and tests; add clock_time overview docs and align naming to clock_boottime/clock_hrtimer/clock_timer. * [components][clock_time] Use BSP-provided clock timer frequency on riscv64 * [risc-v] Use runtime clock timer frequency for tick and delays * [bsp] Add clock timer frequency hooks for riscv64 boards * [bsp] Update Renesas RA driver doc clock_timer link * [bsp] Sync zynqmp-r5-axu4ev rtconfig after config refresh * [bsp][rk3500] Update rk3500 clock configuration * [bsp][hpmicro] Add rt_hw_us_delay hook and update board delays * [bsp][stm32l496-st-nucleo] enable clock_time for hwtimer sample in ci * [bsp][hpmicro] Fix rtconfig include scope for hpm6750evk Move rtconfig.h include outside the ENET_MULTIPLE_PORT guard for hpm6750evk and hpm6750evk2 so configuration macros are available regardless of ENET settings. * [bsp][raspi3] select clock time for systimer * [bsp][hpm5300evk] Trim trailing blank line * [bsp][hpm5301evklite] Trim trailing blank line * [bsp][hpm5e00evk] Trim trailing blank line * [bsp][hpm6200evk] Trim trailing blank line * [bsp][hpm6300evk] Trim trailing blank line * [bsp][hpm6750evk] Trim trailing blank line * [bsp][hpm6750evk2] Trim trailing blank line * [bsp][hpm6750evkmini] Trim trailing blank line * [bsp][hpm6800evk] Trim trailing blank line * [bsp][hpm6e00evk] Trim trailing blank line * [bsp][nxp] switch lpc178x to gcc and remove mcx timer source * [bsp][stm32] fix the CONFIG_RT_USING_CLOCK_TIME issue. * [docs][clock_time] add clock time documentation * [docs][clock_time] Update clock time subsystem documentation - Update device driver index to use correct page reference - Clarify upper layer responsibilities in architecture overview - Update README to describe POSIX/libc, Soft RTC, and device driver usage - Refine architecture diagram with improved layout and color scheme - Remove obsolete clock_timer.md file * [kernel][utest] Trim trailing space * [clock_time] Fix hrtimer wrap handling * [clock_time] fix the static rt_inline issue * [clock_time] fix the rt_clock_hrtimer_control result issue
2026-01-13[libcpu][aarch64] Replace x8 with a callee-saved registerTang Qingmei
2026-01-12[risc-v][common64] Make rt_hw_cpu_shutdown weak to resolve multiple ↵Copilot
definition with RT_USING_DM (#11100) * Initial plan * [risc-v][common64] Make rt_hw_cpu_shutdown weak to fix multiple definition error Co-authored-by: BernardXiong <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: BernardXiong <[email protected]>
2026-01-10[libcpu][arm][cortex-a] Fixup mmu setup earlylaidene
Correct the starting virtual address of _reset alignment to 16MB
2026-01-09Update libcpu/arm/cortex-a/gic.claidene
2026-01-09[docs][libcpu][arm][cortex-a] add comment for gic.claidene
2026-01-04[docs][libcpu][arm][cortex-a] add comment for mmu.h (#11104)caicunjun
* [docs][libcpu][arm][cortex-a] add comment for mmu.h * [docs][libcpu][arm][cortex-a] beautify comment for mmu.h * [docs][libcpu][arm][cortex-a] delete extra space at the end of lines
2025-12-26 [docs][libcpu][arm][cortex-a] update comment for start_gcc.S #11089caicunjun
2025-12-19[libcpu][aarch64] Update for DMGuEe-GUI
1. PSCI port to system power. 2. Support builtin fdt. 3. Update system aspace size. 4. Support DMA memory probe. 5. Fixup not backtrace in Serror for device bus fault. Signed-off-by: GuEe-GUI <[email protected]>
2025-12-11update: [libcpu][risc-v][common] allow overriding isr numbers for MCUFan YANG
- allow overriding the isr numbers via RT_HW_ISR_NUM macro Signed-off-by: Fan YANG <[email protected]>
2025-12-04[libcpu-riscv]: [surpport SMP]: Add SMP support for qemu-virt64-riscvTm-C-mT
1.Add the necessary function declarations for SMP enablement and implement the corresponding functionalities, including rt_hw_secondary_cpu_up, secondary_cpu_entry, rt_hw_local_irq_disable, rt_hw_local_irq_enable, rt_hw_secondary_cpu_idle_exec, rt_hw_spin_lock_init, rt_hw_spin_lock, rt_hw_spin_unlock, rt_hw_ipi_send, rt_hw_interrupt_set_priority, rt_hw_interrupt_get_priority, rt_hw_ipi_init, rt_hw_ipi_handler_install, and rt_hw_ipi_handler. 2.In the two functions (rt_hw_context_switch_to and rt_hw_context_switch) in context_gcc.S, add a call to rt_cpus_lock_status_restore to update the scheduler information. 3.If the MMU is enabled, use the .percpu section and record different hartids by configuring special page tables; if the MMU is not enabled, record them directly in the satp register. Additionally, add dynamic startup based on core configuration.The .percpu section is only used when both ARCH_MM_MMU and RT_USING_SMP are enabled. However, there is a certain amount of space waste since no macro guard is added for it in the link script currently. 4.The physical memory of QEMU started in CI is 128MB, so RT_HW_PAGE_END is modified from the original +256MB to +128MB. Modify the SConscript file under the common64 directory to include common/atomic_riscv.c in the compilation process. Signed-off-by: Mengchen Teng <[email protected]>
2025-11-16Reorganize Group names in build system for clarity and IDE integration #10923Copilot
2025-11-12[libcpu][cortex-a] Refactor FPU stack initialization for maintainability ↵Copilot
(#10919) * Initial plan * [libcpu][cortex-a] Improve FPU stack initialization implementation Co-authored-by: BernardXiong <[email protected]> * [libcpu][cortex-a] Replace FPU init loop with rt_memset Co-authored-by: BernardXiong <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: BernardXiong <[email protected]>
2025-11-07[Components] Remove vbus component and realview-a8-vmm libcpu (#10863)Copilot
* Initial plan * Remove vbus component and related code Co-authored-by: BernardXiong <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: BernardXiong <[email protected]>
2025-11-02[libcpu/arm/cortex-m33]: Fix incorrect CPU architecture in GCC context switchYucai Liu
The context_gcc.S file was incorrectly marked as cortex-m4 in both the doxygen comment and .cpu directive, while the IAR and KEIL versions correctly specify cortex-m33. This file uses ARMv8-M specific features (PSPLIM register, TrustZone support) that are not available in Cortex-M4. Changes: - Update doxygen group from cortex-m4 to cortex-m33 - Change .cpu directive from cortex-m4 to cortex-m33
2025-10-23aarch64: document the CNTFRQ_EL0Yonggang Luo
Signed-off-by: Yonggang Luo <[email protected]>