Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
e119f76
[INST] Add VMAC2H
Sep 28, 2021
0646591
[INST] Add VMAC2HU
Sep 28, 2021
4d42e30
[arcv2/inst] Update accu for VMAC2H(U) instructions
Sep 30, 2021
1da7d6a
[arcv3/MMU] Fix tlb flush command for MMUv6
Oct 6, 2021
7ebdf67
Added renameat syscall to usermode.
Oct 7, 2021
0e2da3a
Added CC check for setlo, seths, setlol and sethsl.
Oct 8, 2021
f702924
Patch to fix stat in usermode.
Oct 11, 2021
f23b86e
Fixes delayslot instrucions in itnerrupt cases.
Oct 11, 2021
fe6f144
Fixed previous patch.
Oct 11, 2021
04e2f42
[ARC/user] Regenerate linux syscalls table
Oct 11, 2021
b045e15
Fixed remaining TCG problem in seths and setlo.
Oct 11, 2021
d23ac81
[ARC] Initialize cpu_er_pstate with stat_er.pstat
Oct 11, 2021
668f137
Improving on the implementation of llock and scond. It is still wrong.
Oct 21, 2021
93ea1bf
Patch to introduce sign-ext brcc instructions.
Oct 21, 2021
7ef2a81
ARC: aux_user_sp is target_ulong
Sep 8, 2021
61d21d7
ARC64: Use virtual address for exception in intvec
Oct 20, 2021
92bab4f
usermode: Fix strace build for old platforms
Aug 19, 2021
db65c65
Refurbish MMU and MPU.
May 12, 2021
18e48c7
Added support to get physical address from mmu.
May 12, 2021
1d1dbf1
Fixed MMU refactor.
Oct 21, 2021
ab517d0
Added MMU refactor to ARCv3.
Oct 21, 2021
ec97fd9
Introduced ARConnect in the context of fixing llock and sccond.
Oct 22, 2021
8846a81
Fixed llock and scond.
Oct 22, 2021
94fee99
Made ex, exl and dmb concurrency compatible.
Nov 9, 2021
349a1c0
Fixed comment.
Nov 9, 2021
b65b58c
Experiments on LLOCK an SCOND.
Nov 9, 2021
8be868b
Implementation of dmach/dmachu.
Oct 25, 2021
5dd3ee1
Committed by mistake.
Nov 16, 2021
f631764
Added missing mappings on vector instructions.
Nov 16, 2021
4626378
Fixed ZOL and perhaps most of non-singlestep problems.
Nov 18, 2021
88bd1e7
Added support for icount.
Nov 23, 2021
1d14f31
icount failed to build for ARCV3. Adding miss include.
Nov 24, 2021
5adf29b
LLOCK and SCOND for ARCV2 missing.
Nov 24, 2021
99ec451
[arc64/gdb] Rename arch to "arc64:64"
Oct 8, 2021
40f9d6e
Fixed DMB for ARCv2.
Nov 24, 2021
5be20d9
First patches for HS5x support.
Dec 6, 2021
6a08053
MMU changes for hs5x integration.
Dec 22, 2021
85ab81e
Lots of changes to code merging both decodes and semantic functions.
Dec 29, 2021
229dc82
To merge to previous commit
Dec 29, 2021
84f80c3
Latest changes.
Dec 30, 2021
802bd5c
Other fixes for hs5x / arcv2
Jan 5, 2022
4f73d9f
Fixed overflow flag of MPY and MPYU
Jan 5, 2022
a671291
Fixed mpy.f instruction for arc64.
Jan 18, 2022
ca361bc
Add support for arc32 linux_user_mode.
Jan 18, 2022
89b4f60
Changes required after rebase to v6.2.0 .
Jan 19, 2022
aefc3c6
Fixed all warnings.
Jan 19, 2022
15727d9
arc32/gdbstub: Add arc32 debugging support
Jan 17, 2022
f56409f
arcXX/gdbstub: Refactor to accommodate ARCv3_32
Jan 18, 2022
a2bfd52
arcXX/cpu: Refactor CPU initializations
Jan 19, 2022
4676d9a
Fix assert when using singlestep.
Jan 20, 2022
89464b4
Forgot to remove the function.
Jan 20, 2022
2b4ce85
Fixed order of operands in MPYU.
Jan 25, 2022
0005c46
Fixed TLS on linux-user hs5x target.
Jan 26, 2022
e592866
Added tests for mpy.f and mpyu.f.
Jan 26, 2022
02d7aea
Oups, pushed something by mistake.
Jan 26, 2022
263f744
Updated decoder tables from binutils.
Jan 31, 2022
d1883d9
Added breql_s and brnel_s to mapping.
Feb 4, 2022
f77f7de
Fixed scondd instruction.
Feb 9, 2022
1412c84
Added support for ARC32 linux booting.
Jan 31, 2022
6ea8cda
Fixed aux register definitions. mpu_build was missing for EM.
Feb 15, 2022
29f240d
Revert icount-related chages in ARC Timers
abrodkin Feb 14, 2022
d5c3ca4
Removed __attribute ((alias)) which is not compatible with MACOS.
Feb 16, 2022
a33040a
Fixed errors on GCC-10.
Feb 16, 2022
39c8ea7
Correct something, dont really know why it is there.
Feb 16, 2022
b9759e0
arc: virt: Add second UART
abrodkin Dec 24, 2021
e657697
Fixed issue related to Zephyr. QEMU issue #66.
Mar 14, 2022
51cc524
Implemented brk instruction.
Mar 17, 2022
71899be
Invalidate soft-mmu when cache invalidation is requested.
Mar 17, 2022
35af7a2
Print name of unimplemented instruction.
Mar 18, 2022
eb48d6a
Renamed some files.
Apr 12, 2022
b54ac97
Incorrectly commited file.
Apr 14, 2022
8dd4b52
Do not place cmdline from U-boot after 1 GiB
VVIsaev Apr 18, 2022
8a7100d
Revert "Fixed issue related to Zephyr. QEMU issue #66."
Apr 4, 2022
556e196
Use SANE implementation of llock/scond
Apr 20, 2022
5cc4545
Fixed type in llockd. Use sane llock/scond semfunc.
Apr 20, 2022
d295b87
Upgrade decoder from binutils.
Apr 21, 2022
441fd35
Fixed issue related to Zephyr. QEMU issue #66.
Apr 26, 2022
3012579
Removed repetition on orl decoder definitions.
May 11, 2022
e154671
Integrated decoder scripts into QEMU build system.
Apr 28, 2022
76c26d3
Changes required due to rebase to v7.0.0 tag from upstream.
May 11, 2022
5869461
[arc32/gdbstub] make some registers 32-bit in size
May 12, 2022
761d03e
Fixed issue with sleep when not using any operand.
Jun 3, 2022
5295d24
Updated decoder for ECO#6. (critical sync with toolchain).
Jun 7, 2022
820101c
Changed to print file name in case of error.
Jun 7, 2022
1806de6
Fixes to previous ECO#6 commit. Temporary so far.
Jun 8, 2022
d0fc5e6
Fixed decoder for ld_s.as instruction.
Jul 8, 2022
f97fc8d
Fixed problem with sbc instruction carry and overflow flags.
Aug 2, 2022
287ca12
arc64 decoder tables as in binutils
Aug 2, 2022
af37e4b
Fixed issue in tables with stl instructions.
Aug 2, 2022
98f51c3
Latest fixes for ECO6 changes. Linux boots.
Aug 2, 2022
41a2aae
Fixed all warnings.
Aug 2, 2022
4197b2e
Latest changes after sync with binutils.
Aug 4, 2022
9d37af4
Fix build, check and clean of tgc tests
May 18, 2022
c65e3f7
Add TCG tests for ARC HS
May 19, 2022
0cff672
Print makefile rules
Jun 3, 2022
9d07b7e
Fix source path for arc64 tests
Jun 7, 2022
8a4a586
Fixed issue with invalid instruction decoding.
Aug 24, 2022
b3cd7f5
Changed v3 decoder to select the first matching instruction, not the …
Sep 2, 2022
0159270
TCG Test for multiarch (DO NOT UPSTREAM)
Sep 12, 2022
f9354ab
Removed ARM like implementation from LLOCK/SCOND in arcv2.
Sep 27, 2022
01d8271
Added support for VPACK instructions
May 26, 2022
b94719a
Added support for VPACK2HL and VPACK2HM
Jun 8, 2022
eae5253
FFS and FFSL corrections for ARC64.
Sep 29, 2022
8fab8cf
Refactor semfunc files
Sep 30, 2022
d36d3b8
arc: Fix ld_s.as wrong behavior
claziss Oct 12, 2022
80a456f
Improve TCG Makefiles for ARC and ARC64
Oct 7, 2022
039996c
Added support for VADD2, VADD2H, VADD4H and VSUB2 instructions
Oct 7, 2022
4df6b13
Added support for VSUB2H and VSUB4H instructions
Oct 7, 2022
3ccb911
Added support for VMAC2H and VMAC2HU instructions
Oct 7, 2022
210f714
Added cpu64_acc definition
Oct 8, 2022
1abcb6f
Changed arc_gen_next_reg function
Oct 8, 2022
ce6cf2f
Changed VADD and VSUB instructions for ARC32
Oct 8, 2022
79c7d5d
Changed VMAC2H instructions for ARC32
Oct 8, 2022
2250ef1
Added support for VADDSUB and VSUBADD instructions
Oct 8, 2022
499561b
Changed VADDSUB and VSUBADD instructions for ARC32
Oct 8, 2022
a13f51d
Fix MAC, MACU, MACD and MACDU instructions on ARC64
Oct 8, 2022
058972c
arc64: Fix sub_s.ne encoding
claziss Oct 18, 2022
2df24a3
arc64: Add mov_s.ne ldh_s.x and sub_s.ne tests
claziss Oct 18, 2022
d74a3e1
arc64: Fix stdl instruction and add more tests
Oct 20, 2022
07e00d5
Fix an address for ISA_CONFIG register
kolerov Nov 17, 2022
9832d0a
[arc64/tst]: Add QMACH tests
Nov 22, 2022
b6bef85
[arc64/tst] Cosmetic changes to check_qmach
Nov 24, 2022
09e15e9
Added signed overflow and set_if_overflow tcg helper functions
BrunoASMauricio Nov 22, 2022
a003dd5
Added vector constant operand helper functions
BrunoASMauricio Nov 22, 2022
29ad285
Added 32 to 64 bit adapter, for 64 bit operation instructions on 32 b…
BrunoASMauricio Nov 22, 2022
e2ce5cf
Added qmach 32 bit test
BrunoASMauricio Nov 22, 2022
03b33e7
Added macros for common default cc flag handling
BrunoASMauricio Nov 22, 2022
6aba9dc
Added qmach instruction
BrunoASMauricio Nov 22, 2022
780a120
Added qmachu tests
BrunoASMauricio Nov 24, 2022
485af59
Added unsigned overflow tcg helper function
BrunoASMauricio Nov 24, 2022
bc04783
Added qmachu instruction
BrunoASMauricio Nov 24, 2022
a6c0372
Added tests for dmacwh
BrunoASMauricio Nov 24, 2022
24282ba
Added dmacwh implementation
BrunoASMauricio Nov 24, 2022
9838914
Added tests for dmacwhu
BrunoASMauricio Nov 24, 2022
161ca57
Added dmacwhu implementation
BrunoASMauricio Nov 24, 2022
ad2030e
Added tests for dmach
BrunoASMauricio Nov 25, 2022
4d7e577
Added dmach implementation. Replaced old 32 bit version with standard…
BrunoASMauricio Nov 25, 2022
6c42b8c
Truncated register values for overflow_add_flag helper function
BrunoASMauricio Nov 30, 2022
1a7ef89
Added 32 bit and 64 bit tests for dmpyh
BrunoASMauricio Nov 25, 2022
a818142
Added dmpyh 32 and 64 bit instruction implementation
BrunoASMauricio Nov 25, 2022
2e65af4
Added tests for dmpyhu
BrunoASMauricio Nov 25, 2022
5c63b5d
Added dmpyhu 32 and 64 bit instruction implementation
BrunoASMauricio Nov 25, 2022
3aaea9d
Added tests for qmpyh
BrunoASMauricio Nov 25, 2022
e20ad4d
Added qmpyh implementation
BrunoASMauricio Nov 28, 2022
1bbca64
Added tests for qmpyhu
BrunoASMauricio Nov 28, 2022
fb362fa
Added qmpyhu implementation
BrunoASMauricio Nov 28, 2022
06e6d75
Added tests for dmpywh
BrunoASMauricio Nov 28, 2022
69ff3a6
Added dmpywh implementation
BrunoASMauricio Nov 28, 2022
96e4246
Added tests for dmpywhu
BrunoASMauricio Nov 28, 2022
45c2c9d
Added dmpywhu implementation
BrunoASMauricio Nov 28, 2022
3bd3465
Added tests for vmpy2h
BrunoASMauricio Nov 29, 2022
2e6e239
Added vmpy2h implementation and updated vector constant operand funct…
BrunoASMauricio Nov 29, 2022
1fd412e
Added tests for vmpy2hu
BrunoASMauricio Nov 29, 2022
ab04fe7
Added vmpy2hu instruction
BrunoASMauricio Nov 29, 2022
67459ab
Added tests for dmachu
BrunoASMauricio Nov 29, 2022
657b039
Added dmachu implementation. Replaced old 32 bit version with standar…
BrunoASMauricio Nov 29, 2022
0c61e2c
Updated 32 bit adapter to account for single 32 bit signed operands t…
BrunoASMauricio Nov 29, 2022
63cab25
Added 16/32/64 bit vector constant operand set and helper macros
BrunoASMauricio Dec 2, 2022
ff6ed84
Temporarily commented exception code and performed minor adaptations …
BrunoASMauricio Dec 2, 2022
2a243c8
Added mpyd/u implementation. Replaced old 32 bit version with standar…
BrunoASMauricio Dec 12, 2022
e743265
Moved vpack2hl and vpack2hm implementations into semfunc.c so they ca…
BrunoASMauricio Dec 22, 2022
8615213
Moved vpack2hl and vpack2hm tests into the appropriate folders
BrunoASMauricio Dec 22, 2022
4d8099a
Fixed vadd/vaddsubb/vsub/vsubadd tests so they assume correct limm du…
BrunoASMauricio Jan 3, 2023
98ec67e
Made vadd/vsub/vaddsub/vsubadd instructions appropriately set vector …
BrunoASMauricio Jan 3, 2023
73ac293
Changed variable initialization scope in macro to prevent warnings fr…
BrunoASMauricio Jan 19, 2023
7b676b4
qemu-binfmt-conf.sh: arc: add binfmt magic
kilobyte Jan 16, 2023
7ea1f0d
qemu-binfmt-conf.sh: arc32/arc64: Added arc64 and arc32 entries to bi…
BrunoASMauricio Jan 24, 2023
8e23dd9
Added new MMU tests and adapted tarc_mmu.ld with necessary MMU page t…
BrunoASMauricio Jan 30, 2023
97a3fd4
CI: Add Github Action to build QEMU
qwersem Jan 27, 2023
eff90d4
Added MMU tests and Linux boot as part of the avocado framework
BrunoASMauricio Jan 31, 2023
6c6659b
As per the specifications, made scond always unset LF and only set Z …
BrunoASMauricio Jan 30, 2023
1e2ea9b
Fixed up SCOND and LOCK variants
BrunoASMauricio Feb 9, 2023
fe89542
Added DIV_REM_OPTION
BrunoASMauricio Feb 9, 2023
01bc571
Added DSYNC stub
BrunoASMauricio Feb 8, 2023
51ac3c5
Added tcg_gen_mb to SYNC instruction
BrunoASMauricio Feb 9, 2023
6a48d74
Added configuration of BCRs for swap, norm and barrel
kolerov Feb 8, 2023
d53b4b3
Fixed configuration of MULTIPLY_BUILD for ARCv2 and ARCv3
kolerov Feb 9, 2023
c1e1d88
Fixed code density field in ISA_CONFIG for ARCv2 and ARCv3 (32-bit)
kolerov Feb 9, 2023
862fc0e
Fixed div/rem field in ISA_CONFIG for ARCv3 (64-bit)
kolerov Feb 13, 2023
8d3708c
Added extra _s decodings
BrunoASMauricio Feb 16, 2023
7f8310c
Fixed VADD2 LIMM not duplicated on ARC
luismgsilva Feb 10, 2023
9fc6ec7
Fixed VSUB2/VSUB2H/VSUB4H LIMM not duplicated on ARCHS
luismgsilva Feb 15, 2023
1ea1623
Rectified the indentation and line lenght limitations.
luismgsilva Feb 16, 2023
f800bb7
[CI] Add pkg-config binary to macOS build environment
qwersem Feb 20, 2023
3264f50
Added tests adapted from issue #58
BrunoASMauricio Feb 28, 2023
ee579ba
Limited hs5x mmuv6_version configuration to v32, 4k page size
BrunoASMauricio Feb 28, 2023
e6c358d
Limited arcv2 (mmu v3) page_size configuration to 13 (8K)
BrunoASMauricio Feb 28, 2023
ca9b349
Merge conflict solved
Jan 23, 2023
7376644
IRQ: Cleaned up magic numbers and fixed loop range
BrunoASMauricio Mar 16, 2023
c3f0152
Add VMIN2 and VMAX2 instructions
luismgsilva Mar 15, 2023
18f6726
helpers: Added helper to fetch non-architecturally visible LF flag in…
BrunoASMauricio Mar 15, 2023
7430a32
TCG: Separated SLEEP instruction from SLEEP functionality
BrunoASMauricio Mar 15, 2023
b94fa0c
TCG: Added function to throw priviledge exception if wait-like insns …
BrunoASMauricio Mar 15, 2023
b1ddc67
tests: Added basic wlfc test
BrunoASMauricio Mar 15, 2023
7ae2ba7
TCG: Added semantic function for WLFC and WEVT
BrunoASMauricio Mar 15, 2023
e41690a
decoder: Added .op/.aq/.rl flag support for atld instructions
BrunoASMauricio Mar 16, 2023
3ba97f7
tests: Added atld/atldl hs6x and atld hs5x TCG single core tests
BrunoASMauricio Mar 20, 2023
0f68e84
TCG: Added ATLD/ATLDL implementations
BrunoASMauricio Mar 20, 2023
ef32456
helpers: Swapped helper level ld/st with ld_ra/st_ra counterparts
BrunoASMauricio Mar 23, 2023
34f9e96
vcpu: Added handlers for user mode SIGSEV and SIGBUS exceptions
BrunoASMauricio Mar 23, 2023
ab8c14a
Encodings: As per the binutils fix below, fixed neg<.f> encoding
BrunoASMauricio May 11, 2023
c0037f0
cpu configs: Remove unused CPU configs
BrunoASMauricio May 12, 2023
c148285
Merge conflict solved
hexchain May 27, 2022
27d4109
HW: Add command line parameter support to virt machine
BrunoASMauricio Apr 17, 2023
8556a07
HW: Add ram_start as a machine option available for virt machine
BrunoASMauricio Apr 19, 2023
643b63f
regs: Enabled ic_ptag_hi reg (0x1f) for ARC32
BrunoASMauricio May 12, 2023
e3dc8fc
aux regs: Add addresses 0xc2 and 0xf60 - 0xfff as 'unimp_bcr'
BrunoASMauricio May 8, 2023
c859d48
HW: Fixed default CPUs for virt and arc-sim
BrunoASMauricio Jun 1, 2023
bca2d77
CPU: Changed default user mode CPU
BrunoASMauricio Jun 20, 2023
a7962a8
Encodings: Updated vmax2/vmin2/bl_s encodings
BrunoASMauricio Jun 16, 2023
1abe004
TCG: Added HS5X vmax2 and vmin2 implementation
BrunoASMauricio Jun 5, 2023
0c0e8eb
Rectify the assert in arc_initializeIRQ()
shahab-vahedi Jun 28, 2023
64aa9ec
Merge conflict solved
pm215 Jun 20, 2023
6d9dc1b
Do not clear DE flag when setting status32
shahab-vahedi Jul 3, 2023
8db7863
trap instruction must continue at BTA, if DE is set
shahab-vahedi Jul 5, 2023
4231bbf
Decoder: Fixed short limm decoding for HS5X
BrunoASMauricio Jul 5, 2023
382a5ab
Encoding: Added brk_s mapping into HALT semfunc
BrunoASMauricio Feb 17, 2023
a78d1ad
Initialization: Set initial values for Lock flag
BrunoASMauricio Jul 3, 2023
5ba50c1
Semi-Hosting: Implement stat and resolve issues.
luismgsilva Jul 6, 2023
6188a0b
Semi-Hosting: Fixed stat buffer conversion issues.
luismgsilva Jul 10, 2023
dbca09b
Semi-Hosting: Implementation of pointers.
luismgsilva Jul 11, 2023
dacdd44
target/arc: Add 'errno' function to semihosting
keith-packard Jul 19, 2023
e676e89
Semihosting: Proper handling of malloc validation
luismgsilva Jul 20, 2023
44686a5
Reimplement the delay slot support
shahab-vahedi May 31, 2023
ea1b258
target: arc: mmu: Flush all CPU's when TLB's are updated
joabreu Jun 19, 2023
0f3829c
Simplify the outgoing arrows from TBs for branches
shahab-vahedi Jul 18, 2023
c462141
Remove assert for ZOL in interrupt routine
shahab-vahedi Jul 19, 2023
03ea6ad
Update the comments for gen_branchi()
shahab-vahedi Jul 19, 2023
73be293
FPU: Implemented FPU instructions for arcv3 (hs6x)
BrunoASMauricio Mar 28, 2023
80d5a24
TCG: Fixed wrong return of semfunc (NORETURN)
BrunoASMauricio Jul 14, 2023
75ada47
Allow serving interrupts after a DISAS_UPDATE
shahab-vahedi Jul 25, 2023
3d65d88
Rewrite "seti" and "clri"
shahab-vahedi Jul 25, 2023
a2d8c8c
target: arc: timer: Misc fixes
joabreu Jul 26, 2023
21e819e
Revert "target: arc: timer: Misc fixes"
shahab-vahedi Aug 2, 2023
d7b0f01
target/arc: remove memory/register access helpers
artemiy-volkov Jul 31, 2023
2dc50c1
target/arc: v2: rewrite translation functions for memory operations
artemiy-volkov Aug 4, 2023
eab2ffe
target/arc: v3: rewrite translation functions for memory operations
artemiy-volkov Aug 4, 2023
cc78dcb
tests/tcg/arc: remove {LD,ST}DL tests
artemiy-volkov Aug 4, 2023
c447aa3
tests/tcg/arc64: enable {LD,ST}DL tests
artemiy-volkov Aug 4, 2023
b9d6d57
target/arc: implement {push,pop}dl_s instructions
artemiy-volkov Jul 25, 2023
df7b25d
tests/tcg/arc64: add tests for {push,pop}dl_s
artemiy-volkov Aug 9, 2023
5e151f6
Decoder: Remove DSP instructions from decoder
BrunoASMauricio Apr 5, 2023
0341622
Feature: Add FPUv2 instructions
BrunoASMauricio Apr 4, 2023
44aee0b
Compatibility fixes to bring QEMU-ARC to v9.x.x
alessandrobertani Jul 31, 2024
b631554
Modified initialization method
alessandrobertani Aug 2, 2024
4f38527
Fixed helper generation
alessandrobertani Aug 2, 2024
003bf33
Implemented missing tgc operation
alessandrobertani Aug 2, 2024
185b34b
Fixed bugs in ARC system mode emulation
alessandrobertani Jan 22, 2025
582052d
Added building and running instructions to README
alessandrobertani Feb 24, 2025
65fca1f
Modified README
alessandrobertani Feb 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
109 changes: 0 additions & 109 deletions .cirrus.yml

This file was deleted.

21 changes: 21 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#
# List of code-formatting clean ups the git blame can ignore
#
# git blame --ignore-revs-file .git-blame-ignore-revs
#
# or
#
# git config blame.ignoreRevsFile .git-blame-ignore-revs
#

# gdbstub: clean-up indents
ad9e4585b3c7425759d3eea697afbca71d2c2082

# e1000e: fix code style
0eadd56bf53ab196a16d492d7dd31c62e1c24c32

# target/riscv: coding style fixes
8c7feddddd9218b407792120bcfda0347ed16205

# replace TABs with spaces
48805df9c22a0700fba4b3b548fafaa21726ca68
87 changes: 87 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: CI

on:
push:
branches:
- "**"
pull_request:
branches: [master]

env:
BUILD_DIR: ${{ github.workspace }}/build

jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
skip_after_successful_duplicate: 'true'

build:
needs: pre_job
if: ${{ needs.pre_job.outputs.should_skip != 'true' }}

name: Build QEMU for ${{ matrix.host.name }}
runs-on: ${{ matrix.host.runner }}

strategy:
fail-fast: false
matrix:
host:
- { name: linux-x86_64, runner: ubuntu-20.04 }
- { name: macos-x86_64, runner: macos-11 }

steps:
- name: Set up build environment (macOS)
if: ${{ runner.os == 'macOS' }}
run: |
brew install \
ninja \
pkg-config
echo "TAR=gtar" >> $GITHUB_ENV
- name: Set up build environment (Linux)
if: ${{ runner.os == 'Linux' }}
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
bison \
flex \
gettext \
help2man \
libncurses5-dev \
libtool-bin \
libtool-doc \
meson \
ninja-build \
tar \
texinfo
- name: Checkout sources
uses: actions/checkout@v3
- run: git fetch --prune --unshallow --tags --force

- name: Build QEMU
run: |
QEMU_TARGETS="arc-softmmu arc64-softmmu"
QEMU_FLAGS=""
# Target linux-user is only available on a Linux host
if [ "${{ matrix.host.name }}" == "linux-x86_64" ]; then
QEMU_TARGETS="${QEMU_TARGETS} arc-linux-user arc64-linux-user"
fi
${{ github.workspace }}/configure \
${QEMU_FLAGS} \
--target-list="${QEMU_TARGETS}" \
--prefix="${{ env.BUILD_DIR }}"
make -j $(nproc)

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: qemu-${{ matrix.host.name }}
path: |
${{ env.BUILD_DIR }}/qemu-*arc*
!${{ env.BUILD_DIR }}/*.p
if: ${{ always() }}
6 changes: 3 additions & 3 deletions .github/workflows/lockdown.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- uses: dessant/repo-lockdown@v2
with:
pull-comment: |
pr-comment: |
Thank you for your interest in the QEMU project.

This repository is a read-only mirror of the project's repostories hosted
Expand All @@ -26,5 +26,5 @@ jobs:
functionality). However, we get a lot of patches, and so we have some
guidelines about contributing on the project website:
https://www.qemu.org/contribute/
lock-pull: true
close-pull: true
lock-pr: true
close-pr: true
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/GNUmakefile
/build/
/.cache/
/.vscode/
*.pyc
.sdk
.stgit-*
.git-submodule-status
.clang-format
.gdb_history
cscope.*
tags
TAGS
Expand Down
136 changes: 136 additions & 0 deletions .gitlab-ci.d/base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@

variables:
# On stable branches this is changed by later rules. Should also
# be overridden per pipeline if running pipelines concurrently
# for different branches in contributor forks.
QEMU_CI_CONTAINER_TAG: latest

# For purposes of CI rules, upstream is the gitlab.com/qemu-project
# namespace. When testing CI, it might be usefult to override this
# to point to a fork repo
QEMU_CI_UPSTREAM: qemu-project

# The order of rules defined here is critically important.
# They are evaluated in order and first match wins.
#
# Thus we group them into a number of stages, ordered from
# most restrictive to least restrictive
#
# For pipelines running for stable "staging-X.Y" branches
# we must override QEMU_CI_CONTAINER_TAG
#
.base_job_template:
variables:
# Each script line from will be in a collapsible section in the job output
# and show the duration of each line.
FF_SCRIPT_SECTIONS: 1
# The project has a fairly fat GIT repo so we try and avoid bringing in things
# we don't need. The --filter options avoid blobs and tree references we aren't going to use
# and we also avoid fetching tags.
GIT_FETCH_EXTRA_FLAGS: --filter=blob:none --filter=tree:0 --no-tags --prune --quiet

interruptible: true

rules:
#############################################################
# Stage 1: exclude scenarios where we definitely don't
# want jobs to run
#############################################################

# Never run jobs upstream on stable branch, staging branch jobs already ran
- if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/'
when: never

# Never run jobs upstream on tags, staging branch jobs already ran
- if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG'
when: never

# Scheduled runs on mainline don't get pipelines except for the special Coverity job
- if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
when: never

# Cirrus jobs can't run unless the creds / target repo are set
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
when: never

# Publishing jobs should only run on the default branch in upstream
- if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
when: never

# Non-publishing jobs should only run on staging branches in upstream
- if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
when: never

# Jobs only intended for forks should always be skipped on upstream
- if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
when: never

# Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
- if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
when: never

# Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
- if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
when: never


#############################################################
# Stage 2: fine tune execution of jobs in specific scenarios
# where the catch all logic is inappropriate
#############################################################

# Optional jobs should not be run unless manually triggered
- if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: manual
allow_failure: true
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG

- if: '$QEMU_JOB_OPTIONAL'
when: manual
allow_failure: true

# Skipped jobs should not be run unless manually triggered
- if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: manual
allow_failure: true
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG

- if: '$QEMU_JOB_SKIPPED'
when: manual
allow_failure: true

# Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
- if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
when: manual
allow_failure: true


#############################################################
# Stage 3: catch all logic applying to any job not matching
# an earlier criteria
#############################################################

# Forks pipeline jobs don't start automatically unless
# QEMU_CI=2 is set
- if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
when: manual

# Upstream pipeline jobs start automatically unless told not to
# by setting QEMU_CI=1
- if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: manual
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG

- if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
when: manual

# Jobs can run if any jobs they depend on were successful
- if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: on_success
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG

- when: on_success
Loading