merge
This commit is contained in:
commit
e08af84b06
@ -12,7 +12,7 @@ windows_msys2_task:
|
|||||||
CIRRUS_SHELL: powershell
|
CIRRUS_SHELL: powershell
|
||||||
MSYS: winsymlinks:nativestrict
|
MSYS: winsymlinks:nativestrict
|
||||||
MSYSTEM: MINGW64
|
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_FINGERPRINT: 0
|
||||||
MSYS2_PACKAGES: "
|
MSYS2_PACKAGES: "
|
||||||
diffutils git grep make pkg-config sed
|
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:
|
.native_build_job_template:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
before_script:
|
before_script:
|
||||||
@ -26,7 +27,8 @@
|
|||||||
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
.native_test_job_template:
|
.common_test_job_template:
|
||||||
|
extends: .base_job_template
|
||||||
stage: test
|
stage: test
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
script:
|
script:
|
||||||
@ -37,8 +39,18 @@
|
|||||||
# Avoid recompiling by hiding ninja with NINJA=":"
|
# Avoid recompiling by hiding ninja with NINJA=":"
|
||||||
- make NINJA=":" $MAKE_CHECK_ARGS
|
- 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:
|
.avocado_test_job_template:
|
||||||
extends: .native_test_job_template
|
extends: .common_test_job_template
|
||||||
cache:
|
cache:
|
||||||
key: "${CI_JOB_NAME}-cache"
|
key: "${CI_JOB_NAME}-cache"
|
||||||
paths:
|
paths:
|
||||||
@ -67,15 +79,5 @@
|
|||||||
after_script:
|
after_script:
|
||||||
- cd build
|
- cd build
|
||||||
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
||||||
rules:
|
variables:
|
||||||
# Only run these jobs if running on the mainstream namespace,
|
QEMU_JOB_AVOCADO: 1
|
||||||
# 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
|
|
||||||
|
@ -42,6 +42,7 @@ build-system-ubuntu:
|
|||||||
variables:
|
variables:
|
||||||
IMAGE: ubuntu2004
|
IMAGE: ubuntu2004
|
||||||
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
|
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
|
||||||
|
--enable-capstone
|
||||||
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
|
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
|
||||||
microblazeel-softmmu mips64el-softmmu
|
microblazeel-softmmu mips64el-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
@ -109,7 +110,8 @@ crash-test-debian:
|
|||||||
IMAGE: debian-amd64
|
IMAGE: debian-amd64
|
||||||
script:
|
script:
|
||||||
- cd build
|
- 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:
|
build-system-fedora:
|
||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
@ -118,7 +120,7 @@ build-system-fedora:
|
|||||||
variables:
|
variables:
|
||||||
IMAGE: fedora
|
IMAGE: fedora
|
||||||
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
|
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
|
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
|
||||||
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
@ -154,8 +156,9 @@ crash-test-fedora:
|
|||||||
IMAGE: fedora
|
IMAGE: fedora
|
||||||
script:
|
script:
|
||||||
- cd build
|
- cd build
|
||||||
- scripts/device-crash-test -q ./qemu-system-ppc
|
- make check-venv
|
||||||
- scripts/device-crash-test -q ./qemu-system-riscv32
|
- 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:
|
build-system-centos:
|
||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
@ -359,12 +362,11 @@ build-cfi-aarch64:
|
|||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
rules:
|
variables:
|
||||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
# 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
|
# the constrained containers of the shared runners. Thus this is marked as
|
||||||
# manual until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
- when: manual
|
QEMU_JOB_SKIPPED: 1
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
check-cfi-aarch64:
|
check-cfi-aarch64:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -401,12 +403,11 @@ build-cfi-ppc64-s390x:
|
|||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
rules:
|
variables:
|
||||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
# 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
|
# the constrained containers of the shared runners. Thus this is marked as
|
||||||
# manual until the situation has been solved.
|
# skipped until the situation has been solved.
|
||||||
- when: manual
|
QEMU_JOB_SKIPPED: 1
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
check-cfi-ppc64-s390x:
|
check-cfi-ppc64-s390x:
|
||||||
extends: .native_test_job_template
|
extends: .native_test_job_template
|
||||||
@ -578,6 +579,7 @@ build-without-default-features:
|
|||||||
MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
|
MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
|
||||||
|
|
||||||
build-libvhost-user:
|
build-libvhost-user:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
|
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
|
||||||
needs:
|
needs:
|
||||||
@ -594,10 +596,13 @@ build-tools-and-docs-debian:
|
|||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-debian-container
|
job: amd64-debian-container
|
||||||
|
# when running on 'master' we use pre-existing container
|
||||||
|
optional: true
|
||||||
variables:
|
variables:
|
||||||
IMAGE: debian-amd64
|
IMAGE: debian-amd64
|
||||||
MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
|
MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
|
||||||
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
||||||
|
QEMU_JOB_PUBLISH: 1
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
@ -617,6 +622,7 @@ build-tools-and-docs-debian:
|
|||||||
# that users can see the results of their commits, regardless
|
# that users can see the results of their commits, regardless
|
||||||
# of what topic branch they're currently using
|
# of what topic branch they're currently using
|
||||||
pages:
|
pages:
|
||||||
|
extends: .base_job_template
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
|
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
@ -634,10 +640,5 @@ pages:
|
|||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
rules:
|
variables:
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
QEMU_JOB_PUBLISH: 1
|
||||||
when: on_success
|
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
|
||||||
when: never
|
|
||||||
- if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
|
|
||||||
when: on_success
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
# special care, because we can't just override it at the GitLab CI job
|
# special care, because we can't just override it at the GitLab CI job
|
||||||
# definition level or we risk breaking it completely.
|
# definition level or we risk breaking it completely.
|
||||||
.cirrus_build_job:
|
.cirrus_build_job:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||||
needs: []
|
needs: []
|
||||||
@ -40,11 +41,8 @@
|
|||||||
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||||
- cat .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
|
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||||
rules:
|
variables:
|
||||||
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
|
QEMU_JOB_CIRRUS: 1
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
|
|
||||||
when: never
|
|
||||||
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
|
||||||
|
|
||||||
x64-freebsd-12-build:
|
x64-freebsd-12-build:
|
||||||
extends: .cirrus_build_job
|
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
|
# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
|
||||||
.cirrus_kvm_job:
|
.cirrus_kvm_job:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||||
needs: []
|
needs: []
|
||||||
timeout: 80m
|
timeout: 80m
|
||||||
allow_failure: true
|
|
||||||
script:
|
script:
|
||||||
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
||||||
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|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
|
<.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||||
- cat .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
|
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||||
rules:
|
variables:
|
||||||
- when: manual
|
QEMU_JOB_CIRRUS: 1
|
||||||
|
QEMU_JOB_OPTIONAL: 1
|
||||||
|
|
||||||
|
|
||||||
x86-netbsd:
|
x86-netbsd:
|
||||||
extends: .cirrus_kvm_job
|
extends: .cirrus_kvm_job
|
||||||
|
@ -27,30 +27,26 @@ arm64-debian-cross-container:
|
|||||||
|
|
||||||
armel-debian-cross-container:
|
armel-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-armel-cross
|
NAME: debian-armel-cross
|
||||||
|
|
||||||
armhf-debian-cross-container:
|
armhf-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-armhf-cross
|
NAME: debian-armhf-cross
|
||||||
|
|
||||||
# We never want to build hexagon in the CI system and by default we
|
# 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.
|
# always want to refer to the master registry where it lives.
|
||||||
hexagon-cross-container:
|
hexagon-cross-container:
|
||||||
|
extends: .base_job_template
|
||||||
image: docker:stable
|
image: docker:stable
|
||||||
stage: containers
|
stage: containers
|
||||||
rules:
|
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
|
||||||
when: never
|
|
||||||
- when: always
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-hexagon-cross
|
NAME: debian-hexagon-cross
|
||||||
GIT_DEPTH: 1
|
GIT_DEPTH: 1
|
||||||
|
QEMU_JOB_ONLY_FORKS: 1
|
||||||
services:
|
services:
|
||||||
- docker:dind
|
- docker:dind
|
||||||
before_script:
|
before_script:
|
||||||
@ -90,8 +86,7 @@ mips64-debian-cross-container:
|
|||||||
|
|
||||||
mips64el-debian-cross-container:
|
mips64el-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-mips64el-cross
|
NAME: debian-mips64el-cross
|
||||||
|
|
||||||
@ -104,8 +99,7 @@ mips-debian-cross-container:
|
|||||||
|
|
||||||
mipsel-debian-cross-container:
|
mipsel-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-mipsel-cross
|
NAME: debian-mipsel-cross
|
||||||
|
|
||||||
@ -118,14 +112,13 @@ powerpc-test-cross-container:
|
|||||||
|
|
||||||
ppc64el-debian-cross-container:
|
ppc64el-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-ppc64el-cross
|
NAME: debian-ppc64el-cross
|
||||||
|
|
||||||
riscv64-debian-cross-container:
|
riscv64-debian-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
# as we are currently based on 'sid/unstable' we may break so...
|
# as we are currently based on 'sid/unstable' we may break so...
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
variables:
|
variables:
|
||||||
@ -135,6 +128,7 @@ riscv64-debian-cross-container:
|
|||||||
riscv64-debian-test-cross-container:
|
riscv64-debian-test-cross-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers-layer2
|
||||||
|
needs: ['amd64-debian11-container']
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-riscv64-test-cross
|
NAME: debian-riscv64-test-cross
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.container_job_template:
|
.container_job_template:
|
||||||
|
extends: .base_job_template
|
||||||
image: docker:stable
|
image: docker:stable
|
||||||
stage: containers
|
stage: containers
|
||||||
services:
|
services:
|
||||||
|
@ -14,16 +14,10 @@ amd64-debian11-container:
|
|||||||
|
|
||||||
amd64-debian-container:
|
amd64-debian-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
stage: containers-layer2
|
stage: containers
|
||||||
needs: ['amd64-debian10-container']
|
|
||||||
variables:
|
variables:
|
||||||
NAME: debian-amd64
|
NAME: debian-amd64
|
||||||
|
|
||||||
amd64-ubuntu1804-container:
|
|
||||||
extends: .container_job_template
|
|
||||||
variables:
|
|
||||||
NAME: ubuntu1804
|
|
||||||
|
|
||||||
amd64-ubuntu2004-container:
|
amd64-ubuntu2004-container:
|
||||||
extends: .container_job_template
|
extends: .container_job_template
|
||||||
variables:
|
variables:
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.cross_system_build_job:
|
.cross_system_build_job:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
timeout: 80m
|
timeout: 80m
|
||||||
@ -24,6 +25,7 @@
|
|||||||
# KVM), and set extra options (such disabling other accelerators) via the
|
# KVM), and set extra options (such disabling other accelerators) via the
|
||||||
# $EXTRA_CONFIGURE_OPTS variable.
|
# $EXTRA_CONFIGURE_OPTS variable.
|
||||||
.cross_accel_build_job:
|
.cross_accel_build_job:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
timeout: 30m
|
timeout: 30m
|
||||||
@ -36,6 +38,7 @@
|
|||||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||||
|
|
||||||
.cross_user_build_job:
|
.cross_user_build_job:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
script:
|
script:
|
||||||
|
@ -62,6 +62,8 @@ cross-i386-user:
|
|||||||
cross-i386-tci:
|
cross-i386-tci:
|
||||||
extends: .cross_accel_build_job
|
extends: .cross_accel_build_job
|
||||||
timeout: 60m
|
timeout: 60m
|
||||||
|
needs:
|
||||||
|
job: i386-fedora-cross-container
|
||||||
variables:
|
variables:
|
||||||
IMAGE: fedora-i386-cross
|
IMAGE: fedora-i386-cross
|
||||||
ACCEL: tcg-interpreter
|
ACCEL: tcg-interpreter
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||||
# setup by the scripts/ci/setup/qemu/build-environment.yml task
|
# 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:
|
ubuntu-20.04-aarch32-all:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# All ubuntu-20.04 jobs should run successfully in an environment
|
# All ubuntu-20.04 jobs should run successfully in an environment
|
||||||
# setup by the scripts/ci/setup/qemu/build-environment.yml task
|
# 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:
|
ubuntu-20.04-aarch64-all-linux-static:
|
||||||
needs: []
|
needs: []
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
# https://gitlab.com/qemu-project/qemu/-/pipelines
|
# https://gitlab.com/qemu-project/qemu/-/pipelines
|
||||||
|
|
||||||
include:
|
include:
|
||||||
|
- local: '/.gitlab-ci.d/base.yml'
|
||||||
- local: '/.gitlab-ci.d/stages.yml'
|
- local: '/.gitlab-ci.d/stages.yml'
|
||||||
- local: '/.gitlab-ci.d/edk2.yml'
|
- local: '/.gitlab-ci.d/edk2.yml'
|
||||||
- local: '/.gitlab-ci.d/opensbi.yml'
|
- local: '/.gitlab-ci.d/opensbi.yml'
|
||||||
|
@ -1,32 +1,30 @@
|
|||||||
check-patch:
|
check-patch:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
|
image: python:3.10-alpine
|
||||||
needs:
|
needs: []
|
||||||
job: amd64-centos8-container
|
|
||||||
script:
|
script:
|
||||||
- .gitlab-ci.d/check-patch.py
|
- .gitlab-ci.d/check-patch.py
|
||||||
variables:
|
variables:
|
||||||
GIT_DEPTH: 1000
|
GIT_DEPTH: 1000
|
||||||
rules:
|
QEMU_JOB_ONLY_FORKS: 1
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
before_script:
|
||||||
when: never
|
- apk -U add git perl
|
||||||
- when: on_success
|
allow_failure: true
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
check-dco:
|
check-dco:
|
||||||
|
extends: .base_job_template
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
|
image: python:3.10-alpine
|
||||||
needs:
|
needs: []
|
||||||
job: amd64-centos8-container
|
|
||||||
script: .gitlab-ci.d/check-dco.py
|
script: .gitlab-ci.d/check-dco.py
|
||||||
variables:
|
variables:
|
||||||
GIT_DEPTH: 1000
|
GIT_DEPTH: 1000
|
||||||
rules:
|
before_script:
|
||||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
- apk -U add git
|
||||||
when: never
|
|
||||||
- when: on_success
|
|
||||||
|
|
||||||
check-python-pipenv:
|
check-python-pipenv:
|
||||||
|
extends: .base_job_template
|
||||||
stage: test
|
stage: test
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||||
script:
|
script:
|
||||||
@ -37,6 +35,7 @@ check-python-pipenv:
|
|||||||
job: python-container
|
job: python-container
|
||||||
|
|
||||||
check-python-tox:
|
check-python-tox:
|
||||||
|
extends: .base_job_template
|
||||||
stage: test
|
stage: test
|
||||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||||
script:
|
script:
|
||||||
@ -44,8 +43,6 @@ check-python-tox:
|
|||||||
variables:
|
variables:
|
||||||
GIT_DEPTH: 1
|
GIT_DEPTH: 1
|
||||||
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
|
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
|
||||||
|
QEMU_JOB_OPTIONAL: 1
|
||||||
needs:
|
needs:
|
||||||
job: python-container
|
job: python-container
|
||||||
rules:
|
|
||||||
- when: manual
|
|
||||||
allow_failure: true
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.shared_msys2_builder:
|
.shared_msys2_builder:
|
||||||
|
extends: .base_job_template
|
||||||
tags:
|
tags:
|
||||||
- shared-windows
|
- shared-windows
|
||||||
- windows
|
- windows
|
||||||
@ -16,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
- If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
|
- If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
|
||||||
Invoke-WebRequest
|
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"
|
-outfile "msys64\var\cache\msys2.exe"
|
||||||
}
|
}
|
||||||
- msys64\var\cache\msys2.exe -y
|
- msys64\var\cache\msys2.exe -y
|
||||||
@ -57,7 +58,7 @@ msys2-64bit:
|
|||||||
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
||||||
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
|
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
|
||||||
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
|
- .\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 "sed -i '/^ROMS=/d' build/config-host.mak"
|
||||||
- .\msys64\usr\bin\bash -lc 'make -j2'
|
- .\msys64\usr\bin\bash -lc 'make -j2'
|
||||||
- .\msys64\usr\bin\bash -lc 'make check'
|
- .\msys64\usr\bin\bash -lc 'make check'
|
||||||
@ -90,7 +91,6 @@ msys2-32bit:
|
|||||||
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
|
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
|
||||||
- mkdir output
|
- mkdir output
|
||||||
- cd output
|
- cd output
|
||||||
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu
|
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu"
|
||||||
--enable-capstone=system"
|
|
||||||
- ..\msys64\usr\bin\bash -lc 'make -j2'
|
- ..\msys64\usr\bin\bash -lc 'make -j2'
|
||||||
- ..\msys64\usr\bin\bash -lc 'make check'
|
- ..\msys64\usr\bin\bash -lc 'make check'
|
||||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -31,9 +31,6 @@
|
|||||||
[submodule "ui/keycodemapdb"]
|
[submodule "ui/keycodemapdb"]
|
||||||
path = ui/keycodemapdb
|
path = ui/keycodemapdb
|
||||||
url = https://gitlab.com/qemu-project/keycodemapdb.git
|
url = https://gitlab.com/qemu-project/keycodemapdb.git
|
||||||
[submodule "capstone"]
|
|
||||||
path = capstone
|
|
||||||
url = https://gitlab.com/qemu-project/capstone.git
|
|
||||||
[submodule "roms/seabios-hppa"]
|
[submodule "roms/seabios-hppa"]
|
||||||
path = roms/seabios-hppa
|
path = roms/seabios-hppa
|
||||||
url = https://gitlab.com/qemu-project/seabios-hppa.git
|
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> <chenhc@lemote.com>
|
||||||
Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn>
|
Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn>
|
||||||
James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
|
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>
|
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@mips.com>
|
||||||
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
|
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
|
||||||
|
@ -22,15 +22,12 @@ config TPM
|
|||||||
|
|
||||||
config VHOST_USER
|
config VHOST_USER
|
||||||
bool
|
bool
|
||||||
select VHOST
|
|
||||||
|
|
||||||
config VHOST_VDPA
|
config VHOST_VDPA
|
||||||
bool
|
bool
|
||||||
select VHOST
|
|
||||||
|
|
||||||
config VHOST_KERNEL
|
config VHOST_KERNEL
|
||||||
bool
|
bool
|
||||||
select VHOST
|
|
||||||
|
|
||||||
config VIRTFS
|
config VIRTFS
|
||||||
bool
|
bool
|
||||||
|
57
MAINTAINERS
57
MAINTAINERS
@ -165,7 +165,6 @@ F: tests/qtest/arm-cpu-features.c
|
|||||||
F: hw/arm/
|
F: hw/arm/
|
||||||
F: hw/cpu/a*mpcore.c
|
F: hw/cpu/a*mpcore.c
|
||||||
F: include/hw/cpu/a*mpcore.h
|
F: include/hw/cpu/a*mpcore.h
|
||||||
F: disas/arm.c
|
|
||||||
F: disas/arm-a64.cc
|
F: disas/arm-a64.cc
|
||||||
F: disas/libvixl/
|
F: disas/libvixl/
|
||||||
F: docs/system/target-arm.rst
|
F: docs/system/target-arm.rst
|
||||||
@ -213,6 +212,13 @@ S: Maintained
|
|||||||
F: target/hppa/
|
F: target/hppa/
|
||||||
F: disas/hppa.c
|
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
|
M68K TCG CPUs
|
||||||
M: Laurent Vivier <laurent@vivier.eu>
|
M: Laurent Vivier <laurent@vivier.eu>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -272,7 +278,6 @@ F: target/ppc/
|
|||||||
F: hw/ppc/ppc.c
|
F: hw/ppc/ppc.c
|
||||||
F: hw/ppc/ppc_booke.c
|
F: hw/ppc/ppc_booke.c
|
||||||
F: include/hw/ppc/ppc.h
|
F: include/hw/ppc/ppc.h
|
||||||
F: disas/ppc.c
|
|
||||||
|
|
||||||
RISC-V TCG CPUs
|
RISC-V TCG CPUs
|
||||||
M: Palmer Dabbelt <palmer@dabbelt.com>
|
M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||||
@ -335,7 +340,6 @@ F: target/i386/tcg/
|
|||||||
F: tests/tcg/i386/
|
F: tests/tcg/i386/
|
||||||
F: tests/tcg/x86_64/
|
F: tests/tcg/x86_64/
|
||||||
F: hw/i386/
|
F: hw/i386/
|
||||||
F: disas/i386.c
|
|
||||||
F: docs/system/cpu-models-x86*
|
F: docs/system/cpu-models-x86*
|
||||||
T: git https://gitlab.com/ehabkost/qemu.git x86-next
|
T: git https://gitlab.com/ehabkost/qemu.git x86-next
|
||||||
|
|
||||||
@ -491,7 +495,6 @@ Guest CPU Cores (HAXM)
|
|||||||
---------------------
|
---------------------
|
||||||
X86 HAXM CPUs
|
X86 HAXM CPUs
|
||||||
M: Wenchao Wang <wenchao.wang@intel.com>
|
M: Wenchao Wang <wenchao.wang@intel.com>
|
||||||
M: Colin Xu <colin.xu@intel.com>
|
|
||||||
L: haxm-team@intel.com
|
L: haxm-team@intel.com
|
||||||
W: https://github.com/intel/haxm/issues
|
W: https://github.com/intel/haxm/issues
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -889,7 +892,7 @@ F: include/hw/ssi/imx_spi.h
|
|||||||
SBSA-REF
|
SBSA-REF
|
||||||
M: Radoslaw Biernacki <rad@semihalf.com>
|
M: Radoslaw Biernacki <rad@semihalf.com>
|
||||||
M: Peter Maydell <peter.maydell@linaro.org>
|
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
|
L: qemu-arm@nongnu.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: hw/arm/sbsa-ref.c
|
F: hw/arm/sbsa-ref.c
|
||||||
@ -1113,9 +1116,30 @@ S: Odd Fixes
|
|||||||
F: configs/devices/hppa-softmmu/default.mak
|
F: configs/devices/hppa-softmmu/default.mak
|
||||||
F: hw/hppa/
|
F: hw/hppa/
|
||||||
F: hw/net/*i82596*
|
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/net/lasi_82596.h
|
||||||
|
F: include/hw/pci-host/dino.h
|
||||||
F: pc-bios/hppa-firmware.img
|
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
|
M68K Machines
|
||||||
-------------
|
-------------
|
||||||
an5206
|
an5206
|
||||||
@ -1776,6 +1800,12 @@ F: include/hw/block/fdc.h
|
|||||||
F: tests/qtest/fdc-test.c
|
F: tests/qtest/fdc-test.c
|
||||||
T: git https://gitlab.com/jsnow/qemu.git ide
|
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
|
OMAP
|
||||||
M: Peter Maydell <peter.maydell@linaro.org>
|
M: Peter Maydell <peter.maydell@linaro.org>
|
||||||
L: qemu-arm@nongnu.org
|
L: qemu-arm@nongnu.org
|
||||||
@ -2011,8 +2041,7 @@ M: Halil Pasic <pasic@linux.ibm.com>
|
|||||||
M: Eric Farman <farman@linux.ibm.com>
|
M: Eric Farman <farman@linux.ibm.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: hw/s390x/virtio-ccw*.[hc]
|
F: hw/s390x/virtio-ccw*.[hc]
|
||||||
F: hw/s390x/vhost-vsock-ccw.c
|
F: hw/s390x/vhost-*-ccw.c
|
||||||
F: hw/s390x/vhost-user-fs-ccw.c
|
|
||||||
T: git https://gitlab.com/cohuck/qemu.git s390-next
|
T: git https://gitlab.com/cohuck/qemu.git s390-next
|
||||||
T: git https://github.com/borntraeger/qemu.git s390-next
|
T: git https://github.com/borntraeger/qemu.git s390-next
|
||||||
L: qemu-s390x@nongnu.org
|
L: qemu-s390x@nongnu.org
|
||||||
@ -2169,6 +2198,7 @@ Generic Loader
|
|||||||
M: Alistair Francis <alistair@alistair23.me>
|
M: Alistair Francis <alistair@alistair23.me>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: hw/core/generic-loader.c
|
F: hw/core/generic-loader.c
|
||||||
|
F: hw/core/uboot_image.h
|
||||||
F: include/hw/core/generic-loader.h
|
F: include/hw/core/generic-loader.h
|
||||||
F: docs/system/generic-loader.rst
|
F: docs/system/generic-loader.rst
|
||||||
|
|
||||||
@ -2544,6 +2574,13 @@ F: qapi/block*.json
|
|||||||
F: qapi/transaction.json
|
F: qapi/transaction.json
|
||||||
T: git https://repo.or.cz/qemu/armbru.git block-next
|
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
|
Dirty Bitmaps
|
||||||
M: Eric Blake <eblake@redhat.com>
|
M: Eric Blake <eblake@redhat.com>
|
||||||
M: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
|
M: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
|
||||||
@ -3089,7 +3126,7 @@ F: include/qemu/yank.h
|
|||||||
F: qapi/yank.json
|
F: qapi/yank.json
|
||||||
|
|
||||||
COLO Framework
|
COLO Framework
|
||||||
M: zhanghailiang <zhang.zhanghailiang@huawei.com>
|
M: Hailiang Zhang <zhanghailiang@xfusion.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: migration/colo*
|
F: migration/colo*
|
||||||
F: include/migration/colo.h
|
F: include/migration/colo.h
|
||||||
@ -3267,13 +3304,11 @@ M: Richard Henderson <richard.henderson@linaro.org>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
L: qemu-arm@nongnu.org
|
L: qemu-arm@nongnu.org
|
||||||
F: tcg/arm/
|
F: tcg/arm/
|
||||||
F: disas/arm.c
|
|
||||||
|
|
||||||
i386 TCG target
|
i386 TCG target
|
||||||
M: Richard Henderson <richard.henderson@linaro.org>
|
M: Richard Henderson <richard.henderson@linaro.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: tcg/i386/
|
F: tcg/i386/
|
||||||
F: disas/i386.c
|
|
||||||
|
|
||||||
LoongArch64 TCG target
|
LoongArch64 TCG target
|
||||||
M: WANG Xuerui <git@xen0n.name>
|
M: WANG Xuerui <git@xen0n.name>
|
||||||
@ -3293,7 +3328,6 @@ PPC TCG target
|
|||||||
M: Richard Henderson <richard.henderson@linaro.org>
|
M: Richard Henderson <richard.henderson@linaro.org>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: tcg/ppc/
|
F: tcg/ppc/
|
||||||
F: disas/ppc.c
|
|
||||||
|
|
||||||
RISC-V TCG target
|
RISC-V TCG target
|
||||||
M: Palmer Dabbelt <palmer@dabbelt.com>
|
M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||||
@ -3369,6 +3403,7 @@ F: qemu-nbd.*
|
|||||||
F: blockdev-nbd.c
|
F: blockdev-nbd.c
|
||||||
F: docs/interop/nbd.txt
|
F: docs/interop/nbd.txt
|
||||||
F: docs/tools/qemu-nbd.rst
|
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://repo.or.cz/qemu/ericb.git nbd
|
||||||
T: git https://src.openvz.org/scm/~vsementsov/qemu.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)
|
MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq)
|
||||||
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
|
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
|
||||||
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
|
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
|
||||||
|
-d keepdepfile
|
||||||
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
|
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
|
||||||
ninja-cmd-goals += $(foreach t, $(.check.build-suites), $(.check-$t.deps))
|
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))))
|
||||||
ninja-cmd-goals += $(foreach t, $(.bench.build-suites), $(.bench-$t.deps))
|
|
||||||
|
|
||||||
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
|
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
|
||||||
# "ninja -t targets" also lists all prerequisites. If build system
|
# "ninja -t targets" also lists all prerequisites. If build system
|
||||||
@ -160,15 +159,12 @@ $(ninja-targets): run-ninja
|
|||||||
# --output-sync line.
|
# --output-sync line.
|
||||||
run-ninja: config-host.mak
|
run-ninja: config-host.mak
|
||||||
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
|
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
|
||||||
+$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \
|
+$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \
|
||||||
$(NINJAFLAGS) $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
$(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Force configure to re-run if the API symbols are updated
|
|
||||||
ifeq ($(CONFIG_PLUGIN),y)
|
ifeq ($(CONFIG_PLUGIN),y)
|
||||||
config-host.mak: $(SRC_PATH)/plugins/qemu-plugins.symbols
|
|
||||||
|
|
||||||
.PHONY: plugins
|
.PHONY: plugins
|
||||||
plugins:
|
plugins:
|
||||||
$(call quiet-command,\
|
$(call quiet-command,\
|
||||||
|
@ -120,12 +120,12 @@ static void hvf_set_phys_mem(MemoryRegionSection *section, bool add)
|
|||||||
{
|
{
|
||||||
hvf_slot *mem;
|
hvf_slot *mem;
|
||||||
MemoryRegion *area = section->mr;
|
MemoryRegion *area = section->mr;
|
||||||
bool writeable = !area->readonly && !area->rom_device;
|
bool writable = !area->readonly && !area->rom_device;
|
||||||
hv_memory_flags_t flags;
|
hv_memory_flags_t flags;
|
||||||
uint64_t page_size = qemu_real_host_page_size();
|
uint64_t page_size = qemu_real_host_page_size();
|
||||||
|
|
||||||
if (!memory_region_is_ram(area)) {
|
if (!memory_region_is_ram(area)) {
|
||||||
if (writeable) {
|
if (writable) {
|
||||||
return;
|
return;
|
||||||
} else if (!memory_region_is_romd(area)) {
|
} else if (!memory_region_is_romd(area)) {
|
||||||
/*
|
/*
|
||||||
|
@ -1346,13 +1346,13 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
|
|||||||
KVMSlot *mem;
|
KVMSlot *mem;
|
||||||
int err;
|
int err;
|
||||||
MemoryRegion *mr = section->mr;
|
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;
|
hwaddr start_addr, size, slot_size, mr_offset;
|
||||||
ram_addr_t ram_start_offset;
|
ram_addr_t ram_start_offset;
|
||||||
void *ram;
|
void *ram;
|
||||||
|
|
||||||
if (!memory_region_is_ram(mr)) {
|
if (!memory_region_is_ram(mr)) {
|
||||||
if (writeable || !kvm_readonly_mem_allowed) {
|
if (writable || !kvm_readonly_mem_allowed) {
|
||||||
return;
|
return;
|
||||||
} else if (!mr->romd_mode) {
|
} else if (!mr->romd_mode) {
|
||||||
/* If the memory device is not in romd_mode, then we actually want
|
/* 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
|
* Don't interrupt cpu thread, when these events are waiting
|
||||||
* (i.e., there is no checkpoint)
|
* (i.e., there is no checkpoint)
|
||||||
*/
|
*/
|
||||||
if (deadline == 0
|
if (deadline == 0) {
|
||||||
&& (replay_mode != REPLAY_MODE_PLAY || replay_has_checkpoint())) {
|
|
||||||
icount_notify_aio_contexts();
|
icount_notify_aio_contexts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,7 +108,7 @@ void icount_prepare_for_run(CPUState *cpu)
|
|||||||
|
|
||||||
replay_mutex_lock();
|
replay_mutex_lock();
|
||||||
|
|
||||||
if (cpu->icount_budget == 0 && replay_has_checkpoint()) {
|
if (cpu->icount_budget == 0) {
|
||||||
icount_notify_aio_contexts();
|
icount_notify_aio_contexts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
* See the COPYING file in the top-level directory.
|
* See the COPYING file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TCG_CPUS_ICOUNT_H
|
#ifndef TCG_ACCEL_OPS_ICOUNT_H
|
||||||
#define TCG_CPUS_ICOUNT_H
|
#define TCG_ACCEL_OPS_ICOUNT_H
|
||||||
|
|
||||||
void icount_handle_deadline(void);
|
void icount_handle_deadline(void);
|
||||||
void icount_prepare_for_run(CPUState *cpu);
|
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);
|
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.
|
* See the COPYING file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TCG_CPUS_MTTCG_H
|
#ifndef TCG_ACCEL_OPS_MTTCG_H
|
||||||
#define TCG_CPUS_MTTCG_H
|
#define TCG_ACCEL_OPS_MTTCG_H
|
||||||
|
|
||||||
/* kick MTTCG vCPU thread */
|
/* kick MTTCG vCPU thread */
|
||||||
void mttcg_kick_vcpu_thread(CPUState *cpu);
|
void mttcg_kick_vcpu_thread(CPUState *cpu);
|
||||||
@ -16,4 +16,4 @@ void mttcg_kick_vcpu_thread(CPUState *cpu);
|
|||||||
/* start an mttcg vCPU thread */
|
/* start an mttcg vCPU thread */
|
||||||
void mttcg_start_vcpu_thread(CPUState *cpu);
|
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.
|
* See the COPYING file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TCG_CPUS_RR_H
|
#ifndef TCG_ACCEL_OPS_RR_H
|
||||||
#define TCG_CPUS_RR_H
|
#define TCG_ACCEL_OPS_RR_H
|
||||||
|
|
||||||
#define TCG_KICK_PERIOD (NANOSECONDS_PER_SECOND / 10)
|
#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 */
|
/* start the round robin vcpu thread */
|
||||||
void rr_start_vcpu_thread(CPUState *cpu);
|
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.
|
* See the COPYING file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TCG_CPUS_H
|
#ifndef TCG_ACCEL_OPS_H
|
||||||
#define TCG_CPUS_H
|
#define TCG_ACCEL_OPS_H
|
||||||
|
|
||||||
#include "sysemu/cpus.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_handle_interrupt(CPUState *cpu, int mask);
|
||||||
void tcg_cpu_init_cflags(CPUState *cpu, bool parallel);
|
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.
|
* 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
|
* 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
|
* 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
|
* a page that's writable this means we had two threads racing and
|
||||||
* another thread got there first and already made the page writeable;
|
* another thread got there first and already made the page writable;
|
||||||
* so we will retry the access. If we were to call page_unprotect()
|
* 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
|
* 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.
|
* 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)
|
void audio_parse_option(const char *opt)
|
||||||
{
|
{
|
||||||
AudiodevListEntry *e;
|
|
||||||
Audiodev *dev = NULL;
|
Audiodev *dev = NULL;
|
||||||
|
|
||||||
Visitor *v = qobject_input_visitor_new_str(opt, "driver", &error_fatal);
|
Visitor *v = qobject_input_visitor_new_str(opt, "driver", &error_fatal);
|
||||||
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
|
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
|
||||||
visit_free(v);
|
visit_free(v);
|
||||||
|
|
||||||
|
audio_define(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void audio_define(Audiodev *dev)
|
||||||
|
{
|
||||||
|
AudiodevListEntry *e;
|
||||||
|
|
||||||
audio_validate_opts(dev, &error_fatal);
|
audio_validate_opts(dev, &error_fatal);
|
||||||
|
|
||||||
e = g_new0(AudiodevListEntry, 1);
|
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,
|
void audio_sample_from_uint64(void *samples, int pos,
|
||||||
uint64_t left, uint64_t right);
|
uint64_t left, uint64_t right);
|
||||||
|
|
||||||
|
void audio_define(Audiodev *audio);
|
||||||
void audio_parse_option(const char *opt);
|
void audio_parse_option(const char *opt);
|
||||||
void audio_init_audiodevs(void);
|
void audio_init_audiodevs(void);
|
||||||
void audio_legacy_help(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->merge = machine_mem_merge(machine);
|
||||||
backend->dump = machine_dump_guest_core(machine);
|
backend->dump = machine_dump_guest_core(machine);
|
||||||
backend->reserve = true;
|
backend->reserve = true;
|
||||||
backend->prealloc_threads = 1;
|
backend->prealloc_threads = machine->smp.cpus;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void host_memory_backend_post_init(Object *obj)
|
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('rng-random.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('hostmem-file.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_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', 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: gio, if_true: files('dbus-vmstate.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.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)
|
static void rng_backend_complete(UserCreatable *uc, Error **errp)
|
||||||
{
|
{
|
||||||
object_property_set_bool(OBJECT(uc), "opened", true, errp);
|
RngBackend *s = RNG_BACKEND(uc);
|
||||||
}
|
|
||||||
|
|
||||||
static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
|
|
||||||
{
|
|
||||||
RngBackend *s = RNG_BACKEND(obj);
|
|
||||||
RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
|
RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
|
|
||||||
if (value == s->opened) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!value && s->opened) {
|
|
||||||
error_setg(errp, QERR_PERMISSION_DENIED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (k->opened) {
|
if (k->opened) {
|
||||||
k->opened(s, &local_err);
|
k->opened(s, &local_err);
|
||||||
if (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",
|
object_class_property_add_bool(oc, "opened",
|
||||||
rng_backend_prop_get_opened,
|
rng_backend_prop_get_opened,
|
||||||
rng_backend_prop_set_opened);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo rng_backend_info = {
|
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)
|
int bdrv_get_flags(BlockDriverState *bs)
|
||||||
{
|
{
|
||||||
GLOBAL_STATE_CODE();
|
IO_CODE();
|
||||||
return bs->open_flags;
|
return bs->open_flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,11 +22,11 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BLOCK_COPY_ON_READ
|
#ifndef BLOCK_COPY_ON_READ_H
|
||||||
#define BLOCK_COPY_ON_READ
|
#define BLOCK_COPY_ON_READ_H
|
||||||
|
|
||||||
#include "block/block_int.h"
|
#include "block/block_int.h"
|
||||||
|
|
||||||
void bdrv_cor_filter_drop(BlockDriverState *cor_filter_bs);
|
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.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BLOCK_COROUTINES_INT_H
|
#ifndef BLOCK_COROUTINES_H
|
||||||
#define BLOCK_COROUTINES_INT_H
|
#define BLOCK_COROUTINES_H
|
||||||
|
|
||||||
#include "block/block_int.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);
|
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.
|
* 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) {
|
if (req->serialising) {
|
||||||
qatomic_dec(&req->bs->serialising_in_flight);
|
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. */
|
/* Called with s->lock held. */
|
||||||
static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
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();
|
ERRP_GUARD();
|
||||||
BDRVQcow2State *s = bs->opaque;
|
BDRVQcow2State *s = bs->opaque;
|
||||||
@ -1614,50 +1615,52 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open external data file */
|
if (open_data_file) {
|
||||||
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
|
/* Open external data file */
|
||||||
&child_of_bds, BDRV_CHILD_DATA,
|
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
|
||||||
true, errp);
|
&child_of_bds, BDRV_CHILD_DATA,
|
||||||
if (*errp) {
|
true, errp);
|
||||||
ret = -EINVAL;
|
if (*errp) {
|
||||||
goto fail;
|
ret = -EINVAL;
|
||||||
}
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
|
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
|
||||||
if (!s->data_file && s->image_data_file) {
|
if (!s->data_file && s->image_data_file) {
|
||||||
s->data_file = bdrv_open_child(s->image_data_file, options,
|
s->data_file = bdrv_open_child(s->image_data_file, options,
|
||||||
"data-file", bs, &child_of_bds,
|
"data-file", bs, &child_of_bds,
|
||||||
BDRV_CHILD_DATA, false, errp);
|
BDRV_CHILD_DATA, false, errp);
|
||||||
|
if (!s->data_file) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!s->data_file) {
|
if (!s->data_file) {
|
||||||
|
error_setg(errp, "'data-file' is required for this image");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!s->data_file) {
|
|
||||||
error_setg(errp, "'data-file' is required for this image");
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No data here */
|
/* No data here */
|
||||||
bs->file->role &= ~BDRV_CHILD_DATA;
|
bs->file->role &= ~BDRV_CHILD_DATA;
|
||||||
|
|
||||||
/* Must succeed because we have given up permissions if anything */
|
/* Must succeed because we have given up permissions if anything */
|
||||||
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
|
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
|
||||||
} else {
|
} else {
|
||||||
if (s->data_file) {
|
if (s->data_file) {
|
||||||
error_setg(errp, "'data-file' can only be set for images with an "
|
error_setg(errp, "'data-file' can only be set for images with "
|
||||||
"external data file");
|
"an external data file");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->data_file = bs->file;
|
s->data_file = bs->file;
|
||||||
|
|
||||||
if (data_file_is_raw(bs)) {
|
if (data_file_is_raw(bs)) {
|
||||||
error_setg(errp, "data-file-raw requires a data file");
|
error_setg(errp, "data-file-raw requires a data file");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1839,7 +1842,7 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
g_free(s->image_data_file);
|
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);
|
bdrv_unref_child(bs, s->data_file);
|
||||||
s->data_file = NULL;
|
s->data_file = NULL;
|
||||||
}
|
}
|
||||||
@ -1876,7 +1879,8 @@ static void coroutine_fn qcow2_open_entry(void *opaque)
|
|||||||
BDRVQcow2State *s = qoc->bs->opaque;
|
BDRVQcow2State *s = qoc->bs->opaque;
|
||||||
|
|
||||||
qemu_co_mutex_lock(&s->lock);
|
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);
|
qemu_co_mutex_unlock(&s->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2714,7 +2718,7 @@ static int qcow2_inactivate(BlockDriverState *bs)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qcow2_close(BlockDriverState *bs)
|
static void qcow2_do_close(BlockDriverState *bs, bool close_data_file)
|
||||||
{
|
{
|
||||||
BDRVQcow2State *s = bs->opaque;
|
BDRVQcow2State *s = bs->opaque;
|
||||||
qemu_vfree(s->l1_table);
|
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_file);
|
||||||
g_free(s->image_backing_format);
|
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);
|
bdrv_unref_child(bs, s->data_file);
|
||||||
s->data_file = NULL;
|
s->data_file = NULL;
|
||||||
}
|
}
|
||||||
@ -2749,11 +2753,17 @@ static void qcow2_close(BlockDriverState *bs)
|
|||||||
qcow2_free_snapshots(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,
|
static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
ERRP_GUARD();
|
ERRP_GUARD();
|
||||||
BDRVQcow2State *s = bs->opaque;
|
BDRVQcow2State *s = bs->opaque;
|
||||||
|
BdrvChild *data_file;
|
||||||
int flags = s->flags;
|
int flags = s->flags;
|
||||||
QCryptoBlock *crypto = NULL;
|
QCryptoBlock *crypto = NULL;
|
||||||
QDict *options;
|
QDict *options;
|
||||||
@ -2767,14 +2777,24 @@ static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
|
|||||||
crypto = s->crypto;
|
crypto = s->crypto;
|
||||||
s->crypto = NULL;
|
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));
|
memset(s, 0, sizeof(BDRVQcow2State));
|
||||||
|
s->data_file = data_file;
|
||||||
|
|
||||||
options = qdict_clone_shallow(bs->options);
|
options = qdict_clone_shallow(bs->options);
|
||||||
|
|
||||||
flags &= ~BDRV_O_INACTIVE;
|
flags &= ~BDRV_O_INACTIVE;
|
||||||
qemu_co_mutex_lock(&s->lock);
|
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);
|
qemu_co_mutex_unlock(&s->lock);
|
||||||
qobject_unref(options);
|
qobject_unref(options);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
56
block/vmdk.c
56
block/vmdk.c
@ -178,6 +178,10 @@ typedef struct BDRVVmdkState {
|
|||||||
char *create_type;
|
char *create_type;
|
||||||
} BDRVVmdkState;
|
} BDRVVmdkState;
|
||||||
|
|
||||||
|
typedef struct BDRVVmdkReopenState {
|
||||||
|
bool *extents_using_bs_file;
|
||||||
|
} BDRVVmdkReopenState;
|
||||||
|
|
||||||
typedef struct VmdkMetaData {
|
typedef struct VmdkMetaData {
|
||||||
unsigned int l1_index;
|
unsigned int l1_index;
|
||||||
unsigned int l2_index;
|
unsigned int l2_index;
|
||||||
@ -400,15 +404,63 @@ static int vmdk_is_cid_valid(BlockDriverState *bs)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We have nothing to do for VMDK reopen, stubs just return success */
|
|
||||||
static int vmdk_reopen_prepare(BDRVReopenState *state,
|
static int vmdk_reopen_prepare(BDRVReopenState *state,
|
||||||
BlockReopenQueue *queue, Error **errp)
|
BlockReopenQueue *queue, Error **errp)
|
||||||
{
|
{
|
||||||
|
BDRVVmdkState *s;
|
||||||
|
BDRVVmdkReopenState *rs;
|
||||||
|
int i;
|
||||||
|
|
||||||
assert(state != NULL);
|
assert(state != NULL);
|
||||||
assert(state->bs != 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;
|
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)
|
static int vmdk_parent_open(BlockDriverState *bs)
|
||||||
{
|
{
|
||||||
char *p_name;
|
char *p_name;
|
||||||
@ -3072,6 +3124,8 @@ static BlockDriver bdrv_vmdk = {
|
|||||||
.bdrv_open = vmdk_open,
|
.bdrv_open = vmdk_open,
|
||||||
.bdrv_co_check = vmdk_co_check,
|
.bdrv_co_check = vmdk_co_check,
|
||||||
.bdrv_reopen_prepare = vmdk_reopen_prepare,
|
.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_child_perm = bdrv_default_perms,
|
||||||
.bdrv_co_preadv = vmdk_co_preadv,
|
.bdrv_co_preadv = vmdk_co_preadv,
|
||||||
.bdrv_co_pwritev = vmdk_co_pwritev,
|
.bdrv_co_pwritev = vmdk_co_pwritev,
|
||||||
|
@ -30,18 +30,23 @@ typedef struct NBDServerData {
|
|||||||
} NBDServerData;
|
} NBDServerData;
|
||||||
|
|
||||||
static NBDServerData *nbd_server;
|
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);
|
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)
|
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)
|
static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)
|
||||||
|
@ -17,5 +17,5 @@ static inline bool regpairs_aligned(void *cpu_env)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ! TARGET_H */
|
#endif /* TARGET_H */
|
||||||
|
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_H_
|
#ifndef TARGET_ARCH_H
|
||||||
#define _TARGET_ARCH_H_
|
#define TARGET_ARCH_H
|
||||||
|
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
|
|
||||||
void target_cpu_set_tls(CPUARMState *env, target_ulong newtls);
|
void target_cpu_set_tls(CPUARMState *env, target_ulong newtls);
|
||||||
target_ulong target_cpu_get_tls(CPUARMState *env);
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_CPU_H_
|
#ifndef TARGET_ARCH_CPU_H
|
||||||
#define _TARGET_ARCH_CPU_H_
|
#define TARGET_ARCH_CPU_H
|
||||||
|
|
||||||
#include "target_arch.h"
|
#include "target_arch.h"
|
||||||
#include "signal-common.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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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_START_MMAP 0x80000000
|
||||||
#define ELF_ET_DYN_LOAD_ADDR 0x500000
|
#define ELF_ET_DYN_LOAD_ADDR 0x500000
|
||||||
@ -125,4 +126,4 @@ static uint32_t get_elf_hwcap2(void)
|
|||||||
#undef GET_FEATURE
|
#undef GET_FEATURE
|
||||||
#undef GET_FEATURE_ID
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_REG_H_
|
#ifndef TARGET_ARCH_REG_H
|
||||||
#define _TARGET_ARCH_REG_H_
|
#define TARGET_ARCH_REG_H
|
||||||
|
|
||||||
/* See sys/arm/include/reg.h */
|
/* See sys/arm/include/reg.h */
|
||||||
typedef struct target_reg {
|
typedef struct target_reg {
|
||||||
@ -57,4 +57,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUARMState *env)
|
|||||||
|
|
||||||
#undef tswapreg
|
#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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "cpu.h"
|
||||||
|
|
||||||
@ -85,4 +86,4 @@ struct target_sigframe {
|
|||||||
target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
#define TARGET_ARCH_SIGTRAMP_H
|
||||||
|
|
||||||
/* Compare to arm/arm/locore.S ENTRY_NP(sigcode) */
|
/* Compare to arm/arm/locore.S ENTRY_NP(sigcode) */
|
||||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
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);
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_SYSARCH_H_
|
#ifndef TARGET_ARCH_SYSARCH_H
|
||||||
#define _TARGET_ARCH_SYSARCH_H_
|
#define TARGET_ARCH_SYSARCH_H
|
||||||
|
|
||||||
#include "target_syscall.h"
|
#include "target_syscall.h"
|
||||||
#include "target_arch.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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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() */
|
/* Compare to arm/arm/vm_machdep.c cpu_set_upcall_kse() */
|
||||||
static inline void target_thread_set_upcall(CPUARMState *env, abi_ulong entry,
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "cpu.h"
|
||||||
|
|
||||||
@ -45,4 +46,4 @@ static inline void set_second_rval(CPUARMState *state, abi_ulong retval2)
|
|||||||
state->regs[1] = 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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_SYSCALL_H_
|
#ifndef ARM_TARGET_SYSCALL_H
|
||||||
#define _TARGET_ARCH_SYSCALL_H_
|
#define ARM_TARGET_SYSCALL_H
|
||||||
|
|
||||||
struct target_pt_regs {
|
struct target_pt_regs {
|
||||||
abi_long uregs[17];
|
abi_long uregs[17];
|
||||||
@ -52,4 +52,4 @@ struct target_pt_regs {
|
|||||||
#define TARGET_HW_MACHINE "arm"
|
#define TARGET_HW_MACHINE "arm"
|
||||||
#define TARGET_HW_MACHINE_ARCH "armv7"
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BSD_FILE_H_
|
#ifndef BSD_FILE_H
|
||||||
#define BSD_FILE_H_
|
#define BSD_FILE_H
|
||||||
|
|
||||||
#include "qemu/path.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,
|
extern void unlock_iovec(struct iovec *vec, abi_ulong target_addr, int count,
|
||||||
int copy);
|
int copy);
|
||||||
|
|
||||||
#endif /* !BSD_FILE_H_ */
|
#endif /* BSD_FILE_H */
|
||||||
|
@ -34,8 +34,8 @@
|
|||||||
* @(#)errno.h 8.5 (Berkeley) 1/21/94
|
* @(#)errno.h 8.5 (Berkeley) 1/21/94
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ERRNO_DEFS_H_
|
#ifndef ERRNO_DEFS_H
|
||||||
#define _ERRNO_DEFS_H_
|
#define ERRNO_DEFS_H
|
||||||
|
|
||||||
#define TARGET_EPERM 1 /* Operation not permitted */
|
#define TARGET_EPERM 1 /* Operation not permitted */
|
||||||
#define TARGET_ENOENT 2 /* No such file or directory */
|
#define TARGET_ENOENT 2 /* No such file or directory */
|
||||||
@ -157,4 +157,4 @@
|
|||||||
_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS,
|
_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS,
|
||||||
"TARGET_ERESTART and QEMU_ERESTARTSYS expected to match");
|
"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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _HOST_OS_H_
|
#ifndef HOST_OS_H
|
||||||
#define _HOST_OS_H_
|
#define HOST_OS_H
|
||||||
|
|
||||||
#define HOST_DEFAULT_BSD_TYPE target_freebsd
|
#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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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 "target_arch_elf.h"
|
||||||
#include "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;
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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 128
|
||||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
#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_FLTINV (7) /* Invalid floating point operation. */
|
||||||
#define TARGET_FPE_FLTSUB (8) /* Subscript out of range. */
|
#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_
|
#ifndef TARGET_OS_SIGNAL_H
|
||||||
#define _TARGET_OS_SIGNAL_H_
|
#define TARGET_OS_SIGNAL_H
|
||||||
|
|
||||||
#include "target_os_siginfo.h"
|
#include "target_os_siginfo.h"
|
||||||
#include "target_arch_signal.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_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking 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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_STACK_H_
|
#ifndef TARGET_OS_STACK_H
|
||||||
#define _TARGET_OS_STACK_H_
|
#define TARGET_OS_STACK_H
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include "target_arch_sigtramp.h"
|
#include "target_arch_sigtramp.h"
|
||||||
@ -178,4 +178,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm,
|
|||||||
return 0;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_THREAD_H_
|
#ifndef TARGET_OS_THREAD_H
|
||||||
#define _TARGET_OS_THREAD_H_
|
#define TARGET_OS_THREAD_H
|
||||||
|
|
||||||
#include "target_arch_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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_USER_H_
|
#ifndef TARGET_OS_USER_H
|
||||||
#define _TARGET_OS_USER_H_
|
#define TARGET_OS_USER_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* from sys/priority.h
|
* from sys/priority.h
|
||||||
@ -326,4 +326,4 @@ struct target_kinfo_vmentry {
|
|||||||
char kve_path[PATH_MAX]; /* Path to VM obj, if any. */
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "target_arch_vmparam.h"
|
||||||
|
|
||||||
@ -35,4 +36,4 @@ extern abi_ulong target_stksiz;
|
|||||||
#define TARGET_PS_STRINGS ((target_stkbas + target_stksiz) - \
|
#define TARGET_PS_STRINGS ((target_stkbas + target_stksiz) - \
|
||||||
sizeof(struct target_ps_strings))
|
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
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TARGET_ARCH_H
|
#ifndef TARGET_H
|
||||||
#define TARGET_ARCH_H
|
#define TARGET_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* i386 doesn't 'lump' the registers for 64-bit args.
|
* i386 doesn't 'lump' the registers for 64-bit args.
|
||||||
@ -17,5 +17,4 @@ static inline bool regpairs_aligned(void *cpu_env)
|
|||||||
return false;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_H_
|
#ifndef TARGET_ARCH_H
|
||||||
#define _TARGET_ARCH_H_
|
#define TARGET_ARCH_H
|
||||||
|
|
||||||
/* target_arch_cpu.c */
|
/* target_arch_cpu.c */
|
||||||
void bsd_i386_write_dt(void *ptr, unsigned long addr, unsigned long limit,
|
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)
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_CPU_H_
|
#ifndef TARGET_ARCH_CPU_H
|
||||||
#define _TARGET_ARCH_CPU_H_
|
#define TARGET_ARCH_CPU_H
|
||||||
|
|
||||||
#include "target_arch.h"
|
#include "target_arch.h"
|
||||||
#include "signal-common.h"
|
#include "signal-common.h"
|
||||||
@ -195,4 +195,4 @@ static inline void target_cpu_reset(CPUArchState *env)
|
|||||||
cpu_reset(env_cpu(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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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_START_MMAP 0x80000000
|
||||||
#define ELF_ET_DYN_LOAD_ADDR 0x01001000
|
#define ELF_ET_DYN_LOAD_ADDR 0x01001000
|
||||||
@ -32,4 +33,4 @@
|
|||||||
#define USE_ELF_CORE_DUMP
|
#define USE_ELF_CORE_DUMP
|
||||||
#define ELF_EXEC_PAGESIZE 4096
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_REG_H_
|
#ifndef TARGET_ARCH_REG_H
|
||||||
#define _TARGET_ARCH_REG_H_
|
#define TARGET_ARCH_REG_H
|
||||||
|
|
||||||
/* See sys/i386/include/reg.h */
|
/* See sys/i386/include/reg.h */
|
||||||
typedef struct target_reg {
|
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;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
#define TARGET_ARCH_SIGTRAMP_H
|
||||||
|
|
||||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||||
unsigned sys_sigreturn)
|
unsigned sys_sigreturn)
|
||||||
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
|||||||
|
|
||||||
return 0;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
#ifndef TARGET_ARCH_SYSARCH_H
|
||||||
#define BSD_USER_ARCH_SYSARCH_H_
|
#define TARGET_ARCH_SYSARCH_H
|
||||||
|
|
||||||
#include "target_syscall.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);
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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() */
|
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
|
||||||
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
|
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;
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "cpu.h"
|
||||||
|
|
||||||
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
|
|||||||
state->regs[R_EDX] = 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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _HOST_OS_H_
|
#ifndef HOST_OS_H
|
||||||
#define _HOST_OS_H_
|
#define HOST_OS_H
|
||||||
|
|
||||||
#define HOST_DEFAULT_BSD_TYPE target_netbsd
|
#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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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 "target_arch_elf.h"
|
||||||
#include "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;
|
return sp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _TARGET_OS_ELF_H_ */
|
#endif /* TARGET_OS_ELF_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _TARGET_OS_SIGINFO_H_
|
#ifndef TARGET_OS_SIGINFO_H
|
||||||
#define _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 32 /* counting 0; could be 33 (mask is 1-32) */
|
||||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
||||||
@ -79,4 +79,4 @@ typedef union target_siginfo {
|
|||||||
#define TARGET_TRAP_TRACE 2
|
#define TARGET_TRAP_TRACE 2
|
||||||
|
|
||||||
|
|
||||||
#endif /* ! _TARGET_OS_SIGINFO_H_ */
|
#endif /* TARGET_OS_SIGINFO_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _TARGET_OS_SIGNAL_H_
|
#ifndef TARGET_OS_SIGNAL_H
|
||||||
#define _TARGET_OS_SIGNAL_H_
|
#define TARGET_OS_SIGNAL_H
|
||||||
|
|
||||||
#include "target_os_siginfo.h"
|
#include "target_os_siginfo.h"
|
||||||
#include "target_arch_signal.h"
|
#include "target_arch_signal.h"
|
||||||
@ -66,4 +66,4 @@
|
|||||||
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking 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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_STACK_H_
|
#ifndef TARGET_OS_STACK_H
|
||||||
#define _TARGET_OS_STACK_H_
|
#define TARGET_OS_STACK_H
|
||||||
|
|
||||||
#include "target_arch_sigtramp.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;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_THREAD_H_
|
#ifndef TARGET_OS_THREAD_H
|
||||||
#define _TARGET_OS_THREAD_H_
|
#define TARGET_OS_THREAD_H
|
||||||
|
|
||||||
#include "target_arch_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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _HOST_OS_H_
|
#ifndef HOST_OS_H
|
||||||
#define _HOST_OS_H_
|
#define HOST_OS_H
|
||||||
|
|
||||||
#define HOST_DEFAULT_BSD_TYPE target_openbsd
|
#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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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 "target_arch_elf.h"
|
||||||
#include "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;
|
return sp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _TARGET_OS_ELF_H_ */
|
#endif /* TARGET_OS_ELF_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _TARGET_OS_SIGINFO_H_
|
#ifndef TARGET_OS_SIGINFO_H
|
||||||
#define _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 32 /* counting 0; could be 33 (mask is 1-32) */
|
||||||
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
|
||||||
@ -79,4 +79,4 @@ typedef union target_siginfo {
|
|||||||
#define TARGET_TRAP_TRACE 2
|
#define TARGET_TRAP_TRACE 2
|
||||||
|
|
||||||
|
|
||||||
#endif /* ! _TARGET_OS_SIGINFO_H_ */
|
#endif /* TARGET_OS_SIGINFO_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _TARGET_OS_SIGNAL_H_
|
#ifndef TARGET_OS_SIGNAL_H
|
||||||
#define _TARGET_OS_SIGNAL_H_
|
#define TARGET_OS_SIGNAL_H
|
||||||
|
|
||||||
#include "target_os_siginfo.h"
|
#include "target_os_siginfo.h"
|
||||||
#include "target_arch_signal.h"
|
#include "target_arch_signal.h"
|
||||||
@ -66,4 +66,4 @@
|
|||||||
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
|
||||||
#define TARGET_SS_DISABLE 0x0004 /* disable taking 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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_STACK_H_
|
#ifndef TARGET_OS_STACK_H
|
||||||
#define _TARGET_OS_STACK_H_
|
#define TARGET_OS_STACK_H
|
||||||
|
|
||||||
#include "target_arch_sigtramp.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;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_OS_THREAD_H_
|
#ifndef TARGET_OS_THREAD_H
|
||||||
#define _TARGET_OS_THREAD_H_
|
#define TARGET_OS_THREAD_H
|
||||||
|
|
||||||
#include "target_arch_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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SYSCALL_DEFS_H_
|
#ifndef SYSCALL_DEFS_H
|
||||||
#define _SYSCALL_DEFS_H_
|
#define SYSCALL_DEFS_H
|
||||||
|
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#include <sys/resource.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); \
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ! TARGET_H */
|
#endif /* TARGET_H */
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_H_
|
#ifndef TARGET_ARCH_H
|
||||||
#define _TARGET_ARCH_H_
|
#define TARGET_ARCH_H
|
||||||
|
|
||||||
/* target_arch_cpu.c */
|
/* target_arch_cpu.c */
|
||||||
void bsd_x86_64_write_dt(void *ptr, unsigned long addr, unsigned long limit,
|
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)
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_CPU_H_
|
#ifndef TARGET_ARCH_CPU_H
|
||||||
#define _TARGET_ARCH_CPU_H_
|
#define TARGET_ARCH_CPU_H
|
||||||
|
|
||||||
#include "target_arch.h"
|
#include "target_arch.h"
|
||||||
#include "signal-common.h"
|
#include "signal-common.h"
|
||||||
@ -174,4 +174,4 @@ static inline void target_cpu_reset(CPUArchState *env)
|
|||||||
cpu_reset(env_cpu(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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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_START_MMAP 0x2aaaaab000ULL
|
||||||
#define ELF_ET_DYN_LOAD_ADDR 0x01021000
|
#define ELF_ET_DYN_LOAD_ADDR 0x01021000
|
||||||
@ -32,4 +33,4 @@
|
|||||||
#define USE_ELF_CORE_DUMP
|
#define USE_ELF_CORE_DUMP
|
||||||
#define ELF_EXEC_PAGESIZE 4096
|
#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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_REG_H_
|
#ifndef TARGET_ARCH_REG_H
|
||||||
#define _TARGET_ARCH_REG_H_
|
#define TARGET_ARCH_REG_H
|
||||||
|
|
||||||
/* See sys/amd64/include/reg.h */
|
/* See sys/amd64/include/reg.h */
|
||||||
typedef struct target_reg {
|
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;
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "cpu.h"
|
||||||
|
|
||||||
@ -96,4 +97,4 @@ struct target_sigframe {
|
|||||||
uint32_t __spare__[2];
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TARGET_ARCH_SIGTRAMP_H_
|
#ifndef TARGET_ARCH_SIGTRAMP_H
|
||||||
#define _TARGET_ARCH_SIGTRAMP_H_
|
#define TARGET_ARCH_SIGTRAMP_H
|
||||||
|
|
||||||
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
||||||
unsigned sys_sigreturn)
|
unsigned sys_sigreturn)
|
||||||
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
|||||||
|
|
||||||
return 0;
|
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/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
#ifndef TARGET_ARCH_SYSARCH_H
|
||||||
#define BSD_USER_ARCH_SYSARCH_H_
|
#define TARGET_ARCH_SYSARCH_H
|
||||||
|
|
||||||
#include "target_syscall.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);
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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() */
|
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
|
||||||
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
|
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;
|
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
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* 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"
|
#include "cpu.h"
|
||||||
|
|
||||||
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
|
|||||||
state->regs[R_EDX] = 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(
|
ret = qio_channel_writev_full(
|
||||||
ioc, &iov, 1,
|
ioc, &iov, 1,
|
||||||
fds, nfds, NULL);
|
fds, nfds, 0, NULL);
|
||||||
if (ret == QIO_CHANNEL_ERR_BLOCK) {
|
if (ret == QIO_CHANNEL_ERR_BLOCK) {
|
||||||
if (offset) {
|
if (offset) {
|
||||||
return offset;
|
return offset;
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CHARDEV_INTERNAL_H
|
#ifndef CHARDEV_INTERNAL_H
|
||||||
#define 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);
|
Object *get_chardevs_root(void);
|
||||||
|
|
||||||
#endif /* CHAR_MUX_H */
|
#endif /* CHARDEV_INTERNAL_H */
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
|
|
||||||
# Boards:
|
# 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