merge
This commit is contained in:
commit
e08af84b06
@ -12,7 +12,7 @@ windows_msys2_task:
|
||||
CIRRUS_SHELL: powershell
|
||||
MSYS: winsymlinks:nativestrict
|
||||
MSYSTEM: MINGW64
|
||||
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2021-04-19/msys2-base-x86_64-20210419.sfx.exe
|
||||
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2022-05-03/msys2-base-x86_64-20220503.sfx.exe
|
||||
MSYS2_FINGERPRINT: 0
|
||||
MSYS2_PACKAGES: "
|
||||
diffutils git grep make pkg-config sed
|
||||
|
72
.gitlab-ci.d/base.yml
Normal file
72
.gitlab-ci.d/base.yml
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
# 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
|
||||
#
|
||||
.base_job_template:
|
||||
rules:
|
||||
#############################################################
|
||||
# Stage 1: exclude scenarios where we definitely don't
|
||||
# want jobs to run
|
||||
#############################################################
|
||||
|
||||
# Cirrus jobs can't run unless the creds / target repo are set
|
||||
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
|
||||
when: never
|
||||
|
||||
# Publishing jobs should only run on the default branch in upstream
|
||||
- if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $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-project" && $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-project"'
|
||||
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-project"'
|
||||
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-project"'
|
||||
when: never
|
||||
|
||||
|
||||
#############################################################
|
||||
# Stage 2: fine tune execution of jobs in specific scenarios
|
||||
# where the catch all logic is inapprorpaite
|
||||
#############################################################
|
||||
|
||||
# Optional jobs should not be run unless manually triggered
|
||||
- if: '$QEMU_JOB_OPTIONAL'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
# Skipped jobs should not be run unless manually triggered
|
||||
- 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-project"'
|
||||
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-project"'
|
||||
when: manual
|
||||
|
||||
# Jobs can run if any jobs they depend on were successfull
|
||||
- when: on_success
|
@ -1,4 +1,5 @@
|
||||
.native_build_job_template:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
before_script:
|
||||
@ -26,7 +27,8 @@
|
||||
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||
fi
|
||||
|
||||
.native_test_job_template:
|
||||
.common_test_job_template:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
script:
|
||||
@ -37,8 +39,18 @@
|
||||
# Avoid recompiling by hiding ninja with NINJA=":"
|
||||
- make NINJA=":" $MAKE_CHECK_ARGS
|
||||
|
||||
.native_test_job_template:
|
||||
extends: .common_test_job_template
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
||||
expire_in: 7 days
|
||||
paths:
|
||||
- build/meson-logs/testlog.txt
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
|
||||
.avocado_test_job_template:
|
||||
extends: .native_test_job_template
|
||||
extends: .common_test_job_template
|
||||
cache:
|
||||
key: "${CI_JOB_NAME}-cache"
|
||||
paths:
|
||||
@ -67,15 +79,5 @@
|
||||
after_script:
|
||||
- cd build
|
||||
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
||||
rules:
|
||||
# Only run these jobs if running on the mainstream namespace,
|
||||
# or if the user set the QEMU_CI_AVOCADO_TESTING variable (either
|
||||
# in its namespace setting or via git-push option, see documentation
|
||||
# in /.gitlab-ci.yml of this repository).
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: on_success
|
||||
- if: '$QEMU_CI_AVOCADO_TESTING'
|
||||
when: on_success
|
||||
# Otherwise, set to manual (the jobs are created but not run).
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
variables:
|
||||
QEMU_JOB_AVOCADO: 1
|
||||
|
@ -42,6 +42,7 @@ build-system-ubuntu:
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
|
||||
--enable-capstone
|
||||
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
|
||||
microblazeel-softmmu mips64el-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
@ -109,7 +110,8 @@ crash-test-debian:
|
||||
IMAGE: debian-amd64
|
||||
script:
|
||||
- cd build
|
||||
- scripts/device-crash-test -q ./qemu-system-i386
|
||||
- make check-venv
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
|
||||
|
||||
build-system-fedora:
|
||||
extends: .native_build_job_template
|
||||
@ -118,7 +120,7 @@ build-system-fedora:
|
||||
variables:
|
||||
IMAGE: fedora
|
||||
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
|
||||
--enable-fdt=system --enable-slirp=system --enable-capstone=system
|
||||
--enable-fdt=system --enable-slirp=system --enable-capstone
|
||||
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
|
||||
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
@ -154,8 +156,9 @@ crash-test-fedora:
|
||||
IMAGE: fedora
|
||||
script:
|
||||
- cd build
|
||||
- scripts/device-crash-test -q ./qemu-system-ppc
|
||||
- scripts/device-crash-test -q ./qemu-system-riscv32
|
||||
- make check-venv
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
||||
|
||||
build-system-centos:
|
||||
extends: .native_build_job_template
|
||||
@ -359,12 +362,11 @@ build-cfi-aarch64:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
- build
|
||||
rules:
|
||||
variables:
|
||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||
# the constrained containers of the shared runners. Thus this is marked as
|
||||
# manual until the situation has been solved.
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
# skipped until the situation has been solved.
|
||||
QEMU_JOB_SKIPPED: 1
|
||||
|
||||
check-cfi-aarch64:
|
||||
extends: .native_test_job_template
|
||||
@ -401,12 +403,11 @@ build-cfi-ppc64-s390x:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
- build
|
||||
rules:
|
||||
variables:
|
||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||
# the constrained containers of the shared runners. Thus this is marked as
|
||||
# manual until the situation has been solved.
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
# skipped until the situation has been solved.
|
||||
QEMU_JOB_SKIPPED: 1
|
||||
|
||||
check-cfi-ppc64-s390x:
|
||||
extends: .native_test_job_template
|
||||
@ -578,6 +579,7 @@ build-without-default-features:
|
||||
MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
|
||||
|
||||
build-libvhost-user:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
|
||||
needs:
|
||||
@ -594,10 +596,13 @@ build-tools-and-docs-debian:
|
||||
extends: .native_build_job_template
|
||||
needs:
|
||||
job: amd64-debian-container
|
||||
# when running on 'master' we use pre-existing container
|
||||
optional: true
|
||||
variables:
|
||||
IMAGE: debian-amd64
|
||||
MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
|
||||
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
||||
QEMU_JOB_PUBLISH: 1
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@ -617,6 +622,7 @@ build-tools-and-docs-debian:
|
||||
# that users can see the results of their commits, regardless
|
||||
# of what topic branch they're currently using
|
||||
pages:
|
||||
extends: .base_job_template
|
||||
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
|
||||
stage: test
|
||||
needs:
|
||||
@ -634,10 +640,5 @@ pages:
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
when: on_success
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: on_success
|
||||
variables:
|
||||
QEMU_JOB_PUBLISH: 1
|
||||
|
@ -11,6 +11,7 @@
|
||||
# special care, because we can't just override it at the GitLab CI job
|
||||
# definition level or we risk breaking it completely.
|
||||
.cirrus_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||
needs: []
|
||||
@ -40,11 +41,8 @@
|
||||
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cat .gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||
rules:
|
||||
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
|
||||
when: never
|
||||
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
||||
variables:
|
||||
QEMU_JOB_CIRRUS: 1
|
||||
|
||||
x64-freebsd-12-build:
|
||||
extends: .cirrus_build_job
|
||||
@ -90,11 +88,11 @@ x64-macos-11-base-build:
|
||||
|
||||
# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
|
||||
.cirrus_kvm_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||
needs: []
|
||||
timeout: 80m
|
||||
allow_failure: true
|
||||
script:
|
||||
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
||||
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
|
||||
@ -105,8 +103,10 @@ x64-macos-11-base-build:
|
||||
<.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cat .gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||
rules:
|
||||
- when: manual
|
||||
variables:
|
||||
QEMU_JOB_CIRRUS: 1
|
||||
QEMU_JOB_OPTIONAL: 1
|
||||
|
||||
|
||||
x86-netbsd:
|
||||
extends: .cirrus_kvm_job
|
||||
|
@ -27,30 +27,26 @@ arm64-debian-cross-container:
|
||||
|
||||
armel-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-armel-cross
|
||||
|
||||
armhf-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-armhf-cross
|
||||
|
||||
# We never want to build hexagon in the CI system and by default we
|
||||
# always want to refer to the master registry where it lives.
|
||||
hexagon-cross-container:
|
||||
extends: .base_job_template
|
||||
image: docker:stable
|
||||
stage: containers
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- when: always
|
||||
variables:
|
||||
NAME: debian-hexagon-cross
|
||||
GIT_DEPTH: 1
|
||||
QEMU_JOB_ONLY_FORKS: 1
|
||||
services:
|
||||
- docker:dind
|
||||
before_script:
|
||||
@ -90,8 +86,7 @@ mips64-debian-cross-container:
|
||||
|
||||
mips64el-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-mips64el-cross
|
||||
|
||||
@ -104,8 +99,7 @@ mips-debian-cross-container:
|
||||
|
||||
mipsel-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-mipsel-cross
|
||||
|
||||
@ -118,14 +112,13 @@ powerpc-test-cross-container:
|
||||
|
||||
ppc64el-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-ppc64el-cross
|
||||
|
||||
riscv64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
# as we are currently based on 'sid/unstable' we may break so...
|
||||
allow_failure: true
|
||||
variables:
|
||||
@ -135,6 +128,7 @@ riscv64-debian-cross-container:
|
||||
riscv64-debian-test-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian11-container']
|
||||
variables:
|
||||
NAME: debian-riscv64-test-cross
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
.container_job_template:
|
||||
extends: .base_job_template
|
||||
image: docker:stable
|
||||
stage: containers
|
||||
services:
|
||||
|
@ -14,16 +14,10 @@ amd64-debian11-container:
|
||||
|
||||
amd64-debian-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-amd64
|
||||
|
||||
amd64-ubuntu1804-container:
|
||||
extends: .container_job_template
|
||||
variables:
|
||||
NAME: ubuntu1804
|
||||
|
||||
amd64-ubuntu2004-container:
|
||||
extends: .container_job_template
|
||||
variables:
|
||||
|
@ -1,4 +1,5 @@
|
||||
.cross_system_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
timeout: 80m
|
||||
@ -24,6 +25,7 @@
|
||||
# KVM), and set extra options (such disabling other accelerators) via the
|
||||
# $EXTRA_CONFIGURE_OPTS variable.
|
||||
.cross_accel_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
timeout: 30m
|
||||
@ -36,6 +38,7 @@
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
|
||||
.cross_user_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
script:
|
||||
|
@ -62,6 +62,8 @@ cross-i386-user:
|
||||
cross-i386-tci:
|
||||
extends: .cross_accel_build_job
|
||||
timeout: 60m
|
||||
needs:
|
||||
job: i386-fedora-cross-container
|
||||
variables:
|
||||
IMAGE: fedora-i386-cross
|
||||
ACCEL: tcg-interpreter
|
||||
|
@ -1,6 +1,6 @@
|
||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||
# setup by the scripts/ci/setup/qemu/build-environment.yml task
|
||||
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
|
||||
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
||||
|
||||
ubuntu-20.04-aarch32-all:
|
||||
needs: []
|
||||
|
@ -1,6 +1,6 @@
|
||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||
# setup by the scripts/ci/setup/qemu/build-environment.yml task
|
||||
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
|
||||
# "Install basic packages to build QEMU on Ubuntu 20.04"
|
||||
|
||||
ubuntu-20.04-aarch64-all-linux-static:
|
||||
needs: []
|
||||
|
@ -2,6 +2,7 @@
|
||||
# https://gitlab.com/qemu-project/qemu/-/pipelines
|
||||
|
||||
include:
|
||||
- local: '/.gitlab-ci.d/base.yml'
|
||||
- local: '/.gitlab-ci.d/stages.yml'
|
||||
- local: '/.gitlab-ci.d/edk2.yml'
|
||||
- local: '/.gitlab-ci.d/opensbi.yml'
|
||||
|
@ -1,32 +1,30 @@
|
||||
check-patch:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
|
||||
needs:
|
||||
job: amd64-centos8-container
|
||||
image: python:3.10-alpine
|
||||
needs: []
|
||||
script:
|
||||
- .gitlab-ci.d/check-patch.py
|
||||
variables:
|
||||
GIT_DEPTH: 1000
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- when: on_success
|
||||
allow_failure: true
|
||||
QEMU_JOB_ONLY_FORKS: 1
|
||||
before_script:
|
||||
- apk -U add git perl
|
||||
allow_failure: true
|
||||
|
||||
check-dco:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
|
||||
needs:
|
||||
job: amd64-centos8-container
|
||||
image: python:3.10-alpine
|
||||
needs: []
|
||||
script: .gitlab-ci.d/check-dco.py
|
||||
variables:
|
||||
GIT_DEPTH: 1000
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
when: never
|
||||
- when: on_success
|
||||
before_script:
|
||||
- apk -U add git
|
||||
|
||||
check-python-pipenv:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||
script:
|
||||
@ -37,6 +35,7 @@ check-python-pipenv:
|
||||
job: python-container
|
||||
|
||||
check-python-tox:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||
script:
|
||||
@ -44,8 +43,6 @@ check-python-tox:
|
||||
variables:
|
||||
GIT_DEPTH: 1
|
||||
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
|
||||
QEMU_JOB_OPTIONAL: 1
|
||||
needs:
|
||||
job: python-container
|
||||
rules:
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
|
@ -1,4 +1,5 @@
|
||||
.shared_msys2_builder:
|
||||
extends: .base_job_template
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
@ -16,7 +17,7 @@
|
||||
}
|
||||
- If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
|
||||
Invoke-WebRequest
|
||||
"https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-base-x86_64-20210725.sfx.exe"
|
||||
"https://github.com/msys2/msys2-installer/releases/download/2022-05-03/msys2-base-x86_64-20220503.sfx.exe"
|
||||
-outfile "msys64\var\cache\msys2.exe"
|
||||
}
|
||||
- msys64\var\cache\msys2.exe -y
|
||||
@ -57,7 +58,7 @@ msys2-64bit:
|
||||
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
||||
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
|
||||
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
|
||||
--enable-capstone=system --without-default-devices'
|
||||
--enable-capstone --without-default-devices'
|
||||
- .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
|
||||
- .\msys64\usr\bin\bash -lc 'make -j2'
|
||||
- .\msys64\usr\bin\bash -lc 'make check'
|
||||
@ -90,7 +91,6 @@ msys2-32bit:
|
||||
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
|
||||
- mkdir output
|
||||
- cd output
|
||||
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu
|
||||
--enable-capstone=system"
|
||||
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu"
|
||||
- ..\msys64\usr\bin\bash -lc 'make -j2'
|
||||
- ..\msys64\usr\bin\bash -lc 'make check'
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -31,9 +31,6 @@
|
||||
[submodule "ui/keycodemapdb"]
|
||||
path = ui/keycodemapdb
|
||||
url = https://gitlab.com/qemu-project/keycodemapdb.git
|
||||
[submodule "capstone"]
|
||||
path = capstone
|
||||
url = https://gitlab.com/qemu-project/capstone.git
|
||||
[submodule "roms/seabios-hppa"]
|
||||
path = roms/seabios-hppa
|
||||
url = https://gitlab.com/qemu-project/seabios-hppa.git
|
||||
|
3
.mailmap
3
.mailmap
@ -62,7 +62,8 @@ Greg Kurz <groug@kaod.org> <gkurz@linux.vnet.ibm.com>
|
||||
Huacai Chen <chenhuacai@kernel.org> <chenhc@lemote.com>
|
||||
Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn>
|
||||
James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
|
||||
Leif Lindholm <leif@nuviainc.com> <leif.lindholm@linaro.org>
|
||||
Leif Lindholm <quic_llindhol@quicinc.com> <leif.lindholm@linaro.org>
|
||||
Leif Lindholm <quic_llindhol@quicinc.com> <leif@nuviainc.com>
|
||||
Radoslaw Biernacki <rad@semihalf.com> <radoslaw.biernacki@linaro.org>
|
||||
Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
|
||||
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
|
||||
|
@ -22,15 +22,12 @@ config TPM
|
||||
|
||||
config VHOST_USER
|
||||
bool
|
||||
select VHOST
|
||||
|
||||
config VHOST_VDPA
|
||||
bool
|
||||
select VHOST
|
||||
|
||||
config VHOST_KERNEL
|
||||
bool
|
||||
select VHOST
|
||||
|
||||
config VIRTFS
|
||||
bool
|
||||
|
57
MAINTAINERS
57
MAINTAINERS
@ -165,7 +165,6 @@ F: tests/qtest/arm-cpu-features.c
|
||||
F: hw/arm/
|
||||
F: hw/cpu/a*mpcore.c
|
||||
F: include/hw/cpu/a*mpcore.h
|
||||
F: disas/arm.c
|
||||
F: disas/arm-a64.cc
|
||||
F: disas/libvixl/
|
||||
F: docs/system/target-arm.rst
|
||||
@ -213,6 +212,13 @@ S: Maintained
|
||||
F: target/hppa/
|
||||
F: disas/hppa.c
|
||||
|
||||
LoongArch TCG CPUs
|
||||
M: Song Gao <gaosong@loongson.cn>
|
||||
M: Xiaojuan Yang <yangxiaojuan@loongson.cn>
|
||||
S: Maintained
|
||||
F: target/loongarch/
|
||||
F: tests/tcg/loongarch64/
|
||||
|
||||
M68K TCG CPUs
|
||||
M: Laurent Vivier <laurent@vivier.eu>
|
||||
S: Maintained
|
||||
@ -272,7 +278,6 @@ F: target/ppc/
|
||||
F: hw/ppc/ppc.c
|
||||
F: hw/ppc/ppc_booke.c
|
||||
F: include/hw/ppc/ppc.h
|
||||
F: disas/ppc.c
|
||||
|
||||
RISC-V TCG CPUs
|
||||
M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||
@ -335,7 +340,6 @@ F: target/i386/tcg/
|
||||
F: tests/tcg/i386/
|
||||
F: tests/tcg/x86_64/
|
||||
F: hw/i386/
|
||||
F: disas/i386.c
|
||||
F: docs/system/cpu-models-x86*
|
||||
T: git https://gitlab.com/ehabkost/qemu.git x86-next
|
||||
|
||||
@ -491,7 +495,6 @@ Guest CPU Cores (HAXM)
|
||||
---------------------
|
||||
X86 HAXM CPUs
|
||||
M: Wenchao Wang <wenchao.wang@intel.com>
|
||||
M: Colin Xu <colin.xu@intel.com>
|
||||
L: haxm-team@intel.com
|
||||
W: https://github.com/intel/haxm/issues
|
||||
S: Maintained
|
||||
@ -889,7 +892,7 @@ F: include/hw/ssi/imx_spi.h
|
||||
SBSA-REF
|
||||
M: Radoslaw Biernacki <rad@semihalf.com>
|
||||
M: Peter Maydell <peter.maydell@linaro.org>
|
||||
R: Leif Lindholm <leif@nuviainc.com>
|
||||
R: Leif Lindholm <quic_llindhol@quicinc.com>
|
||||
L: qemu-arm@nongnu.org
|
||||
S: Maintained
|
||||
F: hw/arm/sbsa-ref.c
|
||||
@ -1113,9 +1116,30 @@ S: Odd Fixes
|
||||
F: configs/devices/hppa-softmmu/default.mak
|
||||
F: hw/hppa/
|
||||
F: hw/net/*i82596*
|
||||
F: hw/misc/lasi.c
|
||||
F: hw/pci-host/dino.c
|
||||
F: include/hw/misc/lasi.h
|
||||
F: include/hw/net/lasi_82596.h
|
||||
F: include/hw/pci-host/dino.h
|
||||
F: pc-bios/hppa-firmware.img
|
||||
|
||||
LoongArch Machines
|
||||
------------------
|
||||
Virt
|
||||
M: Xiaojuan Yang <yangxiaojuan@loongson.cn>
|
||||
M: Song Gao <gaosong@loongson.cn>
|
||||
S: Maintained
|
||||
F: docs/system/loongarch/loongson3.rst
|
||||
F: configs/targets/loongarch64-softmmu.mak
|
||||
F: configs/devices/loongarch64-softmmu/default.mak
|
||||
F: hw/loongarch/
|
||||
F: include/hw/loongarch/virt.h
|
||||
F: include/hw/intc/loongarch_*.h
|
||||
F: hw/intc/loongarch_*.c
|
||||
F: include/hw/pci-host/ls7a.h
|
||||
F: hw/rtc/ls7a_rtc.c
|
||||
F: gdb-xml/loongarch*.xml
|
||||
|
||||
M68K Machines
|
||||
-------------
|
||||
an5206
|
||||
@ -1776,6 +1800,12 @@ F: include/hw/block/fdc.h
|
||||
F: tests/qtest/fdc-test.c
|
||||
T: git https://gitlab.com/jsnow/qemu.git ide
|
||||
|
||||
Hyper-V VMBus
|
||||
M: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
|
||||
S: Odd Fixes
|
||||
F: hw/hyperv/vmbus.c
|
||||
F: include/hw/hyperv/vmbus*.h
|
||||
|
||||
OMAP
|
||||
M: Peter Maydell <peter.maydell@linaro.org>
|
||||
L: qemu-arm@nongnu.org
|
||||
@ -2011,8 +2041,7 @@ M: Halil Pasic <pasic@linux.ibm.com>
|
||||
M: Eric Farman <farman@linux.ibm.com>
|
||||
S: Supported
|
||||
F: hw/s390x/virtio-ccw*.[hc]
|
||||
F: hw/s390x/vhost-vsock-ccw.c
|
||||
F: hw/s390x/vhost-user-fs-ccw.c
|
||||
F: hw/s390x/vhost-*-ccw.c
|
||||
T: git https://gitlab.com/cohuck/qemu.git s390-next
|
||||
T: git https://github.com/borntraeger/qemu.git s390-next
|
||||
L: qemu-s390x@nongnu.org
|
||||
@ -2169,6 +2198,7 @@ Generic Loader
|
||||
M: Alistair Francis <alistair@alistair23.me>
|
||||
S: Maintained
|
||||
F: hw/core/generic-loader.c
|
||||
F: hw/core/uboot_image.h
|
||||
F: include/hw/core/generic-loader.h
|
||||
F: docs/system/generic-loader.rst
|
||||
|
||||
@ -2544,6 +2574,13 @@ F: qapi/block*.json
|
||||
F: qapi/transaction.json
|
||||
T: git https://repo.or.cz/qemu/armbru.git block-next
|
||||
|
||||
Compute Express Link
|
||||
M: Ben Widawsky <ben.widawsky@intel.com>
|
||||
M: Jonathan Cameron <jonathan.cameron@huawei.com>
|
||||
S: Supported
|
||||
F: hw/cxl/
|
||||
F: include/hw/cxl/
|
||||
|
||||
Dirty Bitmaps
|
||||
M: Eric Blake <eblake@redhat.com>
|
||||
M: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
|
||||
@ -3089,7 +3126,7 @@ F: include/qemu/yank.h
|
||||
F: qapi/yank.json
|
||||
|
||||
COLO Framework
|
||||
M: zhanghailiang <zhang.zhanghailiang@huawei.com>
|
||||
M: Hailiang Zhang <zhanghailiang@xfusion.com>
|
||||
S: Maintained
|
||||
F: migration/colo*
|
||||
F: include/migration/colo.h
|
||||
@ -3267,13 +3304,11 @@ M: Richard Henderson <richard.henderson@linaro.org>
|
||||
S: Maintained
|
||||
L: qemu-arm@nongnu.org
|
||||
F: tcg/arm/
|
||||
F: disas/arm.c
|
||||
|
||||
i386 TCG target
|
||||
M: Richard Henderson <richard.henderson@linaro.org>
|
||||
S: Maintained
|
||||
F: tcg/i386/
|
||||
F: disas/i386.c
|
||||
|
||||
LoongArch64 TCG target
|
||||
M: WANG Xuerui <git@xen0n.name>
|
||||
@ -3293,7 +3328,6 @@ PPC TCG target
|
||||
M: Richard Henderson <richard.henderson@linaro.org>
|
||||
S: Odd Fixes
|
||||
F: tcg/ppc/
|
||||
F: disas/ppc.c
|
||||
|
||||
RISC-V TCG target
|
||||
M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||
@ -3369,6 +3403,7 @@ F: qemu-nbd.*
|
||||
F: blockdev-nbd.c
|
||||
F: docs/interop/nbd.txt
|
||||
F: docs/tools/qemu-nbd.rst
|
||||
F: tests/qemu-iotests/tests/*nbd*
|
||||
T: git https://repo.or.cz/qemu/ericb.git nbd
|
||||
T: git https://src.openvz.org/scm/~vsementsov/qemu.git nbd
|
||||
|
||||
|
12
Makefile
12
Makefile
@ -143,10 +143,9 @@ MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS))))
|
||||
MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq)
|
||||
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
|
||||
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
|
||||
|
||||
-d keepdepfile
|
||||
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
|
||||
ninja-cmd-goals += $(foreach t, $(.check.build-suites), $(.check-$t.deps))
|
||||
ninja-cmd-goals += $(foreach t, $(.bench.build-suites), $(.bench-$t.deps))
|
||||
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))))
|
||||
|
||||
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
|
||||
# "ninja -t targets" also lists all prerequisites. If build system
|
||||
@ -160,15 +159,12 @@ $(ninja-targets): run-ninja
|
||||
# --output-sync line.
|
||||
run-ninja: config-host.mak
|
||||
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
|
||||
+$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \
|
||||
$(NINJAFLAGS) $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
||||
+$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \
|
||||
$(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Force configure to re-run if the API symbols are updated
|
||||
ifeq ($(CONFIG_PLUGIN),y)
|
||||
config-host.mak: $(SRC_PATH)/plugins/qemu-plugins.symbols
|
||||
|
||||
.PHONY: plugins
|
||||
plugins:
|
||||
$(call quiet-command,\
|
||||
|
@ -120,12 +120,12 @@ static void hvf_set_phys_mem(MemoryRegionSection *section, bool add)
|
||||
{
|
||||
hvf_slot *mem;
|
||||
MemoryRegion *area = section->mr;
|
||||
bool writeable = !area->readonly && !area->rom_device;
|
||||
bool writable = !area->readonly && !area->rom_device;
|
||||
hv_memory_flags_t flags;
|
||||
uint64_t page_size = qemu_real_host_page_size();
|
||||
|
||||
if (!memory_region_is_ram(area)) {
|
||||
if (writeable) {
|
||||
if (writable) {
|
||||
return;
|
||||
} else if (!memory_region_is_romd(area)) {
|
||||
/*
|
||||
|
@ -1346,13 +1346,13 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
|
||||
KVMSlot *mem;
|
||||
int err;
|
||||
MemoryRegion *mr = section->mr;
|
||||
bool writeable = !mr->readonly && !mr->rom_device;
|
||||
bool writable = !mr->readonly && !mr->rom_device;
|
||||
hwaddr start_addr, size, slot_size, mr_offset;
|
||||
ram_addr_t ram_start_offset;
|
||||
void *ram;
|
||||
|
||||
if (!memory_region_is_ram(mr)) {
|
||||
if (writeable || !kvm_readonly_mem_allowed) {
|
||||
if (writable || !kvm_readonly_mem_allowed) {
|
||||
return;
|
||||
} else if (!mr->romd_mode) {
|
||||
/* If the memory device is not in romd_mode, then we actually want
|
||||
|
@ -84,8 +84,7 @@ void icount_handle_deadline(void)
|
||||
* Don't interrupt cpu thread, when these events are waiting
|
||||
* (i.e., there is no checkpoint)
|
||||
*/
|
||||
if (deadline == 0
|
||||
&& (replay_mode != REPLAY_MODE_PLAY || replay_has_checkpoint())) {
|
||||
if (deadline == 0) {
|
||||
icount_notify_aio_contexts();
|
||||
}
|
||||
}
|
||||
@ -109,7 +108,7 @@ void icount_prepare_for_run(CPUState *cpu)
|
||||
|
||||
replay_mutex_lock();
|
||||
|
||||
if (cpu->icount_budget == 0 && replay_has_checkpoint()) {
|
||||
if (cpu->icount_budget == 0) {
|
||||
icount_notify_aio_contexts();
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,8 @@
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef TCG_CPUS_ICOUNT_H
|
||||
#define TCG_CPUS_ICOUNT_H
|
||||
#ifndef TCG_ACCEL_OPS_ICOUNT_H
|
||||
#define TCG_ACCEL_OPS_ICOUNT_H
|
||||
|
||||
void icount_handle_deadline(void);
|
||||
void icount_prepare_for_run(CPUState *cpu);
|
||||
@ -16,4 +16,4 @@ void icount_process_data(CPUState *cpu);
|
||||
|
||||
void icount_handle_interrupt(CPUState *cpu, int mask);
|
||||
|
||||
#endif /* TCG_CPUS_ICOUNT_H */
|
||||
#endif /* TCG_ACCEL_OPS_ICOUNT_H */
|
||||
|
@ -7,8 +7,8 @@
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef TCG_CPUS_MTTCG_H
|
||||
#define TCG_CPUS_MTTCG_H
|
||||
#ifndef TCG_ACCEL_OPS_MTTCG_H
|
||||
#define TCG_ACCEL_OPS_MTTCG_H
|
||||
|
||||
/* kick MTTCG vCPU thread */
|
||||
void mttcg_kick_vcpu_thread(CPUState *cpu);
|
||||
@ -16,4 +16,4 @@ void mttcg_kick_vcpu_thread(CPUState *cpu);
|
||||
/* start an mttcg vCPU thread */
|
||||
void mttcg_start_vcpu_thread(CPUState *cpu);
|
||||
|
||||
#endif /* TCG_CPUS_MTTCG_H */
|
||||
#endif /* TCG_ACCEL_OPS_MTTCG_H */
|
||||
|
@ -7,8 +7,8 @@
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef TCG_CPUS_RR_H
|
||||
#define TCG_CPUS_RR_H
|
||||
#ifndef TCG_ACCEL_OPS_RR_H
|
||||
#define TCG_ACCEL_OPS_RR_H
|
||||
|
||||
#define TCG_KICK_PERIOD (NANOSECONDS_PER_SECOND / 10)
|
||||
|
||||
@ -18,4 +18,4 @@ void rr_kick_vcpu_thread(CPUState *unused);
|
||||
/* start the round robin vcpu thread */
|
||||
void rr_start_vcpu_thread(CPUState *cpu);
|
||||
|
||||
#endif /* TCG_CPUS_RR_H */
|
||||
#endif /* TCG_ACCEL_OPS_RR_H */
|
||||
|
@ -9,8 +9,8 @@
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef TCG_CPUS_H
|
||||
#define TCG_CPUS_H
|
||||
#ifndef TCG_ACCEL_OPS_H
|
||||
#define TCG_ACCEL_OPS_H
|
||||
|
||||
#include "sysemu/cpus.h"
|
||||
|
||||
@ -19,4 +19,4 @@ int tcg_cpus_exec(CPUState *cpu);
|
||||
void tcg_handle_interrupt(CPUState *cpu, int mask);
|
||||
void tcg_cpu_init_cflags(CPUState *cpu, bool parallel);
|
||||
|
||||
#endif /* TCG_CPUS_H */
|
||||
#endif /* TCG_ACCEL_OPS_H */
|
||||
|
@ -101,10 +101,10 @@ MMUAccessType adjust_signal_pc(uintptr_t *pc, bool is_write)
|
||||
* Return true if the write fault has been handled, and should be re-tried.
|
||||
*
|
||||
* Note that it is important that we don't call page_unprotect() unless
|
||||
* this is really a "write to nonwriteable page" fault, because
|
||||
* this is really a "write to nonwritable page" fault, because
|
||||
* page_unprotect() assumes that if it is called for an access to
|
||||
* a page that's writeable this means we had two threads racing and
|
||||
* another thread got there first and already made the page writeable;
|
||||
* a page that's writable this means we had two threads racing and
|
||||
* another thread got there first and already made the page writable;
|
||||
* so we will retry the access. If we were to call page_unprotect()
|
||||
* for some other kind of fault that should really be passed to the
|
||||
* guest, we'd end up in an infinite loop of retrying the faulting access.
|
||||
|
@ -2099,13 +2099,19 @@ static void audio_validate_opts(Audiodev *dev, Error **errp)
|
||||
|
||||
void audio_parse_option(const char *opt)
|
||||
{
|
||||
AudiodevListEntry *e;
|
||||
Audiodev *dev = NULL;
|
||||
|
||||
Visitor *v = qobject_input_visitor_new_str(opt, "driver", &error_fatal);
|
||||
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
|
||||
visit_free(v);
|
||||
|
||||
audio_define(dev);
|
||||
}
|
||||
|
||||
void audio_define(Audiodev *dev)
|
||||
{
|
||||
AudiodevListEntry *e;
|
||||
|
||||
audio_validate_opts(dev, &error_fatal);
|
||||
|
||||
e = g_new0(AudiodevListEntry, 1);
|
||||
|
@ -168,6 +168,7 @@ void audio_sample_to_uint64(const void *samples, int pos,
|
||||
void audio_sample_from_uint64(void *samples, int pos,
|
||||
uint64_t left, uint64_t right);
|
||||
|
||||
void audio_define(Audiodev *audio);
|
||||
void audio_parse_option(const char *opt);
|
||||
void audio_init_audiodevs(void);
|
||||
void audio_legacy_help(void);
|
||||
|
@ -274,7 +274,7 @@ static void host_memory_backend_init(Object *obj)
|
||||
backend->merge = machine_mem_merge(machine);
|
||||
backend->dump = machine_dump_guest_core(machine);
|
||||
backend->reserve = true;
|
||||
backend->prealloc_threads = 1;
|
||||
backend->prealloc_threads = machine->smp.cpus;
|
||||
}
|
||||
|
||||
static void host_memory_backend_post_init(Object *obj)
|
||||
|
@ -12,9 +12,13 @@ softmmu_ss.add([files(
|
||||
softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('rng-random.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('hostmem-file.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_LINUX', if_true: files('hostmem-memfd.c'))
|
||||
softmmu_ss.add(when: ['CONFIG_VHOST_USER', 'CONFIG_VIRTIO'], if_true: files('vhost-user.c'))
|
||||
if have_vhost_user
|
||||
softmmu_ss.add(when: 'CONFIG_VIRTIO', if_true: files('vhost-user.c'))
|
||||
endif
|
||||
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
|
||||
softmmu_ss.add(when: ['CONFIG_VIRTIO_CRYPTO', 'CONFIG_VHOST_CRYPTO'], if_true: files('cryptodev-vhost-user.c'))
|
||||
if have_vhost_user_crypto
|
||||
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost-user.c'))
|
||||
endif
|
||||
softmmu_ss.add(when: gio, if_true: files('dbus-vmstate.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))
|
||||
|
||||
|
@ -48,24 +48,10 @@ static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
|
||||
|
||||
static void rng_backend_complete(UserCreatable *uc, Error **errp)
|
||||
{
|
||||
object_property_set_bool(OBJECT(uc), "opened", true, errp);
|
||||
}
|
||||
|
||||
static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
|
||||
{
|
||||
RngBackend *s = RNG_BACKEND(obj);
|
||||
RngBackend *s = RNG_BACKEND(uc);
|
||||
RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
|
||||
Error *local_err = NULL;
|
||||
|
||||
if (value == s->opened) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!value && s->opened) {
|
||||
error_setg(errp, QERR_PERMISSION_DENIED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (k->opened) {
|
||||
k->opened(s, &local_err);
|
||||
if (local_err) {
|
||||
@ -122,7 +108,7 @@ static void rng_backend_class_init(ObjectClass *oc, void *data)
|
||||
|
||||
object_class_property_add_bool(oc, "opened",
|
||||
rng_backend_prop_get_opened,
|
||||
rng_backend_prop_set_opened);
|
||||
NULL);
|
||||
}
|
||||
|
||||
static const TypeInfo rng_backend_info = {
|
||||
|
2
block.c
2
block.c
@ -6298,7 +6298,7 @@ const char *bdrv_get_device_or_node_name(const BlockDriverState *bs)
|
||||
|
||||
int bdrv_get_flags(BlockDriverState *bs)
|
||||
{
|
||||
GLOBAL_STATE_CODE();
|
||||
IO_CODE();
|
||||
return bs->open_flags;
|
||||
}
|
||||
|
||||
|
@ -22,11 +22,11 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCK_COPY_ON_READ
|
||||
#define BLOCK_COPY_ON_READ
|
||||
#ifndef BLOCK_COPY_ON_READ_H
|
||||
#define BLOCK_COPY_ON_READ_H
|
||||
|
||||
#include "block/block_int.h"
|
||||
|
||||
void bdrv_cor_filter_drop(BlockDriverState *cor_filter_bs);
|
||||
|
||||
#endif /* BLOCK_COPY_ON_READ */
|
||||
#endif /* BLOCK_COPY_ON_READ_H */
|
||||
|
@ -22,8 +22,8 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BLOCK_COROUTINES_INT_H
|
||||
#define BLOCK_COROUTINES_INT_H
|
||||
#ifndef BLOCK_COROUTINES_H
|
||||
#define BLOCK_COROUTINES_H
|
||||
|
||||
#include "block/block_int.h"
|
||||
|
||||
@ -129,4 +129,4 @@ blk_do_pdiscard(BlockBackend *blk, int64_t offset, int64_t bytes);
|
||||
|
||||
int generated_co_wrapper blk_do_flush(BlockBackend *blk);
|
||||
|
||||
#endif /* BLOCK_COROUTINES_INT_H */
|
||||
#endif /* BLOCK_COROUTINES_H */
|
||||
|
@ -751,7 +751,7 @@ void bdrv_drain_all(void)
|
||||
*
|
||||
* This function should be called when a tracked request is completing.
|
||||
*/
|
||||
static void tracked_request_end(BdrvTrackedRequest *req)
|
||||
static void coroutine_fn tracked_request_end(BdrvTrackedRequest *req)
|
||||
{
|
||||
if (req->serialising) {
|
||||
qatomic_dec(&req->bs->serialising_in_flight);
|
||||
|
104
block/qcow2.c
104
block/qcow2.c
@ -1296,7 +1296,8 @@ static int validate_compression_type(BDRVQcow2State *s, Error **errp)
|
||||
|
||||
/* Called with s->lock held. */
|
||||
static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
||||
int flags, Error **errp)
|
||||
int flags, bool open_data_file,
|
||||
Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
BDRVQcow2State *s = bs->opaque;
|
||||
@ -1614,50 +1615,52 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Open external data file */
|
||||
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
|
||||
&child_of_bds, BDRV_CHILD_DATA,
|
||||
true, errp);
|
||||
if (*errp) {
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
if (open_data_file) {
|
||||
/* Open external data file */
|
||||
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
|
||||
&child_of_bds, BDRV_CHILD_DATA,
|
||||
true, errp);
|
||||
if (*errp) {
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
|
||||
if (!s->data_file && s->image_data_file) {
|
||||
s->data_file = bdrv_open_child(s->image_data_file, options,
|
||||
"data-file", bs, &child_of_bds,
|
||||
BDRV_CHILD_DATA, false, errp);
|
||||
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
|
||||
if (!s->data_file && s->image_data_file) {
|
||||
s->data_file = bdrv_open_child(s->image_data_file, options,
|
||||
"data-file", bs, &child_of_bds,
|
||||
BDRV_CHILD_DATA, false, errp);
|
||||
if (!s->data_file) {
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (!s->data_file) {
|
||||
error_setg(errp, "'data-file' is required for this image");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (!s->data_file) {
|
||||
error_setg(errp, "'data-file' is required for this image");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* No data here */
|
||||
bs->file->role &= ~BDRV_CHILD_DATA;
|
||||
/* No data here */
|
||||
bs->file->role &= ~BDRV_CHILD_DATA;
|
||||
|
||||
/* Must succeed because we have given up permissions if anything */
|
||||
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
|
||||
} else {
|
||||
if (s->data_file) {
|
||||
error_setg(errp, "'data-file' can only be set for images with an "
|
||||
"external data file");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
/* Must succeed because we have given up permissions if anything */
|
||||
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
|
||||
} else {
|
||||
if (s->data_file) {
|
||||
error_setg(errp, "'data-file' can only be set for images with "
|
||||
"an external data file");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
s->data_file = bs->file;
|
||||
s->data_file = bs->file;
|
||||
|
||||
if (data_file_is_raw(bs)) {
|
||||
error_setg(errp, "data-file-raw requires a data file");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
if (data_file_is_raw(bs)) {
|
||||
error_setg(errp, "data-file-raw requires a data file");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1839,7 +1842,7 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
||||
|
||||
fail:
|
||||
g_free(s->image_data_file);
|
||||
if (has_data_file(bs)) {
|
||||
if (open_data_file && has_data_file(bs)) {
|
||||
bdrv_unref_child(bs, s->data_file);
|
||||
s->data_file = NULL;
|
||||
}
|
||||
@ -1876,7 +1879,8 @@ static void coroutine_fn qcow2_open_entry(void *opaque)
|
||||
BDRVQcow2State *s = qoc->bs->opaque;
|
||||
|
||||
qemu_co_mutex_lock(&s->lock);
|
||||
qoc->ret = qcow2_do_open(qoc->bs, qoc->options, qoc->flags, qoc->errp);
|
||||
qoc->ret = qcow2_do_open(qoc->bs, qoc->options, qoc->flags, true,
|
||||
qoc->errp);
|
||||
qemu_co_mutex_unlock(&s->lock);
|
||||
}
|
||||
|
||||
@ -2714,7 +2718,7 @@ static int qcow2_inactivate(BlockDriverState *bs)
|
||||
return result;
|
||||
}
|
||||
|
||||
static void qcow2_close(BlockDriverState *bs)
|
||||
static void qcow2_do_close(BlockDriverState *bs, bool close_data_file)
|
||||
{
|
||||
BDRVQcow2State *s = bs->opaque;
|
||||
qemu_vfree(s->l1_table);
|
||||
@ -2740,7 +2744,7 @@ static void qcow2_close(BlockDriverState *bs)
|
||||
g_free(s->image_backing_file);
|
||||
g_free(s->image_backing_format);
|
||||
|
||||
if (has_data_file(bs)) {
|
||||
if (close_data_file && has_data_file(bs)) {
|
||||
bdrv_unref_child(bs, s->data_file);
|
||||
s->data_file = NULL;
|
||||
}
|
||||
@ -2749,11 +2753,17 @@ static void qcow2_close(BlockDriverState *bs)
|
||||
qcow2_free_snapshots(bs);
|
||||
}
|
||||
|
||||
static void qcow2_close(BlockDriverState *bs)
|
||||
{
|
||||
qcow2_do_close(bs, true);
|
||||
}
|
||||
|
||||
static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
|
||||
Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
BDRVQcow2State *s = bs->opaque;
|
||||
BdrvChild *data_file;
|
||||
int flags = s->flags;
|
||||
QCryptoBlock *crypto = NULL;
|
||||
QDict *options;
|
||||
@ -2767,14 +2777,24 @@ static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
|
||||
crypto = s->crypto;
|
||||
s->crypto = NULL;
|
||||
|
||||
qcow2_close(bs);
|
||||
/*
|
||||
* Do not reopen s->data_file (i.e., have qcow2_do_close() not close it,
|
||||
* and then prevent qcow2_do_open() from opening it), because this function
|
||||
* runs in the I/O path and as such we must not invoke global-state
|
||||
* functions like bdrv_unref_child() and bdrv_open_child().
|
||||
*/
|
||||
|
||||
qcow2_do_close(bs, false);
|
||||
|
||||
data_file = s->data_file;
|
||||
memset(s, 0, sizeof(BDRVQcow2State));
|
||||
s->data_file = data_file;
|
||||
|
||||
options = qdict_clone_shallow(bs->options);
|
||||
|
||||
flags &= ~BDRV_O_INACTIVE;
|
||||
qemu_co_mutex_lock(&s->lock);
|
||||
ret = qcow2_do_open(bs, options, flags, errp);
|
||||
ret = qcow2_do_open(bs, options, flags, false, errp);
|
||||
qemu_co_mutex_unlock(&s->lock);
|
||||
qobject_unref(options);
|
||||
if (ret < 0) {
|
||||
|
56
block/vmdk.c
56
block/vmdk.c
@ -178,6 +178,10 @@ typedef struct BDRVVmdkState {
|
||||
char *create_type;
|
||||
} BDRVVmdkState;
|
||||
|
||||
typedef struct BDRVVmdkReopenState {
|
||||
bool *extents_using_bs_file;
|
||||
} BDRVVmdkReopenState;
|
||||
|
||||
typedef struct VmdkMetaData {
|
||||
unsigned int l1_index;
|
||||
unsigned int l2_index;
|
||||
@ -400,15 +404,63 @@ static int vmdk_is_cid_valid(BlockDriverState *bs)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* We have nothing to do for VMDK reopen, stubs just return success */
|
||||
static int vmdk_reopen_prepare(BDRVReopenState *state,
|
||||
BlockReopenQueue *queue, Error **errp)
|
||||
{
|
||||
BDRVVmdkState *s;
|
||||
BDRVVmdkReopenState *rs;
|
||||
int i;
|
||||
|
||||
assert(state != NULL);
|
||||
assert(state->bs != NULL);
|
||||
assert(state->opaque == NULL);
|
||||
|
||||
s = state->bs->opaque;
|
||||
|
||||
rs = g_new0(BDRVVmdkReopenState, 1);
|
||||
state->opaque = rs;
|
||||
|
||||
/*
|
||||
* Check whether there are any extents stored in bs->file; if bs->file
|
||||
* changes, we will need to update their .file pointers to follow suit
|
||||
*/
|
||||
rs->extents_using_bs_file = g_new(bool, s->num_extents);
|
||||
for (i = 0; i < s->num_extents; i++) {
|
||||
rs->extents_using_bs_file[i] = s->extents[i].file == state->bs->file;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void vmdk_reopen_clean(BDRVReopenState *state)
|
||||
{
|
||||
BDRVVmdkReopenState *rs = state->opaque;
|
||||
|
||||
g_free(rs->extents_using_bs_file);
|
||||
g_free(rs);
|
||||
state->opaque = NULL;
|
||||
}
|
||||
|
||||
static void vmdk_reopen_commit(BDRVReopenState *state)
|
||||
{
|
||||
BDRVVmdkState *s = state->bs->opaque;
|
||||
BDRVVmdkReopenState *rs = state->opaque;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < s->num_extents; i++) {
|
||||
if (rs->extents_using_bs_file[i]) {
|
||||
s->extents[i].file = state->bs->file;
|
||||
}
|
||||
}
|
||||
|
||||
vmdk_reopen_clean(state);
|
||||
}
|
||||
|
||||
static void vmdk_reopen_abort(BDRVReopenState *state)
|
||||
{
|
||||
vmdk_reopen_clean(state);
|
||||
}
|
||||
|
||||
static int vmdk_parent_open(BlockDriverState *bs)
|
||||
{
|
||||
char *p_name;
|
||||
@ -3072,6 +3124,8 @@ static BlockDriver bdrv_vmdk = {
|
||||
.bdrv_open = vmdk_open,
|
||||
.bdrv_co_check = vmdk_co_check,
|
||||
.bdrv_reopen_prepare = vmdk_reopen_prepare,
|
||||
.bdrv_reopen_commit = vmdk_reopen_commit,
|
||||
.bdrv_reopen_abort = vmdk_reopen_abort,
|
||||
.bdrv_child_perm = bdrv_default_perms,
|
||||
.bdrv_co_preadv = vmdk_co_preadv,
|
||||
.bdrv_co_pwritev = vmdk_co_pwritev,
|
||||
|
@ -30,18 +30,23 @@ typedef struct NBDServerData {
|
||||
} NBDServerData;
|
||||
|
||||
static NBDServerData *nbd_server;
|
||||
static bool is_qemu_nbd;
|
||||
static int qemu_nbd_connections = -1; /* Non-negative if this is qemu-nbd */
|
||||
|
||||
static void nbd_update_server_watch(NBDServerData *s);
|
||||
|
||||
void nbd_server_is_qemu_nbd(bool value)
|
||||
void nbd_server_is_qemu_nbd(int max_connections)
|
||||
{
|
||||
is_qemu_nbd = value;
|
||||
qemu_nbd_connections = max_connections;
|
||||
}
|
||||
|
||||
bool nbd_server_is_running(void)
|
||||
{
|
||||
return nbd_server || is_qemu_nbd;
|
||||
return nbd_server || qemu_nbd_connections >= 0;
|
||||
}
|
||||
|
||||
int nbd_server_max_connections(void)
|
||||
{
|
||||
return nbd_server ? nbd_server->max_connections : qemu_nbd_connections;
|
||||
}
|
||||
|
||||
static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)
|
||||
|
@ -17,5 +17,5 @@ static inline bool regpairs_aligned(void *cpu_env)
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif /* ! TARGET_H */
|
||||
#endif /* TARGET_H */
|
||||
|
||||
|
@ -17,12 +17,12 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_H_
|
||||
#define _TARGET_ARCH_H_
|
||||
#ifndef TARGET_ARCH_H
|
||||
#define TARGET_ARCH_H
|
||||
|
||||
#include "qemu.h"
|
||||
|
||||
void target_cpu_set_tls(CPUARMState *env, target_ulong newtls);
|
||||
target_ulong target_cpu_get_tls(CPUARMState *env);
|
||||
|
||||
#endif /* !_TARGET_ARCH_H_ */
|
||||
#endif /* TARGET_ARCH_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_CPU_H_
|
||||
#define _TARGET_ARCH_CPU_H_
|
||||
#ifndef TARGET_ARCH_CPU_H
|
||||
#define TARGET_ARCH_CPU_H
|
||||
|
||||
#include "target_arch.h"
|
||||
#include "signal-common.h"
|
||||
@ -210,4 +210,4 @@ static inline void target_cpu_reset(CPUArchState *env)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_CPU_H */
|
||||
#endif /* TARGET_ARCH_CPU_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_ELF_H_
|
||||
#define _TARGET_ARCH_ELF_H_
|
||||
|
||||
#ifndef TARGET_ARCH_ELF_H
|
||||
#define TARGET_ARCH_ELF_H
|
||||
|
||||
#define ELF_START_MMAP 0x80000000
|
||||
#define ELF_ET_DYN_LOAD_ADDR 0x500000
|
||||
@ -125,4 +126,4 @@ static uint32_t get_elf_hwcap2(void)
|
||||
#undef GET_FEATURE
|
||||
#undef GET_FEATURE_ID
|
||||
|
||||
#endif /* _TARGET_ARCH_ELF_H_ */
|
||||
#endif /* TARGET_ARCH_ELF_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_REG_H_
|
||||
#define _TARGET_ARCH_REG_H_
|
||||
#ifndef TARGET_ARCH_REG_H
|
||||
#define TARGET_ARCH_REG_H
|
||||
|
||||
/* See sys/arm/include/reg.h */
|
||||
typedef struct target_reg {
|
||||
@ -57,4 +57,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUARMState *env)
|
||||
|
||||
#undef tswapreg
|
||||
|
||||
#endif /* !_TARGET_ARCH_REG_H_ */
|
||||
#endif /* TARGET_ARCH_REG_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_SIGNAL_H_
|
||||
#define _TARGET_ARCH_SIGNAL_H_
|
||||
|
||||
#ifndef TARGET_ARCH_SIGNAL_H
|
||||
#define TARGET_ARCH_SIGNAL_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
@ -85,4 +86,4 @@ struct target_sigframe {
|
||||
target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
|
||||
};
|
||||
|
||||
#endif /* !_TARGET_ARCH_SIGNAL_H_ */
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
||||
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||
#define TARGET_ARCH_SIGTRAMP_H
|
||||
|
||||
/* Compare to arm/arm/locore.S ENTRY_NP(sigcode) */
|
||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
@ -46,4 +46,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
|
||||
return memcpy_to_target(offset, sigtramp_code, TARGET_SZSIGCODE);
|
||||
}
|
||||
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
|
||||
#endif /* TARGET_ARCH_SIGTRAMP_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_SYSARCH_H_
|
||||
#define _TARGET_ARCH_SYSARCH_H_
|
||||
#ifndef TARGET_ARCH_SYSARCH_H
|
||||
#define TARGET_ARCH_SYSARCH_H
|
||||
|
||||
#include "target_syscall.h"
|
||||
#include "target_arch.h"
|
||||
@ -75,4 +75,4 @@ static inline void do_freebsd_arch_print_sysarch(
|
||||
}
|
||||
}
|
||||
|
||||
#endif /*!_TARGET_ARCH_SYSARCH_H_ */
|
||||
#endif /* TARGET_ARCH_SYSARCH_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_THREAD_H_
|
||||
#define _TARGET_ARCH_THREAD_H_
|
||||
|
||||
#ifndef TARGET_ARCH_THREAD_H
|
||||
#define TARGET_ARCH_THREAD_H
|
||||
|
||||
/* Compare to arm/arm/vm_machdep.c cpu_set_upcall_kse() */
|
||||
static inline void target_thread_set_upcall(CPUARMState *env, abi_ulong entry,
|
||||
@ -77,4 +78,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
|
||||
*/
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_THREAD_H_ */
|
||||
#endif /* TARGET_ARCH_THREAD_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_VMPARAM_H_
|
||||
#define _TARGET_ARCH_VMPARAM_H_
|
||||
|
||||
#ifndef TARGET_ARCH_VMPARAM_H
|
||||
#define TARGET_ARCH_VMPARAM_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
@ -45,4 +46,4 @@ static inline void set_second_rval(CPUARMState *state, abi_ulong retval2)
|
||||
state->regs[1] = retval2;
|
||||
}
|
||||
|
||||
#endif /* ! _TARGET_ARCH_VMPARAM_H_ */
|
||||
#endif /* TARGET_ARCH_VMPARAM_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_SYSCALL_H_
|
||||
#define _TARGET_ARCH_SYSCALL_H_
|
||||
#ifndef ARM_TARGET_SYSCALL_H
|
||||
#define ARM_TARGET_SYSCALL_H
|
||||
|
||||
struct target_pt_regs {
|
||||
abi_long uregs[17];
|
||||
@ -52,4 +52,4 @@ struct target_pt_regs {
|
||||
#define TARGET_HW_MACHINE "arm"
|
||||
#define TARGET_HW_MACHINE_ARCH "armv7"
|
||||
|
||||
#endif /* !_TARGET_ARCH_SYSCALL_H_ */
|
||||
#endif /* ARM_TARGET_SYSCALL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_FILE_H_
|
||||
#define BSD_FILE_H_
|
||||
#ifndef BSD_FILE_H
|
||||
#define BSD_FILE_H
|
||||
|
||||
#include "qemu/path.h"
|
||||
|
||||
@ -27,4 +27,4 @@ extern struct iovec *lock_iovec(int type, abi_ulong target_addr, int count,
|
||||
extern void unlock_iovec(struct iovec *vec, abi_ulong target_addr, int count,
|
||||
int copy);
|
||||
|
||||
#endif /* !BSD_FILE_H_ */
|
||||
#endif /* BSD_FILE_H */
|
||||
|
@ -34,8 +34,8 @@
|
||||
* @(#)errno.h 8.5 (Berkeley) 1/21/94
|
||||
*/
|
||||
|
||||
#ifndef _ERRNO_DEFS_H_
|
||||
#define _ERRNO_DEFS_H_
|
||||
#ifndef ERRNO_DEFS_H
|
||||
#define ERRNO_DEFS_H
|
||||
|
||||
#define TARGET_EPERM 1 /* Operation not permitted */
|
||||
#define TARGET_ENOENT 2 /* No such file or directory */
|
||||
@ -157,4 +157,4 @@
|
||||
_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS,
|
||||
"TARGET_ERESTART and QEMU_ERESTARTSYS expected to match");
|
||||
|
||||
#endif /* ! _ERRNO_DEFS_H_ */
|
||||
#endif /* ERRNO_DEFS_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _HOST_OS_H_
|
||||
#define _HOST_OS_H_
|
||||
#ifndef HOST_OS_H
|
||||
#define HOST_OS_H
|
||||
|
||||
#define HOST_DEFAULT_BSD_TYPE target_freebsd
|
||||
|
||||
#endif /*!_HOST_OS_H_ */
|
||||
#endif /* HOST_OS_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_OS_ELF_H_
|
||||
#define _TARGET_OS_ELF_H_
|
||||
|
||||
#ifndef TARGET_OS_ELF_H
|
||||
#define TARGET_OS_ELF_H
|
||||
|
||||
#include "target_arch_elf.h"
|
||||
#include "elf.h"
|
||||
@ -134,4 +135,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
|
||||
return sp;
|
||||
}
|
||||
|
||||
#endif /* _TARGET_OS_ELF_H_ */
|
||||
#endif /* TARGET_OS_ELF_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_OS_SIGINFO_H_
|
||||
#define _TARGET_OS_SIGINFO_H_
|
||||
|
||||
#ifndef TARGET_OS_SIGINFO_H
|
||||
#define TARGET_OS_SIGINFO_H
|
||||
|
||||
#define TARGET_NSIG 128
|
||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
||||
@ -155,4 +156,4 @@ struct target_sigevent {
|
||||
#define TARGET_FPE_FLTINV (7) /* Invalid floating point operation. */
|
||||
#define TARGET_FPE_FLTSUB (8) /* Subscript out of range. */
|
||||
|
||||
#endif /* !_TARGET_OS_SIGINFO_H_ */
|
||||
#endif /* TARGET_OS_SIGINFO_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef _TARGET_OS_SIGNAL_H_
|
||||
#define _TARGET_OS_SIGNAL_H_
|
||||
#ifndef TARGET_OS_SIGNAL_H
|
||||
#define TARGET_OS_SIGNAL_H
|
||||
|
||||
#include "target_os_siginfo.h"
|
||||
#include "target_arch_signal.h"
|
||||
@ -78,4 +78,4 @@ abi_long setup_sigframe_arch(CPUArchState *env, abi_ulong frame_addr,
|
||||
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack*/
|
||||
|
||||
#endif /* !_TARGET_OS_SIGNAL_H_ */
|
||||
#endif /* TARGET_OS_SIGNAL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_STACK_H_
|
||||
#define _TARGET_OS_STACK_H_
|
||||
#ifndef TARGET_OS_STACK_H
|
||||
#define TARGET_OS_STACK_H
|
||||
|
||||
#include <sys/param.h>
|
||||
#include "target_arch_sigtramp.h"
|
||||
@ -178,4 +178,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_OS_STACK_H_ */
|
||||
#endif /* TARGET_OS_STACK_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_THREAD_H_
|
||||
#define _TARGET_OS_THREAD_H_
|
||||
#ifndef TARGET_OS_THREAD_H
|
||||
#define TARGET_OS_THREAD_H
|
||||
|
||||
#include "target_arch_thread.h"
|
||||
|
||||
#endif /* !_TARGET_OS_THREAD_H_ */
|
||||
#endif /* TARGET_OS_THREAD_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_USER_H_
|
||||
#define _TARGET_OS_USER_H_
|
||||
#ifndef TARGET_OS_USER_H
|
||||
#define TARGET_OS_USER_H
|
||||
|
||||
/*
|
||||
* from sys/priority.h
|
||||
@ -326,4 +326,4 @@ struct target_kinfo_vmentry {
|
||||
char kve_path[PATH_MAX]; /* Path to VM obj, if any. */
|
||||
};
|
||||
|
||||
#endif /* ! _TARGET_OS_USER_H_ */
|
||||
#endif /* TARGET_OS_USER_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_OS_VMPARAM_H_
|
||||
#define _TARGET_OS_VMPARAM_H_
|
||||
|
||||
#ifndef TARGET_OS_VMPARAM_H
|
||||
#define TARGET_OS_VMPARAM_H
|
||||
|
||||
#include "target_arch_vmparam.h"
|
||||
|
||||
@ -35,4 +36,4 @@ extern abi_ulong target_stksiz;
|
||||
#define TARGET_PS_STRINGS ((target_stkbas + target_stksiz) - \
|
||||
sizeof(struct target_ps_strings))
|
||||
|
||||
#endif /* !TARGET_OS_VMPARAM_H_ */
|
||||
#endif /* TARGET_OS_VMPARAM_H */
|
||||
|
@ -6,8 +6,8 @@
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef TARGET_ARCH_H
|
||||
#define TARGET_ARCH_H
|
||||
#ifndef TARGET_H
|
||||
#define TARGET_H
|
||||
|
||||
/*
|
||||
* i386 doesn't 'lump' the registers for 64-bit args.
|
||||
@ -17,5 +17,4 @@ static inline bool regpairs_aligned(void *cpu_env)
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* ! TARGET_ARCH_H */
|
||||
|
||||
#endif /* TARGET_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_H_
|
||||
#define _TARGET_ARCH_H_
|
||||
#ifndef TARGET_ARCH_H
|
||||
#define TARGET_ARCH_H
|
||||
|
||||
/* target_arch_cpu.c */
|
||||
void bsd_i386_write_dt(void *ptr, unsigned long addr, unsigned long limit,
|
||||
@ -28,4 +28,4 @@ void bsd_i386_set_idt_base(uint64_t base);
|
||||
|
||||
#define target_cpu_set_tls(env, newtls)
|
||||
|
||||
#endif /* ! _TARGET_ARCH_H_ */
|
||||
#endif /* TARGET_ARCH_H */
|
||||
|
@ -16,8 +16,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_CPU_H_
|
||||
#define _TARGET_ARCH_CPU_H_
|
||||
#ifndef TARGET_ARCH_CPU_H
|
||||
#define TARGET_ARCH_CPU_H
|
||||
|
||||
#include "target_arch.h"
|
||||
#include "signal-common.h"
|
||||
@ -195,4 +195,4 @@ static inline void target_cpu_reset(CPUArchState *env)
|
||||
cpu_reset(env_cpu(env));
|
||||
}
|
||||
|
||||
#endif /* ! _TARGET_ARCH_CPU_H_ */
|
||||
#endif /* TARGET_ARCH_CPU_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_ELF_H_
|
||||
#define _TARGET_ARCH_ELF_H_
|
||||
|
||||
#ifndef TARGET_ARCH_ELF_H
|
||||
#define TARGET_ARCH_ELF_H
|
||||
|
||||
#define ELF_START_MMAP 0x80000000
|
||||
#define ELF_ET_DYN_LOAD_ADDR 0x01001000
|
||||
@ -32,4 +33,4 @@
|
||||
#define USE_ELF_CORE_DUMP
|
||||
#define ELF_EXEC_PAGESIZE 4096
|
||||
|
||||
#endif /* _TARGET_ARCH_ELF_H_ */
|
||||
#endif /* TARGET_ARCH_ELF_H */
|
||||
|
@ -18,8 +18,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_REG_H_
|
||||
#define _TARGET_ARCH_REG_H_
|
||||
#ifndef TARGET_ARCH_REG_H
|
||||
#define TARGET_ARCH_REG_H
|
||||
|
||||
/* See sys/i386/include/reg.h */
|
||||
typedef struct target_reg {
|
||||
@ -79,4 +79,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUX86State *env)
|
||||
regs->r_gs = env->segs[R_GS].selector & 0xffff;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_REG_H_ */
|
||||
#endif /* TARGET_ARCH_REG_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
||||
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||
#define TARGET_ARCH_SIGTRAMP_H
|
||||
|
||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
unsigned sys_sigreturn)
|
||||
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
|
||||
#endif /* TARGET_ARCH_SIGTRAMP_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
#ifndef TARGET_ARCH_SYSARCH_H
|
||||
#define TARGET_ARCH_SYSARCH_H
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
@ -74,4 +74,4 @@ static inline void do_freebsd_arch_print_sysarch(
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /* !BSD_USER_ARCH_SYSARCH_H_ */
|
||||
#endif /* TARGET_ARCH_SYSARCH_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_THREAD_H_
|
||||
#define _TARGET_ARCH_THREAD_H_
|
||||
|
||||
#ifndef TARGET_ARCH_THREAD_H
|
||||
#define TARGET_ARCH_THREAD_H
|
||||
|
||||
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
|
||||
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
|
||||
@ -44,4 +45,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
|
||||
regs->edx = 0;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_THREAD_H_ */
|
||||
#endif /* TARGET_ARCH_THREAD_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_VMPARAM_H_
|
||||
#define _TARGET_ARCH_VMPARAM_H_
|
||||
|
||||
#ifndef TARGET_ARCH_VMPARAM_H
|
||||
#define TARGET_ARCH_VMPARAM_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
|
||||
state->regs[R_EDX] = retval2;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_VMPARAM_H_ */
|
||||
#endif /* TARGET_ARCH_VMPARAM_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _HOST_OS_H_
|
||||
#define _HOST_OS_H_
|
||||
#ifndef HOST_OS_H
|
||||
#define HOST_OS_H
|
||||
|
||||
#define HOST_DEFAULT_BSD_TYPE target_netbsd
|
||||
|
||||
#endif /*!_HOST_OS_H_ */
|
||||
#endif /* HOST_OS_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_OS_ELF_H_
|
||||
#define _TARGET_OS_ELF_H_
|
||||
|
||||
#ifndef TARGET_OS_ELF_H
|
||||
#define TARGET_OS_ELF_H
|
||||
|
||||
#include "target_arch_elf.h"
|
||||
#include "elf.h"
|
||||
@ -143,4 +144,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
|
||||
return sp;
|
||||
}
|
||||
|
||||
#endif /* _TARGET_OS_ELF_H_ */
|
||||
#endif /* TARGET_OS_ELF_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef _TARGET_OS_SIGINFO_H_
|
||||
#define _TARGET_OS_SIGINFO_H_
|
||||
#ifndef TARGET_OS_SIGINFO_H
|
||||
#define TARGET_OS_SIGINFO_H
|
||||
|
||||
#define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
|
||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
||||
@ -79,4 +79,4 @@ typedef union target_siginfo {
|
||||
#define TARGET_TRAP_TRACE 2
|
||||
|
||||
|
||||
#endif /* ! _TARGET_OS_SIGINFO_H_ */
|
||||
#endif /* TARGET_OS_SIGINFO_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef _TARGET_OS_SIGNAL_H_
|
||||
#define _TARGET_OS_SIGNAL_H_
|
||||
#ifndef TARGET_OS_SIGNAL_H
|
||||
#define TARGET_OS_SIGNAL_H
|
||||
|
||||
#include "target_os_siginfo.h"
|
||||
#include "target_arch_signal.h"
|
||||
@ -66,4 +66,4 @@
|
||||
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack */
|
||||
|
||||
#endif /* !_TARGET_OS_SIGNAL_H_ */
|
||||
#endif /* TARGET_OS_SIGNAL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_STACK_H_
|
||||
#define _TARGET_OS_STACK_H_
|
||||
#ifndef TARGET_OS_STACK_H
|
||||
#define TARGET_OS_STACK_H
|
||||
|
||||
#include "target_arch_sigtramp.h"
|
||||
|
||||
@ -53,4 +53,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm, abi_ulong *p,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_OS_STACK_H_ */
|
||||
#endif /* TARGET_OS_STACK_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_THREAD_H_
|
||||
#define _TARGET_OS_THREAD_H_
|
||||
#ifndef TARGET_OS_THREAD_H
|
||||
#define TARGET_OS_THREAD_H
|
||||
|
||||
#include "target_arch_thread.h"
|
||||
|
||||
#endif /* !_TARGET_OS_THREAD_H_ */
|
||||
#endif /* TARGET_OS_THREAD_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _HOST_OS_H_
|
||||
#define _HOST_OS_H_
|
||||
#ifndef HOST_OS_H
|
||||
#define HOST_OS_H
|
||||
|
||||
#define HOST_DEFAULT_BSD_TYPE target_openbsd
|
||||
|
||||
#endif /*!_HOST_OS_H_ */
|
||||
#endif /* HOST_OS_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_OS_ELF_H_
|
||||
#define _TARGET_OS_ELF_H_
|
||||
|
||||
#ifndef TARGET_OS_ELF_H
|
||||
#define TARGET_OS_ELF_H
|
||||
|
||||
#include "target_arch_elf.h"
|
||||
#include "elf.h"
|
||||
@ -143,4 +144,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
|
||||
return sp;
|
||||
}
|
||||
|
||||
#endif /* _TARGET_OS_ELF_H_ */
|
||||
#endif /* TARGET_OS_ELF_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef _TARGET_OS_SIGINFO_H_
|
||||
#define _TARGET_OS_SIGINFO_H_
|
||||
#ifndef TARGET_OS_SIGINFO_H
|
||||
#define TARGET_OS_SIGINFO_H
|
||||
|
||||
#define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
|
||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
||||
@ -79,4 +79,4 @@ typedef union target_siginfo {
|
||||
#define TARGET_TRAP_TRACE 2
|
||||
|
||||
|
||||
#endif /* ! _TARGET_OS_SIGINFO_H_ */
|
||||
#endif /* TARGET_OS_SIGINFO_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef _TARGET_OS_SIGNAL_H_
|
||||
#define _TARGET_OS_SIGNAL_H_
|
||||
#ifndef TARGET_OS_SIGNAL_H
|
||||
#define TARGET_OS_SIGNAL_H
|
||||
|
||||
#include "target_os_siginfo.h"
|
||||
#include "target_arch_signal.h"
|
||||
@ -66,4 +66,4 @@
|
||||
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack */
|
||||
|
||||
#endif /* !_TARGET_OS_SIGNAL_H_ */
|
||||
#endif /* TARGET_OS_SIGNAL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_STACK_H_
|
||||
#define _TARGET_OS_STACK_H_
|
||||
#ifndef TARGET_OS_STACK_H
|
||||
#define TARGET_OS_STACK_H
|
||||
|
||||
#include "target_arch_sigtramp.h"
|
||||
|
||||
@ -53,4 +53,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm, abi_ulong *p,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_OS_STACK_H_ */
|
||||
#endif /* TARGET_OS_STACK_H */
|
||||
|
@ -17,9 +17,9 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_OS_THREAD_H_
|
||||
#define _TARGET_OS_THREAD_H_
|
||||
#ifndef TARGET_OS_THREAD_H
|
||||
#define TARGET_OS_THREAD_H
|
||||
|
||||
#include "target_arch_thread.h"
|
||||
|
||||
#endif /* !_TARGET_OS_THREAD_H_ */
|
||||
#endif /* TARGET_OS_THREAD_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _SYSCALL_DEFS_H_
|
||||
#define _SYSCALL_DEFS_H_
|
||||
#ifndef SYSCALL_DEFS_H
|
||||
#define SYSCALL_DEFS_H
|
||||
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/resource.h>
|
||||
@ -226,4 +226,4 @@ type safe_##name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
|
||||
return safe_syscall(SYS_##name, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
}
|
||||
|
||||
#endif /* ! _SYSCALL_DEFS_H_ */
|
||||
#endif /* SYSCALL_DEFS_H */
|
||||
|
@ -17,5 +17,5 @@ static inline bool regpairs_aligned(void *cpu_env)
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* ! TARGET_H */
|
||||
#endif /* TARGET_H */
|
||||
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_H_
|
||||
#define _TARGET_ARCH_H_
|
||||
#ifndef TARGET_ARCH_H
|
||||
#define TARGET_ARCH_H
|
||||
|
||||
/* target_arch_cpu.c */
|
||||
void bsd_x86_64_write_dt(void *ptr, unsigned long addr, unsigned long limit,
|
||||
@ -28,4 +28,4 @@ void bsd_x86_64_set_idt_base(uint64_t base);
|
||||
|
||||
#define target_cpu_set_tls(env, newtls)
|
||||
|
||||
#endif /* !_TARGET_ARCH_H_ */
|
||||
#endif /* TARGET_ARCH_H */
|
||||
|
@ -16,8 +16,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_CPU_H_
|
||||
#define _TARGET_ARCH_CPU_H_
|
||||
#ifndef TARGET_ARCH_CPU_H
|
||||
#define TARGET_ARCH_CPU_H
|
||||
|
||||
#include "target_arch.h"
|
||||
#include "signal-common.h"
|
||||
@ -174,4 +174,4 @@ static inline void target_cpu_reset(CPUArchState *env)
|
||||
cpu_reset(env_cpu(env));
|
||||
}
|
||||
|
||||
#endif /* ! _TARGET_ARCH_CPU_H_ */
|
||||
#endif /* TARGET_ARCH_CPU_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_ELF_H_
|
||||
#define _TARGET_ARCH_ELF_H_
|
||||
|
||||
#ifndef TARGET_ARCH_ELF_H
|
||||
#define TARGET_ARCH_ELF_H
|
||||
|
||||
#define ELF_START_MMAP 0x2aaaaab000ULL
|
||||
#define ELF_ET_DYN_LOAD_ADDR 0x01021000
|
||||
@ -32,4 +33,4 @@
|
||||
#define USE_ELF_CORE_DUMP
|
||||
#define ELF_EXEC_PAGESIZE 4096
|
||||
|
||||
#endif /* _TARGET_ARCH_ELF_H_ */
|
||||
#endif /* TARGET_ARCH_ELF_H */
|
||||
|
@ -18,8 +18,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_REG_H_
|
||||
#define _TARGET_ARCH_REG_H_
|
||||
#ifndef TARGET_ARCH_REG_H
|
||||
#define TARGET_ARCH_REG_H
|
||||
|
||||
/* See sys/amd64/include/reg.h */
|
||||
typedef struct target_reg {
|
||||
@ -89,4 +89,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUX86State *env)
|
||||
regs->r_ss = env->segs[R_SS].selector & 0xffff;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_REG_H_ */
|
||||
#endif /* TARGET_ARCH_REG_H */
|
||||
|
@ -15,8 +15,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_SIGNAL_H_
|
||||
#define _TARGET_ARCH_SIGNAL_H_
|
||||
|
||||
#ifndef TARGET_ARCH_SIGNAL_H
|
||||
#define TARGET_ARCH_SIGNAL_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
@ -96,4 +97,4 @@ struct target_sigframe {
|
||||
uint32_t __spare__[2];
|
||||
};
|
||||
|
||||
#endif /* !TARGET_ARCH_SIGNAL_H_ */
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
@ -17,8 +17,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
||||
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||
#define TARGET_ARCH_SIGTRAMP_H
|
||||
|
||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
unsigned sys_sigreturn)
|
||||
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
|
||||
#endif /* TARGET_ARCH_SIGTRAMP_H */
|
||||
|
@ -16,8 +16,8 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
#ifndef TARGET_ARCH_SYSARCH_H
|
||||
#define TARGET_ARCH_SYSARCH_H
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
@ -73,4 +73,4 @@ static inline void do_freebsd_arch_print_sysarch(
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /*! BSD_USER_ARCH_SYSARCH_H_ */
|
||||
#endif /* TARGET_ARCH_SYSARCH_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_THREAD_H_
|
||||
#define _TARGET_ARCH_THREAD_H_
|
||||
|
||||
#ifndef TARGET_ARCH_THREAD_H
|
||||
#define TARGET_ARCH_THREAD_H
|
||||
|
||||
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
|
||||
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
|
||||
@ -35,4 +36,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
|
||||
regs->rdi = infop->start_stack;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_THREAD_H_ */
|
||||
#endif /* TARGET_ARCH_THREAD_H */
|
||||
|
@ -16,8 +16,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _TARGET_ARCH_VMPARAM_H_
|
||||
#define _TARGET_ARCH_VMPARAM_H_
|
||||
|
||||
#ifndef TARGET_ARCH_VMPARAM_H
|
||||
#define TARGET_ARCH_VMPARAM_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
|
||||
state->regs[R_EDX] = retval2;
|
||||
}
|
||||
|
||||
#endif /* !_TARGET_ARCH_VMPARAM_H_ */
|
||||
#endif /* TARGET_ARCH_VMPARAM_H */
|
||||
|
1
capstone
1
capstone
@ -1 +0,0 @@
|
||||
Subproject commit f8b1b833015a4ae47110ed068e0deb7106ced66d
|
@ -122,7 +122,7 @@ int io_channel_send_full(QIOChannel *ioc,
|
||||
|
||||
ret = qio_channel_writev_full(
|
||||
ioc, &iov, 1,
|
||||
fds, nfds, NULL);
|
||||
fds, nfds, 0, NULL);
|
||||
if (ret == QIO_CHANNEL_ERR_BLOCK) {
|
||||
if (offset) {
|
||||
return offset;
|
||||
|
@ -21,6 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef CHARDEV_INTERNAL_H
|
||||
#define CHARDEV_INTERNAL_H
|
||||
|
||||
@ -64,4 +65,4 @@ void mux_chr_send_all_event(Chardev *chr, QEMUChrEvent event);
|
||||
|
||||
Object *get_chardevs_root(void);
|
||||
|
||||
#endif /* CHAR_MUX_H */
|
||||
#endif /* CHARDEV_INTERNAL_H */
|
||||
|
@ -6,4 +6,4 @@
|
||||
|
||||
# Boards:
|
||||
#
|
||||
CONFIG_DINO=y
|
||||
CONFIG_HPPA_B160L=y
|
||||
|
3
configs/devices/loongarch64-softmmu/default.mak
Normal file
3
configs/devices/loongarch64-softmmu/default.mak
Normal file
@ -0,0 +1,3 @@
|
||||
# Default configuration for loongarch64-softmmu
|
||||
|
||||
CONFIG_LOONGARCH_VIRT=y
|
4
configs/targets/loongarch64-softmmu.mak
Normal file
4
configs/targets/loongarch64-softmmu.mak
Normal file
@ -0,0 +1,4 @@
|
||||
TARGET_ARCH=loongarch64
|
||||
TARGET_BASE_ARCH=loongarch
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_XML_FILES= gdb-xml/loongarch-base64.xml gdb-xml/loongarch-fpu64.xml
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user