-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Comparing changes
Open a pull request
base repository: qemu/qemu
base: master
head repository: linumiz/qemu-tricore
compare: release/ifx/tricore-1.0
- 9 commits
- 48 files changed
- 1 contributor
Commits on Apr 17, 2026
-
hw/intc: add TriCore interrupt router
Add the TriCore interrupt router (tricore_ir) device model. This implements the Service Request Node (SRN) based interrupt mechanism used by both TC3x and TC4x SoC families. Each SRN contains a Service Request Control Register (SRC) with priority number (SRPN), service provider (TOS), enable (SRE), request (SRR), and clear (CLRR) fields. The router evaluates all enabled SRNs and drives the highest-priority pending interrupt to the CPU via ICR.PIPN/CCPN comparison. TC3x and TC4x use different SRC register bit layouts, handled via feature-flag dispatch. Originally-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for f7ce37f - Browse repository at this point
Copy the full SHA f7ce37fView commit details -
hw/char: add ASCLIN UART controller for TriCore
Add the ASCLIN (Asynchronous/Synchronous Communication Line) peripheral model for TriCore SoCs. Supports ASC (UART) mode with TX/RX FIFO, interrupt-driven operation, and flag register handling. TC3x and TC4x use different register offset maps and flag register layouts, handled via SoC-type property dispatch. Originally-by: David Brenken <david.brenken@efs-auto.de> Signed-off-by: Bastian Koppelmann <bastian-qemu@tensor.gmbh> Signed-off-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for 1c547f7 - Browse repository at this point
Copy the full SHA 1c547f7View commit details -
hw/timer: add System Timer Module for TriCore
Add the STM (System Timer Module) peripheral model. Implements a free-running 64-bit counter with compare match interrupt generation via CMP0/CMP1 comparators and CMCON mask register. Supports both TC3x and TC4x clock configurations with dynamic frequency update from the SCU/clock subsystem. Originally-by: David Brenken <david.brenken@efs-auto.de> Signed-off-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for c3b6f4c - Browse repository at this point
Copy the full SHA c3b6f4cView commit details -
hw/tricore: add SCU, virt device, and SFR helpers
Add three common TriCore peripheral support devices: - System Control Unit (SCU): clock configuration registers (CCUCONx), reset control, watchdog, and PMCSR power management with CPU idle/ halt support for TC3x. - Paravirtualization device (tricore_virt): provides a simple exit mechanism for test and semihosting use. - SFR helper (tricore_sfr): stub register region for CPU-level special function registers accessed via memory-mapped I/O. Also adds tc_soc.h with common SoC memory layout constants shared across TC27XD, TC39XB, and TC4DX SoC implementations. Originally-by: David Brenken <david.brenken@efs-auto.de> Originally-by: Georg Hofstetter <bastian-qemu@tensor.gmbh> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for d2faaad - Browse repository at this point
Copy the full SHA d2faaadView commit details -
target/tricore: extend CPU models and ISA for TC1.6.2/TC1.8
Extend the TriCore target to support ISA TC1.6.2P (TC3x family) and TC1.8P (TC4x family) instruction sets and CPU models. CPU models and initialization: - Add tc37x, tc39x CPU types for TC3x (ISA 1.6.2) - Add tc4x CPU type for TC4x (ISA 1.8) - Each model sets appropriate feature flags and initial register values (BTV, BIV, ISP, PSW) - Add TRICORE_FEATURE_14/161/162/18 feature flags Instruction decode (translate.c): - Add TC1.8 opcodes: CMPSWAP.W, SWAPMSK.W, CRC32B.W, CRC32L.W, POPCNT.W, SHUFFLE, CLO.B, CLO.H, CLS.B, CLS.H, WAIT, RFH - Add 64-bit division (DIV64/DIV64U) distinguished via n-field - Fix MFCR/MTCR to use TCG globals for ICR and PCXI - Add PCON/DCON CSFR handling with auto-clear PCON1.PCINV - Fix DISABLE instruction to emit tcg_gen_br after helper call Interrupt and trap handling (cpu_helper.c, op_helper.c): - New cpu_helper.c with tricore_cpu_do_interrupt implementing proper PIPN > CCPN priority check - PCXI save uses bitwise OR for ul_mask field - WAIT helper stores pc_succ_insn (not pc_next) and sets pmcsr_sleep_pending flag for deferred halt - ISYNC helper checks pmcsr_sleep_pending for halt entry FPU (fpu_helper.c): - Add double-precision FPU helpers for TC1.8: ADD.D, SUB.D, MUL.D, DIV.D, CMP.D, FTOD, DTOF, DTOI, DTOU, ITOD, UTOD, FTOIZ, DTOLZ, and MADD/MSUB.D variants - Implement packed arithmetic helpers Debug and semihosting: - Add debug-semihosting.c for TriCore semihosting support Originally-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for 76fef2c - Browse repository at this point
Copy the full SHA 76fef2cView commit details -
hw/tricore: add TC4x clock device and CPU SFR wrapper
Add two TC4x-specific support devices: - TC4x clock device (tc4x_clock): models the TC4x clock control unit with PLL0/PLL1/PLL2, CCUCONx divider registers, and clock tree propagation. Accepts an external oscillator (fosc) clock input and derives fSPB, fSTM, fBBB, fCPU frequencies. - TC4x CPU wrapper (tc4x_cpu): encapsulates per-core resources for TC4x SoCs including CPU instance, per-core STM timer, local interrupt router (SRC nodes), and stub MMIO regions for SPROT and CPU SFR address ranges. Originally-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for 8b7c193 - Browse repository at this point
Copy the full SHA 8b7c193View commit details -
hw/tricore: rename tc27x_soc to tc27xd_soc and add tc39xb SoC
Rename the existing tc27x SoC to tc27xd_soc to match the D-Step silicon designation and rework its peripheral wiring to use the new device models (ASCLIN, IR, SCU, STM, virt, SFR). Add tc39xb_soc for the TC397B (B-Step) with 6 CPU cores (only core 0 active in emulation), 3 STM instances, ASCLIN, IR, SCU, and memory regions matching the TC39x memory map (PFLASH at 0x80000000, per-core DSPR/PSPR, LMU). Update triboard.c machine definitions: - KIT_AURIX_TC277_TRB: uses tc27xd_soc - KIT_AURIX_TC397B_TRB: uses tc39xb_soc Originally-by: Andreas Konopik <andreas.konopik@efs-auto.de> Originally-by: David Brenken <david.brenken@efs-auto.de> Signed-off-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for c1c50dc - Browse repository at this point
Copy the full SHA c1c50dcView commit details -
hw/tricore: add tc4dx SoC and KIT_A3G_TC4D7_LITE machine
Add tc4dx_soc for the TC4D7 (TC4x family) with per-core CPU wrappers (tc4x_cpu), TC4x clock subsystem, ASCLIN, IR, and memory regions matching the TC4x address map. Add KIT_A3G_TC4D7_LITE machine definition in triboard.c with 25 MHz external oscillator and ELF kernel loading support. Originally-by: Christoph Seitz <christoph.seitz@infineon.com> Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for 4658631 - Browse repository at this point
Copy the full SHA 4658631View commit details -
ci: add TriCore QEMU build and release workflow
Add GitHub Actions workflow for building TriCore-only QEMU binary and publishing releases. Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
Configuration menu - View commit details
-
Copy full SHA for 9e88819 - Browse repository at this point
Copy the full SHA 9e88819View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff master...release/ifx/tricore-1.0