Merge remote-tracking branch 'unicorn-engine/master' into msvc_native

This commit is contained in:
xorstream 2017-01-20 22:37:51 +11:00
commit b0ae2138fb
32 changed files with 7 additions and 1189 deletions

View file

@ -14,7 +14,6 @@ struct uc_struct;
#include "qemu/thread.h"
#include "include/qom/cpu.h"
#include "exec/spinlock.h"
#include "vl.h"
@ -42,11 +41,9 @@ typedef struct {
} BounceBuffer;
typedef struct RAMList {
QemuMutex mutex;
/* Protected by the iothread lock. */
unsigned long *dirty_memory[DIRTY_MEMORY_NUM];
RAMBlock *mru_block;
/* Protected by the ramlist lock. */
QTAILQ_HEAD(, RAMBlock) blocks;
uint32_t version;
} RAMList;

View file

@ -179,7 +179,6 @@ struct uc_struct {
RAMList ram_list; // qemu/exec.c
BounceBuffer bounce; // qemu/cpu-exec.c
volatile sig_atomic_t exit_request; // qemu/cpu-exec.c
spinlock_t x86_global_cpu_lock; // for X86 arch only
bool global_dirty_log; // qemu/memory.c
/* This is a multi-level map on the virtual address space.
The bottom level has pointers to PageDesc. */
@ -191,7 +190,6 @@ struct uc_struct {
unsigned memory_region_transaction_depth;
bool memory_region_update_pending;
bool ioeventfd_update_pending;
QemuMutex flat_view_mutex;
QTAILQ_HEAD(memory_listeners, MemoryListener) memory_listeners;
QTAILQ_HEAD(, AddressSpace) address_spaces;
MachineState *machine_state;

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_aarch64
#define countLeadingZeros32 countLeadingZeros32_aarch64
#define countLeadingZeros64 countLeadingZeros64_aarch64
#define count_opts_list count_opts_list_aarch64
#define cp_access_ok cp_access_ok_aarch64
#define cpacr_write cpacr_write_aarch64
#define cpreg_field_is_64bit cpreg_field_is_64bit_aarch64
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_aarch64
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_aarch64
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_aarch64
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_aarch64
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_aarch64
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_aarch64
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_aarch64
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_aarch64
#define memory_region_name memory_region_name_aarch64
#define memory_region_need_escape memory_region_need_escape_aarch64
#define memory_region_notify_iommu memory_region_notify_iommu_aarch64
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_aarch64
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_aarch64
#define memory_region_present memory_region_present_aarch64
#define memory_region_read_accessor memory_region_read_accessor_aarch64
#define memory_region_readd_subregion memory_region_readd_subregion_aarch64
#define memory_region_ref memory_region_ref_aarch64
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_aarch64
#define memory_region_resolve_container memory_region_resolve_container_aarch64
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_aarch64
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_aarch64
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_aarch64
#define memory_region_transaction_commit memory_region_transaction_commit_aarch64
#define memory_region_unref memory_region_unref_aarch64
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_aarch64
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_aarch64
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_aarch64
#define memory_region_update_container_subregions memory_region_update_container_subregions_aarch64
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_aarch64
#define op_to_mov op_to_mov_aarch64
#define op_to_movi op_to_movi_aarch64
#define opts_accepts_any opts_accepts_any_aarch64
#define opts_do_parse opts_do_parse_aarch64
#define opt_set opt_set_aarch64
#define opts_parse opts_parse_aarch64
#define output_type_enum output_type_enum_aarch64
#define packFloat128 packFloat128_aarch64
#define packFloat16 packFloat16_aarch64
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_aarch64
#define qemu_clock_ptr qemu_clock_ptr_aarch64
#define qemu_clocks qemu_clocks_aarch64
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_aarch64
#define qemu_get_cpu qemu_get_cpu_aarch64
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_aarch64
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_aarch64
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_aarch64
#define qemu_loglevel_mask qemu_loglevel_mask_aarch64
#define qemu_log_vprintf qemu_log_vprintf_aarch64
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_aarch64
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_aarch64
#define qemu_oom_check qemu_oom_check_aarch64
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_aarch64
#define qemu_opts_append qemu_opts_append_aarch64
#define qemu_opts_create qemu_opts_create_aarch64
#define qemu_opts_del qemu_opts_del_aarch64
#define qemu_opts_do_parse qemu_opts_do_parse_aarch64
#define qemu_opts_find qemu_opts_find_aarch64
#define qemu_opts_foreach qemu_opts_foreach_aarch64
#define qemu_opts_free qemu_opts_free_aarch64
#define qemu_opts_from_qdict qemu_opts_from_qdict_aarch64
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_aarch64
#define qemu_opts_id qemu_opts_id_aarch64
#define qemu_opts_parse qemu_opts_parse_aarch64
#define qemu_opts_print qemu_opts_print_aarch64
#define qemu_opts_print_help qemu_opts_print_help_aarch64
#define qemu_opts_reset qemu_opts_reset_aarch64
#define qemu_opts_set qemu_opts_set_aarch64
#define qemu_opts_set_defaults qemu_opts_set_defaults_aarch64
#define qemu_opts_set_id qemu_opts_set_id_aarch64
#define qemu_opts_to_qdict qemu_opts_to_qdict_aarch64
#define qemu_opts_validate qemu_opts_validate_aarch64
#define qemu_parse_fd qemu_parse_fd_aarch64
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_aarch64
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_aarch64
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_aarch64
#define sort_constraints sort_constraints_aarch64
#define sp_el0_access sp_el0_access_aarch64
#define spin_lock spin_lock_aarch64
#define spin_unlock spin_unlock_aarch64
#define spsel_read spsel_read_aarch64
#define spsel_write spsel_write_aarch64
#define start_list start_list_aarch64

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_arm
#define countLeadingZeros32 countLeadingZeros32_arm
#define countLeadingZeros64 countLeadingZeros64_arm
#define count_opts_list count_opts_list_arm
#define cp_access_ok cp_access_ok_arm
#define cpacr_write cpacr_write_arm
#define cpreg_field_is_64bit cpreg_field_is_64bit_arm
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_arm
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_arm
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_arm
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_arm
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_arm
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_arm
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_arm
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_arm
#define memory_region_name memory_region_name_arm
#define memory_region_need_escape memory_region_need_escape_arm
#define memory_region_notify_iommu memory_region_notify_iommu_arm
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_arm
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_arm
#define memory_region_present memory_region_present_arm
#define memory_region_read_accessor memory_region_read_accessor_arm
#define memory_region_readd_subregion memory_region_readd_subregion_arm
#define memory_region_ref memory_region_ref_arm
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_arm
#define memory_region_resolve_container memory_region_resolve_container_arm
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_arm
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_arm
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_arm
#define memory_region_transaction_commit memory_region_transaction_commit_arm
#define memory_region_unref memory_region_unref_arm
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_arm
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_arm
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_arm
#define memory_region_update_container_subregions memory_region_update_container_subregions_arm
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_arm
#define op_to_mov op_to_mov_arm
#define op_to_movi op_to_movi_arm
#define opts_accepts_any opts_accepts_any_arm
#define opts_do_parse opts_do_parse_arm
#define opt_set opt_set_arm
#define opts_parse opts_parse_arm
#define output_type_enum output_type_enum_arm
#define packFloat128 packFloat128_arm
#define packFloat16 packFloat16_arm
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_arm
#define qemu_clock_ptr qemu_clock_ptr_arm
#define qemu_clocks qemu_clocks_arm
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_arm
#define qemu_get_cpu qemu_get_cpu_arm
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_arm
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_arm
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_arm
#define qemu_loglevel_mask qemu_loglevel_mask_arm
#define qemu_log_vprintf qemu_log_vprintf_arm
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_arm
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_arm
#define qemu_oom_check qemu_oom_check_arm
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_arm
#define qemu_opts_append qemu_opts_append_arm
#define qemu_opts_create qemu_opts_create_arm
#define qemu_opts_del qemu_opts_del_arm
#define qemu_opts_do_parse qemu_opts_do_parse_arm
#define qemu_opts_find qemu_opts_find_arm
#define qemu_opts_foreach qemu_opts_foreach_arm
#define qemu_opts_free qemu_opts_free_arm
#define qemu_opts_from_qdict qemu_opts_from_qdict_arm
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_arm
#define qemu_opts_id qemu_opts_id_arm
#define qemu_opts_parse qemu_opts_parse_arm
#define qemu_opts_print qemu_opts_print_arm
#define qemu_opts_print_help qemu_opts_print_help_arm
#define qemu_opts_reset qemu_opts_reset_arm
#define qemu_opts_set qemu_opts_set_arm
#define qemu_opts_set_defaults qemu_opts_set_defaults_arm
#define qemu_opts_set_id qemu_opts_set_id_arm
#define qemu_opts_to_qdict qemu_opts_to_qdict_arm
#define qemu_opts_validate qemu_opts_validate_arm
#define qemu_parse_fd qemu_parse_fd_arm
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_arm
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_arm
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_arm
#define sort_constraints sort_constraints_arm
#define sp_el0_access sp_el0_access_arm
#define spin_lock spin_lock_arm
#define spin_unlock spin_unlock_arm
#define spsel_read spsel_read_arm
#define spsel_write spsel_write_arm
#define start_list start_list_arm

View file

@ -67,9 +67,6 @@ int cpu_exec(struct uc_struct *uc, CPUArchState *env) // qq
struct hook *hook;
/* This must be volatile so it is not trashed by longjmp() */
volatile bool have_tb_lock = false;
if (cpu->halted) {
if (!cpu_has_work(cpu)) {
return EXCP_HALTED;
@ -209,8 +206,6 @@ int cpu_exec(struct uc_struct *uc, CPUArchState *env) // qq
cpu->exception_index = EXCP_INTERRUPT;
cpu_loop_exit(cpu);
}
spin_lock(&tcg_ctx->tb_ctx.tb_lock);
have_tb_lock = true;
tb = tb_find_fast(env); // qq
if (!tb) { // invalid TB due to invalid code?
uc->invalid_error = UC_ERR_FETCH_UNMAPPED;
@ -233,8 +228,6 @@ int cpu_exec(struct uc_struct *uc, CPUArchState *env) // qq
tb_add_jump((TranslationBlock *)(next_tb & ~TB_EXIT_MASK),
next_tb & TB_EXIT_MASK, tb);
}
have_tb_lock = false;
spin_unlock(&tcg_ctx->tb_ctx.tb_lock);
/* cpu_interrupt might be called while translating the
TB, but before it is linked into a potentially
@ -276,10 +269,6 @@ int cpu_exec(struct uc_struct *uc, CPUArchState *env) // qq
#ifdef TARGET_I386
x86_cpu = X86_CPU(uc, cpu);
#endif
if (have_tb_lock) {
spin_unlock(&tcg_ctx->tb_ctx.tb_lock);
have_tb_lock = false;
}
}
} /* for(;;) */

View file

@ -906,20 +906,6 @@ static void mem_add(MemoryListener *listener, MemoryRegionSection *section)
}
}
void qemu_flush_coalesced_mmio_buffer(void)
{
}
void qemu_mutex_lock_ramlist(struct uc_struct *uc)
{
qemu_mutex_lock(&uc->ram_list.mutex);
}
void qemu_mutex_unlock_ramlist(struct uc_struct *uc)
{
qemu_mutex_unlock(&uc->ram_list.mutex);
}
#ifdef __linux__
#include <sys/vfs.h>
@ -1012,8 +998,6 @@ static ram_addr_t ram_block_add(struct uc_struct *uc, RAMBlock *new_block, Error
old_ram_size = last_ram_offset(uc) >> TARGET_PAGE_BITS;
/* This assumes the iothread lock is taken here too. */
qemu_mutex_lock_ramlist(uc);
new_block->offset = find_ram_offset(uc, new_block->length);
if (!new_block->host) {
@ -1023,7 +1007,6 @@ static ram_addr_t ram_block_add(struct uc_struct *uc, RAMBlock *new_block, Error
error_setg_errno(errp, errno,
"cannot set up guest memory '%s'",
memory_region_name(new_block->mr));
qemu_mutex_unlock_ramlist(uc);
return -1;
}
memory_try_enable_merging(new_block->host, new_block->length);
@ -1043,7 +1026,6 @@ static ram_addr_t ram_block_add(struct uc_struct *uc, RAMBlock *new_block, Error
uc->ram_list.mru_block = NULL;
uc->ram_list.version++;
qemu_mutex_unlock_ramlist(uc);
new_ram_size = last_ram_offset(uc) >> TARGET_PAGE_BITS;
@ -1102,8 +1084,6 @@ void qemu_ram_free_from_ptr(struct uc_struct *uc, ram_addr_t addr)
{
RAMBlock *block;
/* This assumes the iothread lock is taken here too. */
qemu_mutex_lock_ramlist(uc);
QTAILQ_FOREACH(block, &uc->ram_list.blocks, next) {
if (addr == block->offset) {
QTAILQ_REMOVE(&uc->ram_list.blocks, block, next);
@ -1113,15 +1093,12 @@ void qemu_ram_free_from_ptr(struct uc_struct *uc, ram_addr_t addr)
break;
}
}
qemu_mutex_unlock_ramlist(uc);
}
void qemu_ram_free(struct uc_struct *uc, ram_addr_t addr)
{
RAMBlock *block;
/* This assumes the iothread lock is taken here too. */
qemu_mutex_lock_ramlist(uc);
QTAILQ_FOREACH(block, &uc->ram_list.blocks, next) {
if (addr == block->offset) {
QTAILQ_REMOVE(&uc->ram_list.blocks, block, next);
@ -1141,8 +1118,6 @@ void qemu_ram_free(struct uc_struct *uc, ram_addr_t addr)
break;
}
}
qemu_mutex_unlock_ramlist(uc);
}
#ifndef _WIN32
@ -1384,7 +1359,6 @@ static void notdirty_mem_write(struct uc_struct* uc, void *opaque, hwaddr ram_ad
default:
abort();
}
cpu_physical_memory_set_dirty_range_nocode(uc, ram_addr, size);
/* we remove the notdirty callback only if the code has been
flushed */
if (!cpu_physical_memory_is_clean(uc, ram_addr)) {
@ -1563,7 +1537,6 @@ static void memory_map_init(struct uc_struct *uc)
void cpu_exec_init_all(struct uc_struct *uc)
{
#if !defined(CONFIG_USER_ONLY)
qemu_mutex_init(&uc->ram_list.mutex);
memory_map_init(uc);
#endif
io_mem_init(uc);
@ -1624,7 +1597,6 @@ static void invalidate_and_set_dirty(struct uc_struct *uc, hwaddr addr,
{
if (cpu_physical_memory_range_includes_clean(uc, addr, length)) {
tb_invalidate_phys_range(uc, addr, addr + length, 0);
cpu_physical_memory_set_dirty_range_nocode(uc, addr, length);
}
}

View file

@ -206,7 +206,6 @@ symbols = (
'count_cpreg',
'countLeadingZeros32',
'countLeadingZeros64',
'count_opts_list',
'cp_access_ok',
'cpacr_write',
'cpreg_field_is_64bit',
@ -276,7 +275,6 @@ symbols = (
'cpu_physical_memory_rw',
'cpu_physical_memory_set_dirty_flag',
'cpu_physical_memory_set_dirty_range',
'cpu_physical_memory_set_dirty_range_nocode',
'cpu_physical_memory_unmap',
'cpu_physical_memory_write_rom',
'cpu_physical_memory_write_rom_internal',
@ -2067,14 +2065,12 @@ symbols = (
'memory_region_is_unassigned',
'memory_region_name',
'memory_region_need_escape',
'memory_region_notify_iommu',
'memory_region_oldmmio_read_accessor',
'memory_region_oldmmio_write_accessor',
'memory_region_present',
'memory_region_read_accessor',
'memory_region_readd_subregion',
'memory_region_ref',
'memory_region_register_iommu_notifier',
'memory_region_resolve_container',
'memory_region_rom_device_set_romd',
'memory_region_section_get_iotlb',
@ -2088,7 +2084,6 @@ symbols = (
'memory_region_transaction_begin',
'memory_region_transaction_commit',
'memory_region_unref',
'memory_region_unregister_iommu_notifier',
'memory_region_update_coalesced_range',
'memory_region_update_coalesced_range_as',
'memory_region_update_container_subregions',
@ -2190,10 +2185,6 @@ symbols = (
'open_modeflags',
'op_to_mov',
'op_to_movi',
'opts_accepts_any',
'opts_do_parse',
'opt_set',
'opts_parse',
'output_type_enum',
'packFloat128',
'packFloat16',
@ -2390,7 +2381,6 @@ symbols = (
'qemu_clock_get_us',
'qemu_clock_ptr',
'qemu_clocks',
'qemu_flush_coalesced_mmio_buffer',
'qemu_get_cpu',
'qemu_get_guest_memory_mapping',
'qemu_get_guest_simple_memory_mapping',
@ -2407,29 +2397,7 @@ symbols = (
'qemu_log_flush',
'qemu_loglevel_mask',
'qemu_log_vprintf',
'qemu_mutex_lock_ramlist',
'qemu_mutex_unlock_ramlist',
'qemu_oom_check',
'qemu_opts_absorb_qdict',
'qemu_opts_append',
'qemu_opts_create',
'qemu_opts_del',
'qemu_opts_do_parse',
'qemu_opts_find',
'qemu_opts_foreach',
'qemu_opts_free',
'qemu_opts_from_qdict',
'qemu_opts_from_qdict_1',
'qemu_opts_id',
'qemu_opts_parse',
'qemu_opts_print',
'qemu_opts_print_help',
'qemu_opts_reset',
'qemu_opts_set',
'qemu_opts_set_defaults',
'qemu_opts_set_id',
'qemu_opts_to_qdict',
'qemu_opts_validate',
'qemu_parse_fd',
'qemu_ram_addr_from_host',
'qemu_ram_addr_from_host_nofail',
@ -2606,8 +2574,6 @@ symbols = (
'softmmu_unlock_user',
'sort_constraints',
'sp_el0_access',
'spin_lock',
'spin_unlock',
'spsel_read',
'spsel_write',
'start_list',

View file

@ -178,11 +178,13 @@ static void apic_pre_save(APICCommonState *s)
static void apic_post_load(APICCommonState *s)
{
#if 0
if (s->timer_expiry != -1) {
timer_mod(s->timer, s->timer_expiry);
} else {
timer_del(s->timer);
}
#endif
}
static int apic_realize(struct uc_struct *uc, DeviceState *dev, Error **errp)

View file

@ -152,7 +152,7 @@ void apic_init_reset(struct uc_struct *uc, DeviceState *dev)
s->wait_for_sipi = !cpu_is_bsp(s->cpu);
if (s->timer) {
timer_del(s->timer);
// timer_del(s->timer);
}
s->timer_expiry = -1;

View file

@ -169,8 +169,6 @@ struct TranslationBlock {
uint32_t icount;
};
#include "exec/spinlock.h"
typedef struct TBContext TBContext;
struct TBContext {
@ -178,8 +176,6 @@ struct TBContext {
TranslationBlock *tbs;
TranslationBlock *tb_phys_hash[CODE_GEN_PHYS_HASH_SIZE];
int nb_tbs;
/* any access to the tbs or the page table must use this lock */
spinlock_t tb_lock;
/* statistics */
int tb_flush_count;

View file

@ -16,10 +16,8 @@
#ifndef CONFIG_USER_ONLY
#define DIRTY_MEMORY_VGA 0
#define DIRTY_MEMORY_CODE 1
#define DIRTY_MEMORY_MIGRATION 2
#define DIRTY_MEMORY_NUM 3 /* num of dirty bits */
#define DIRTY_MEMORY_CODE 0
#define DIRTY_MEMORY_NUM 1 /* num of dirty bits */
#include "platform.h"
#include "qemu-common.h"
@ -29,7 +27,6 @@
#endif
#include "qemu/queue.h"
#include "qemu/int128.h"
#include "qemu/notify.h"
#include "qapi/error.h"
#include "qom/object.h"
@ -167,7 +164,6 @@ struct MemoryRegion {
uint8_t dirty_log_mask;
unsigned ioeventfd_nb;
MemoryRegionIoeventfd *ioeventfds;
NotifierList iommu_notify;
struct uc_struct *uc;
uint32_t perms; //all perms, partially redundant with readonly
uint64_t end;
@ -498,25 +494,6 @@ bool memory_region_is_iommu(MemoryRegion *mr);
void memory_region_notify_iommu(MemoryRegion *mr,
IOMMUTLBEntry entry);
/**
* memory_region_register_iommu_notifier: register a notifier for changes to
* IOMMU translation entries.
*
* @mr: the memory region to observe
* @n: the notifier to be added; the notifier receives a pointer to an
* #IOMMUTLBEntry as the opaque value; the pointer ceases to be
* valid on exit from the notifier.
*/
void memory_region_register_iommu_notifier(MemoryRegion *mr, Notifier *n);
/**
* memory_region_unregister_iommu_notifier: unregister a notifier for
* changes to IOMMU translation entries.
*
* @n: the notifier to be removed.
*/
void memory_region_unregister_iommu_notifier(Notifier *n);
/**
* memory_region_name: get a memory region's name
*

View file

@ -70,21 +70,13 @@ static inline bool cpu_physical_memory_get_dirty_flag(struct uc_struct *uc, ram_
static inline bool cpu_physical_memory_is_clean(struct uc_struct *uc, ram_addr_t addr)
{
bool vga = cpu_physical_memory_get_dirty_flag(uc, addr, DIRTY_MEMORY_VGA);
bool code = cpu_physical_memory_get_dirty_flag(uc, addr, DIRTY_MEMORY_CODE);
bool migration =
cpu_physical_memory_get_dirty_flag(uc, addr, DIRTY_MEMORY_MIGRATION);
return !(vga && code && migration);
return !cpu_physical_memory_get_dirty_flag(uc, addr, DIRTY_MEMORY_CODE);
}
static inline bool cpu_physical_memory_range_includes_clean(struct uc_struct *uc, ram_addr_t start,
ram_addr_t length)
{
bool vga = cpu_physical_memory_get_clean(uc, start, length, DIRTY_MEMORY_VGA);
bool code = cpu_physical_memory_get_clean(uc, start, length, DIRTY_MEMORY_CODE);
bool migration =
cpu_physical_memory_get_clean(uc, start, length, DIRTY_MEMORY_MIGRATION);
return vga || code || migration;
return cpu_physical_memory_get_clean(uc, start, length, DIRTY_MEMORY_CODE);
}
static inline void cpu_physical_memory_set_dirty_flag(struct uc_struct *uc, ram_addr_t addr,
@ -94,17 +86,6 @@ static inline void cpu_physical_memory_set_dirty_flag(struct uc_struct *uc, ram_
set_bit(addr >> TARGET_PAGE_BITS, uc->ram_list.dirty_memory[client]);
}
static inline void cpu_physical_memory_set_dirty_range_nocode(struct uc_struct *uc, ram_addr_t start,
ram_addr_t length)
{
unsigned long end, page;
end = TARGET_PAGE_ALIGN(start + length) >> TARGET_PAGE_BITS;
page = start >> TARGET_PAGE_BITS;
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION], page, end - page);
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_VGA], page, end - page);
}
static inline void cpu_physical_memory_set_dirty_range(struct uc_struct *uc, ram_addr_t start,
ram_addr_t length)
{
@ -112,8 +93,6 @@ static inline void cpu_physical_memory_set_dirty_range(struct uc_struct *uc, ram
end = TARGET_PAGE_ALIGN(start + length) >> TARGET_PAGE_BITS;
page = start >> TARGET_PAGE_BITS;
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION], page, end - page);
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_VGA], page, end - page);
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_CODE], page, end - page);
}
@ -139,9 +118,6 @@ static inline void cpu_physical_memory_set_dirty_lebitmap(struct uc_struct *uc,
for (k = 0; k < nr; k++) {
if (bitmap[k]) {
unsigned long temp = leul_to_cpu(bitmap[k]);
uc->ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION][page + k] |= temp;
uc->ram_list.dirty_memory[DIRTY_MEMORY_VGA][page + k] |= temp;
uc->ram_list.dirty_memory[DIRTY_MEMORY_CODE][page + k] |= temp;
}
}

View file

@ -1,53 +0,0 @@
/*
* Copyright (c) 2003 Fabrice Bellard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>
*/
/* configure guarantees us that we have pthreads on any host except
* mingw32, which doesn't support any of the user-only targets.
* So we can simply assume we have pthread mutexes here.
*/
#ifndef QEMU_EXEC_SPINLOCK_H
#define QEMU_EXEC_SPINLOCK_H
#if defined(CONFIG_USER_ONLY)
#include <pthread.h>
#define spin_lock pthread_mutex_lock
#define spin_unlock pthread_mutex_unlock
#define spinlock_t pthread_mutex_t
#define SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER
#else
/* Empty implementations, on the theory that system mode emulation
* is single-threaded. This means that these functions should only
* be used from code run in the TCG cpu thread, and cannot protect
* data structures which might also be accessed from the IO thread
* or from signal handlers.
*/
typedef int spinlock_t;
#define SPIN_LOCK_UNLOCKED 0
static inline void spin_lock(spinlock_t *lock)
{
}
static inline void spin_unlock(spinlock_t *lock)
{
}
#endif
#endif

View file

@ -1,72 +0,0 @@
/*
* Notifier lists
*
* Copyright IBM, Corp. 2010
*
* Authors:
* Anthony Liguori <aliguori@us.ibm.com>
*
* This work is licensed under the terms of the GNU GPL, version 2. See
* the COPYING file in the top-level directory.
*
*/
#ifndef QEMU_NOTIFY_H
#define QEMU_NOTIFY_H
#include "qemu/queue.h"
typedef struct Notifier Notifier;
struct Notifier
{
void (*notify)(Notifier *notifier, void *data);
QLIST_ENTRY(Notifier) node;
};
typedef struct NotifierList
{
QLIST_HEAD(, Notifier) notifiers;
} NotifierList;
#define NOTIFIER_LIST_INITIALIZER(head) \
{ QLIST_HEAD_INITIALIZER((head).notifiers) }
void notifier_list_init(NotifierList *list);
void notifier_list_add(NotifierList *list, Notifier *notifier);
void notifier_remove(Notifier *notifier);
void notifier_list_notify(NotifierList *list, void *data);
/* Same as Notifier but allows .notify() to return errors */
typedef struct NotifierWithReturn NotifierWithReturn;
struct NotifierWithReturn {
/**
* Return 0 on success (next notifier will be invoked), otherwise
* notifier_with_return_list_notify() will stop and return the value.
*/
int (*notify)(NotifierWithReturn *notifier, void *data);
QLIST_ENTRY(NotifierWithReturn) node;
};
typedef struct NotifierWithReturnList {
QLIST_HEAD(, NotifierWithReturn) notifiers;
} NotifierWithReturnList;
#define NOTIFIER_WITH_RETURN_LIST_INITIALIZER(head) \
{ QLIST_HEAD_INITIALIZER((head).notifiers) }
void notifier_with_return_list_init(NotifierWithReturnList *list);
void notifier_with_return_list_add(NotifierWithReturnList *list,
NotifierWithReturn *notifier);
void notifier_with_return_remove(NotifierWithReturn *notifier);
int notifier_with_return_list_notify(NotifierWithReturnList *list,
void *data);
#endif

View file

@ -3,10 +3,6 @@
#include "pthread.h"
#include <semaphore.h>
struct QemuMutex {
pthread_mutex_t lock;
};
struct QemuThread {
pthread_t thread;
};

View file

@ -2,11 +2,6 @@
#define __QEMU_THREAD_WIN32_H 1
#include "windows.h"
struct QemuMutex {
CRITICAL_SECTION lock;
LONG owner;
};
typedef struct QemuThreadData QemuThreadData;
struct QemuThread {
QemuThreadData *data;

View file

@ -3,7 +3,6 @@
#include "platform.h"
typedef struct QemuMutex QemuMutex;
typedef struct QemuThread QemuThread;
#ifdef _WIN32
@ -15,11 +14,6 @@ typedef struct QemuThread QemuThread;
#define QEMU_THREAD_JOINABLE 0
#define QEMU_THREAD_DETACHED 1
void qemu_mutex_init(QemuMutex *mutex);
void qemu_mutex_destroy(QemuMutex *mutex);
void qemu_mutex_lock(QemuMutex *mutex);
void qemu_mutex_unlock(QemuMutex *mutex);
struct uc_struct;
// return -1 on error, 0 on success
int qemu_thread_create(struct uc_struct *uc, QemuThread *thread, const char *name,

View file

@ -3,7 +3,6 @@
#include "qemu/typedefs.h"
#include "qemu-common.h"
#include "qemu/notify.h"
/* timers */
@ -106,322 +105,6 @@ static inline int64_t qemu_clock_get_us(QEMUClockType type)
return qemu_clock_get_ns(type) / SCALE_US;
}
/*
* QEMUTimerList
*/
/**
* timerlist_new:
* @type: the clock type to associate with the timerlist
* @cb: the callback to call on notification
* @opaque: the opaque pointer to pass to the callback
*
* Create a new timerlist associated with the clock of
* type @type.
*
* Returns: a pointer to the QEMUTimerList created
*/
QEMUTimerList *timerlist_new(QEMUClockType type,
QEMUTimerListNotifyCB *cb, void *opaque);
/**
* timerlist_free:
* @timer_list: the timer list to free
*
* Frees a timer_list. It must have no active timers.
*/
void timerlist_free(QEMUTimerList *timer_list);
/**
* timerlist_has_timers:
* @timer_list: the timer list to operate on
*
* Determine whether a timer list has active timers
*
* Note that this function should not be used when other threads also access
* the timer list. The return value may be outdated by the time it is acted
* upon.
*
* Returns: true if the timer list has timers.
*/
bool timerlist_has_timers(QEMUTimerList *timer_list);
/**
* timerlist_expired:
* @timer_list: the timer list to operate on
*
* Determine whether a timer list has any timers which
* are expired.
*
* Returns: true if the timer list has timers which
* have expired.
*/
bool timerlist_expired(QEMUTimerList *timer_list);
/**
* timerlist_deadline_ns:
* @timer_list: the timer list to operate on
*
* Determine the deadline for a timer_list, i.e.
* the number of nanoseconds until the first timer
* expires. Return -1 if there are no timers.
*
* Returns: the number of nanoseconds until the earliest
* timer expires -1 if none
*/
int64_t timerlist_deadline_ns(QEMUTimerList *timer_list);
/**
* timerlist_get_clock:
* @timer_list: the timer list to operate on
*
* Determine the clock type associated with a timer list.
*
* Returns: the clock type associated with the
* timer list.
*/
QEMUClockType timerlist_get_clock(QEMUTimerList *timer_list);
/**
* timerlist_run_timers:
* @timer_list: the timer list to use
*
* Call all expired timers associated with the timer list.
*
* Returns: true if any timer expired
*/
bool timerlist_run_timers(QEMUTimerList *timer_list);
/**
* timerlist_notify:
* @timer_list: the timer list to use
*
* call the notifier callback associated with the timer list.
*/
void timerlist_notify(QEMUTimerList *timer_list);
/*
* QEMUTimerListGroup
*/
/**
* timerlistgroup_init:
* @tlg: the timer list group
* @cb: the callback to call when a notify is required
* @opaque: the opaque pointer to be passed to the callback.
*
* Initialise a timer list group. This must already be
* allocated in memory and zeroed. The notifier callback is
* called whenever a clock in the timer list group is
* reenabled or whenever a timer associated with any timer
* list is modified. If @cb is specified as null, qemu_notify()
* is used instead.
*/
void timerlistgroup_init(QEMUTimerListGroup *tlg,
QEMUTimerListNotifyCB *cb, void *opaque);
/**
* timerlistgroup_deinit:
* @tlg: the timer list group
*
* Deinitialise a timer list group. This must already be
* initialised. Note the memory is not freed.
*/
void timerlistgroup_deinit(QEMUTimerListGroup *tlg);
/**
* timerlistgroup_run_timers:
* @tlg: the timer list group
*
* Run the timers associated with a timer list group.
* This will run timers on multiple clocks.
*
* Returns: true if any timer callback ran
*/
bool timerlistgroup_run_timers(QEMUTimerListGroup *tlg);
/**
* timerlistgroup_deadline_ns:
* @tlg: the timer list group
*
* Determine the deadline of the soonest timer to
* expire associated with any timer list linked to
* the timer list group. Only clocks suitable for
* deadline calculation are included.
*
* Returns: the deadline in nanoseconds or -1 if no
* timers are to expire.
*/
int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup *tlg);
/*
* QEMUTimer
*/
/**
* timer_init:
* @ts: the timer to be initialised
* @timer_list: the timer list to attach the timer to
* @scale: the scale value for the timer
* @cb: the callback to be called when the timer expires
* @opaque: the opaque pointer to be passed to the callback
*
* Initialise a new timer and associate it with @timer_list.
* The caller is responsible for allocating the memory.
*
* You need not call an explicit deinit call. Simply make
* sure it is not on a list with timer_del.
*/
void timer_init(QEMUTimer *ts,
QEMUTimerList *timer_list, int scale,
QEMUTimerCB *cb, void *opaque);
/**
* timer_new_tl:
* @timer_list: the timer list to attach the timer to
* @scale: the scale value for the timer
* @cb: the callback to be called when the timer expires
* @opaque: the opaque pointer to be passed to the callback
*
* Creeate a new timer and associate it with @timer_list.
* The memory is allocated by the function.
*
* This is not the preferred interface unless you know you
* are going to call timer_free. Use timer_init instead.
*
* Returns: a pointer to the timer
*/
static inline QEMUTimer *timer_new_tl(QEMUTimerList *timer_list,
int scale,
QEMUTimerCB *cb,
void *opaque)
{
QEMUTimer *ts = g_malloc0(sizeof(QEMUTimer));
timer_init(ts, timer_list, scale, cb, opaque);
return ts;
}
/**
* timer_free:
* @ts: the timer
*
* Free a timer (it must not be on the active list)
*/
void timer_free(QEMUTimer *ts);
/**
* timer_del:
* @ts: the timer
*
* Delete a timer from the active list.
*
* This function is thread-safe but the timer and its timer list must not be
* freed while this function is running.
*/
void timer_del(QEMUTimer *ts);
/**
* timer_mod_ns:
* @ts: the timer
* @expire_time: the expiry time in nanoseconds
*
* Modify a timer to expire at @expire_time
*
* This function is thread-safe but the timer and its timer list must not be
* freed while this function is running.
*/
void timer_mod_ns(QEMUTimer *ts, int64_t expire_time);
/**
* timer_mod_anticipate_ns:
* @ts: the timer
* @expire_time: the expiry time in nanoseconds
*
* Modify a timer to expire at @expire_time or the current time,
* whichever comes earlier.
*
* This function is thread-safe but the timer and its timer list must not be
* freed while this function is running.
*/
void timer_mod_anticipate_ns(QEMUTimer *ts, int64_t expire_time);
/**
* timer_mod:
* @ts: the timer
* @expire_time: the expire time in the units associated with the timer
*
* Modify a timer to expiry at @expire_time, taking into
* account the scale associated with the timer.
*
* This function is thread-safe but the timer and its timer list must not be
* freed while this function is running.
*/
void timer_mod(QEMUTimer *ts, int64_t expire_timer);
/**
* timer_mod_anticipate:
* @ts: the timer
* @expire_time: the expiry time in nanoseconds
*
* Modify a timer to expire at @expire_time or the current time, whichever
* comes earlier, taking into account the scale associated with the timer.
*
* This function is thread-safe but the timer and its timer list must not be
* freed while this function is running.
*/
void timer_mod_anticipate(QEMUTimer *ts, int64_t expire_time);
/**
* timer_pending:
* @ts: the timer
*
* Determines whether a timer is pending (i.e. is on the
* active list of timers, whether or not it has not yet expired).
*
* Returns: true if the timer is pending
*/
bool timer_pending(QEMUTimer *ts);
/**
* timer_expired:
* @ts: the timer
*
* Determines whether a timer has expired.
*
* Returns: true if the timer has expired
*/
bool timer_expired(QEMUTimer *timer_head, int64_t current_time);
/**
* timer_expire_time_ns:
* @ts: the timer
*
* Determine the expiry time of a timer
*
* Returns: the expiry time in nanoseconds
*/
uint64_t timer_expire_time_ns(QEMUTimer *ts);
/**
* timer_get:
* @f: the file
* @ts: the timer
*
* Read a timer @ts from a file @f
*/
void timer_get(QEMUFile *f, QEMUTimer *ts);
/**
* timer_put:
* @f: the file
* @ts: the timer
*/
void timer_put(QEMUFile *f, QEMUTimer *ts);
/*
* General utility functions
*/
/**
* qemu_timeout_ns_to_ms:
* @ns: nanosecond timeout value

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_m68k
#define countLeadingZeros32 countLeadingZeros32_m68k
#define countLeadingZeros64 countLeadingZeros64_m68k
#define count_opts_list count_opts_list_m68k
#define cp_access_ok cp_access_ok_m68k
#define cpacr_write cpacr_write_m68k
#define cpreg_field_is_64bit cpreg_field_is_64bit_m68k
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_m68k
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_m68k
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_m68k
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_m68k
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_m68k
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_m68k
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_m68k
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_m68k
#define memory_region_name memory_region_name_m68k
#define memory_region_need_escape memory_region_need_escape_m68k
#define memory_region_notify_iommu memory_region_notify_iommu_m68k
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_m68k
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_m68k
#define memory_region_present memory_region_present_m68k
#define memory_region_read_accessor memory_region_read_accessor_m68k
#define memory_region_readd_subregion memory_region_readd_subregion_m68k
#define memory_region_ref memory_region_ref_m68k
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_m68k
#define memory_region_resolve_container memory_region_resolve_container_m68k
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_m68k
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_m68k
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_m68k
#define memory_region_transaction_commit memory_region_transaction_commit_m68k
#define memory_region_unref memory_region_unref_m68k
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_m68k
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_m68k
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_m68k
#define memory_region_update_container_subregions memory_region_update_container_subregions_m68k
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_m68k
#define op_to_mov op_to_mov_m68k
#define op_to_movi op_to_movi_m68k
#define opts_accepts_any opts_accepts_any_m68k
#define opts_do_parse opts_do_parse_m68k
#define opt_set opt_set_m68k
#define opts_parse opts_parse_m68k
#define output_type_enum output_type_enum_m68k
#define packFloat128 packFloat128_m68k
#define packFloat16 packFloat16_m68k
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_m68k
#define qemu_clock_ptr qemu_clock_ptr_m68k
#define qemu_clocks qemu_clocks_m68k
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_m68k
#define qemu_get_cpu qemu_get_cpu_m68k
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_m68k
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_m68k
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_m68k
#define qemu_loglevel_mask qemu_loglevel_mask_m68k
#define qemu_log_vprintf qemu_log_vprintf_m68k
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_m68k
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_m68k
#define qemu_oom_check qemu_oom_check_m68k
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_m68k
#define qemu_opts_append qemu_opts_append_m68k
#define qemu_opts_create qemu_opts_create_m68k
#define qemu_opts_del qemu_opts_del_m68k
#define qemu_opts_do_parse qemu_opts_do_parse_m68k
#define qemu_opts_find qemu_opts_find_m68k
#define qemu_opts_foreach qemu_opts_foreach_m68k
#define qemu_opts_free qemu_opts_free_m68k
#define qemu_opts_from_qdict qemu_opts_from_qdict_m68k
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_m68k
#define qemu_opts_id qemu_opts_id_m68k
#define qemu_opts_parse qemu_opts_parse_m68k
#define qemu_opts_print qemu_opts_print_m68k
#define qemu_opts_print_help qemu_opts_print_help_m68k
#define qemu_opts_reset qemu_opts_reset_m68k
#define qemu_opts_set qemu_opts_set_m68k
#define qemu_opts_set_defaults qemu_opts_set_defaults_m68k
#define qemu_opts_set_id qemu_opts_set_id_m68k
#define qemu_opts_to_qdict qemu_opts_to_qdict_m68k
#define qemu_opts_validate qemu_opts_validate_m68k
#define qemu_parse_fd qemu_parse_fd_m68k
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_m68k
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_m68k
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_m68k
#define sort_constraints sort_constraints_m68k
#define sp_el0_access sp_el0_access_m68k
#define spin_lock spin_lock_m68k
#define spin_unlock spin_unlock_m68k
#define spsel_read spsel_read_m68k
#define spsel_write spsel_write_m68k
#define start_list start_list_m68k

View file

@ -122,16 +122,8 @@ int memory_free(struct uc_struct *uc)
return 0;
}
/* flat_view_mutex is taken around reading as->current_map; the critical
* section is extremely short, so I'm using a single mutex for every AS.
* We could also RCU for the read-side.
*
* The BQL is taken around transaction commits, hence both locks are taken
* while writing to as->current_map (with the BQL taken outside).
*/
static void memory_init(struct uc_struct *uc)
{
qemu_mutex_init(&uc->flat_view_mutex);
}
typedef struct AddrRange AddrRange;
@ -503,9 +495,6 @@ static void memory_region_read_accessor(MemoryRegion *mr,
{
uint64_t tmp;
if (mr->flush_coalesced_mmio) {
qemu_flush_coalesced_mmio_buffer();
}
tmp = mr->ops->read(mr->uc, mr->opaque, addr, size);
*value |= (tmp & mask) << shift;
}
@ -532,9 +521,6 @@ static void memory_region_write_accessor(MemoryRegion *mr,
{
uint64_t tmp;
if (mr->flush_coalesced_mmio) {
qemu_flush_coalesced_mmio_buffer();
}
tmp = (*value >> shift) & mask;
mr->ops->write(mr->uc, mr->opaque, addr, tmp, size);
}
@ -743,10 +729,8 @@ static FlatView *address_space_get_flatview(AddressSpace *as)
{
FlatView *view;
qemu_mutex_lock(&as->uc->flat_view_mutex);
view = as->current_map;
flatview_ref(view);
qemu_mutex_unlock(&as->uc->flat_view_mutex);
return view;
}
@ -856,10 +840,8 @@ static void address_space_update_topology(AddressSpace *as)
address_space_update_topology_pass(as, old_view, new_view, false);
address_space_update_topology_pass(as, old_view, new_view, true);
qemu_mutex_lock(&as->uc->flat_view_mutex);
flatview_unref(as->current_map);
as->current_map = new_view;
qemu_mutex_unlock(&as->uc->flat_view_mutex);
/* Note that all the old MemoryRegions are still alive up to this
* point. This relieves most MemoryListeners from the need to
@ -874,7 +856,6 @@ static void address_space_update_topology(AddressSpace *as)
void memory_region_transaction_begin(struct uc_struct *uc)
{
qemu_flush_coalesced_mmio_buffer();
++uc->memory_region_transaction_depth;
}
@ -1374,23 +1355,6 @@ bool memory_region_is_iommu(MemoryRegion *mr)
return mr->iommu_ops != 0;
}
void memory_region_register_iommu_notifier(MemoryRegion *mr, Notifier *n)
{
//notifier_list_add(&mr->iommu_notify, n);
}
void memory_region_unregister_iommu_notifier(Notifier *n)
{
//notifier_remove(n);
}
void memory_region_notify_iommu(MemoryRegion *mr,
IOMMUTLBEntry entry)
{
assert(memory_region_is_iommu(mr));
//notifier_list_notify(&mr->iommu_notify, &entry);
}
void memory_region_set_readonly(MemoryRegion *mr, bool readonly)
{
if (mr->readonly != readonly) {
@ -1487,7 +1451,6 @@ void memory_region_clear_coalescing(MemoryRegion *mr)
CoalescedMemoryRange *cmr;
bool updated = false;
qemu_flush_coalesced_mmio_buffer();
mr->flush_coalesced_mmio = false;
while (!QTAILQ_EMPTY(&mr->coalesced)) {

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_mips
#define countLeadingZeros32 countLeadingZeros32_mips
#define countLeadingZeros64 countLeadingZeros64_mips
#define count_opts_list count_opts_list_mips
#define cp_access_ok cp_access_ok_mips
#define cpacr_write cpacr_write_mips
#define cpreg_field_is_64bit cpreg_field_is_64bit_mips
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_mips
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_mips
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_mips
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_mips
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_mips
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_mips
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_mips
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_mips
#define memory_region_name memory_region_name_mips
#define memory_region_need_escape memory_region_need_escape_mips
#define memory_region_notify_iommu memory_region_notify_iommu_mips
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_mips
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_mips
#define memory_region_present memory_region_present_mips
#define memory_region_read_accessor memory_region_read_accessor_mips
#define memory_region_readd_subregion memory_region_readd_subregion_mips
#define memory_region_ref memory_region_ref_mips
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_mips
#define memory_region_resolve_container memory_region_resolve_container_mips
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_mips
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_mips
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_mips
#define memory_region_transaction_commit memory_region_transaction_commit_mips
#define memory_region_unref memory_region_unref_mips
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_mips
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_mips
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_mips
#define memory_region_update_container_subregions memory_region_update_container_subregions_mips
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_mips
#define op_to_mov op_to_mov_mips
#define op_to_movi op_to_movi_mips
#define opts_accepts_any opts_accepts_any_mips
#define opts_do_parse opts_do_parse_mips
#define opt_set opt_set_mips
#define opts_parse opts_parse_mips
#define output_type_enum output_type_enum_mips
#define packFloat128 packFloat128_mips
#define packFloat16 packFloat16_mips
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_mips
#define qemu_clock_ptr qemu_clock_ptr_mips
#define qemu_clocks qemu_clocks_mips
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_mips
#define qemu_get_cpu qemu_get_cpu_mips
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_mips
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_mips
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_mips
#define qemu_loglevel_mask qemu_loglevel_mask_mips
#define qemu_log_vprintf qemu_log_vprintf_mips
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_mips
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_mips
#define qemu_oom_check qemu_oom_check_mips
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_mips
#define qemu_opts_append qemu_opts_append_mips
#define qemu_opts_create qemu_opts_create_mips
#define qemu_opts_del qemu_opts_del_mips
#define qemu_opts_do_parse qemu_opts_do_parse_mips
#define qemu_opts_find qemu_opts_find_mips
#define qemu_opts_foreach qemu_opts_foreach_mips
#define qemu_opts_free qemu_opts_free_mips
#define qemu_opts_from_qdict qemu_opts_from_qdict_mips
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_mips
#define qemu_opts_id qemu_opts_id_mips
#define qemu_opts_parse qemu_opts_parse_mips
#define qemu_opts_print qemu_opts_print_mips
#define qemu_opts_print_help qemu_opts_print_help_mips
#define qemu_opts_reset qemu_opts_reset_mips
#define qemu_opts_set qemu_opts_set_mips
#define qemu_opts_set_defaults qemu_opts_set_defaults_mips
#define qemu_opts_set_id qemu_opts_set_id_mips
#define qemu_opts_to_qdict qemu_opts_to_qdict_mips
#define qemu_opts_validate qemu_opts_validate_mips
#define qemu_parse_fd qemu_parse_fd_mips
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_mips
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_mips
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_mips
#define sort_constraints sort_constraints_mips
#define sp_el0_access sp_el0_access_mips
#define spin_lock spin_lock_mips
#define spin_unlock spin_unlock_mips
#define spsel_read spsel_read_mips
#define spsel_write spsel_write_mips
#define start_list start_list_mips

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_mips64
#define countLeadingZeros32 countLeadingZeros32_mips64
#define countLeadingZeros64 countLeadingZeros64_mips64
#define count_opts_list count_opts_list_mips64
#define cp_access_ok cp_access_ok_mips64
#define cpacr_write cpacr_write_mips64
#define cpreg_field_is_64bit cpreg_field_is_64bit_mips64
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_mips64
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_mips64
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_mips64
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_mips64
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_mips64
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_mips64
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_mips64
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_mips64
#define memory_region_name memory_region_name_mips64
#define memory_region_need_escape memory_region_need_escape_mips64
#define memory_region_notify_iommu memory_region_notify_iommu_mips64
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_mips64
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_mips64
#define memory_region_present memory_region_present_mips64
#define memory_region_read_accessor memory_region_read_accessor_mips64
#define memory_region_readd_subregion memory_region_readd_subregion_mips64
#define memory_region_ref memory_region_ref_mips64
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_mips64
#define memory_region_resolve_container memory_region_resolve_container_mips64
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_mips64
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_mips64
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_mips64
#define memory_region_transaction_commit memory_region_transaction_commit_mips64
#define memory_region_unref memory_region_unref_mips64
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_mips64
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_mips64
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_mips64
#define memory_region_update_container_subregions memory_region_update_container_subregions_mips64
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_mips64
#define op_to_mov op_to_mov_mips64
#define op_to_movi op_to_movi_mips64
#define opts_accepts_any opts_accepts_any_mips64
#define opts_do_parse opts_do_parse_mips64
#define opt_set opt_set_mips64
#define opts_parse opts_parse_mips64
#define output_type_enum output_type_enum_mips64
#define packFloat128 packFloat128_mips64
#define packFloat16 packFloat16_mips64
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_mips64
#define qemu_clock_ptr qemu_clock_ptr_mips64
#define qemu_clocks qemu_clocks_mips64
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_mips64
#define qemu_get_cpu qemu_get_cpu_mips64
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_mips64
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_mips64
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_mips64
#define qemu_loglevel_mask qemu_loglevel_mask_mips64
#define qemu_log_vprintf qemu_log_vprintf_mips64
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_mips64
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_mips64
#define qemu_oom_check qemu_oom_check_mips64
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_mips64
#define qemu_opts_append qemu_opts_append_mips64
#define qemu_opts_create qemu_opts_create_mips64
#define qemu_opts_del qemu_opts_del_mips64
#define qemu_opts_do_parse qemu_opts_do_parse_mips64
#define qemu_opts_find qemu_opts_find_mips64
#define qemu_opts_foreach qemu_opts_foreach_mips64
#define qemu_opts_free qemu_opts_free_mips64
#define qemu_opts_from_qdict qemu_opts_from_qdict_mips64
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_mips64
#define qemu_opts_id qemu_opts_id_mips64
#define qemu_opts_parse qemu_opts_parse_mips64
#define qemu_opts_print qemu_opts_print_mips64
#define qemu_opts_print_help qemu_opts_print_help_mips64
#define qemu_opts_reset qemu_opts_reset_mips64
#define qemu_opts_set qemu_opts_set_mips64
#define qemu_opts_set_defaults qemu_opts_set_defaults_mips64
#define qemu_opts_set_id qemu_opts_set_id_mips64
#define qemu_opts_to_qdict qemu_opts_to_qdict_mips64
#define qemu_opts_validate qemu_opts_validate_mips64
#define qemu_parse_fd qemu_parse_fd_mips64
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_mips64
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_mips64
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_mips64
#define sort_constraints sort_constraints_mips64
#define sp_el0_access sp_el0_access_mips64
#define spin_lock spin_lock_mips64
#define spin_unlock spin_unlock_mips64
#define spsel_read spsel_read_mips64
#define spsel_write spsel_write_mips64
#define start_list start_list_mips64

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_mips64el
#define countLeadingZeros32 countLeadingZeros32_mips64el
#define countLeadingZeros64 countLeadingZeros64_mips64el
#define count_opts_list count_opts_list_mips64el
#define cp_access_ok cp_access_ok_mips64el
#define cpacr_write cpacr_write_mips64el
#define cpreg_field_is_64bit cpreg_field_is_64bit_mips64el
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_mips64el
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_mips64el
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_mips64el
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_mips64el
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_mips64el
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_mips64el
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_mips64el
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_mips64el
#define memory_region_name memory_region_name_mips64el
#define memory_region_need_escape memory_region_need_escape_mips64el
#define memory_region_notify_iommu memory_region_notify_iommu_mips64el
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_mips64el
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_mips64el
#define memory_region_present memory_region_present_mips64el
#define memory_region_read_accessor memory_region_read_accessor_mips64el
#define memory_region_readd_subregion memory_region_readd_subregion_mips64el
#define memory_region_ref memory_region_ref_mips64el
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_mips64el
#define memory_region_resolve_container memory_region_resolve_container_mips64el
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_mips64el
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_mips64el
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_mips64el
#define memory_region_transaction_commit memory_region_transaction_commit_mips64el
#define memory_region_unref memory_region_unref_mips64el
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_mips64el
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_mips64el
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_mips64el
#define memory_region_update_container_subregions memory_region_update_container_subregions_mips64el
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_mips64el
#define op_to_mov op_to_mov_mips64el
#define op_to_movi op_to_movi_mips64el
#define opts_accepts_any opts_accepts_any_mips64el
#define opts_do_parse opts_do_parse_mips64el
#define opt_set opt_set_mips64el
#define opts_parse opts_parse_mips64el
#define output_type_enum output_type_enum_mips64el
#define packFloat128 packFloat128_mips64el
#define packFloat16 packFloat16_mips64el
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_mips64el
#define qemu_clock_ptr qemu_clock_ptr_mips64el
#define qemu_clocks qemu_clocks_mips64el
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_mips64el
#define qemu_get_cpu qemu_get_cpu_mips64el
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_mips64el
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_mips64el
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_mips64el
#define qemu_loglevel_mask qemu_loglevel_mask_mips64el
#define qemu_log_vprintf qemu_log_vprintf_mips64el
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_mips64el
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_mips64el
#define qemu_oom_check qemu_oom_check_mips64el
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_mips64el
#define qemu_opts_append qemu_opts_append_mips64el
#define qemu_opts_create qemu_opts_create_mips64el
#define qemu_opts_del qemu_opts_del_mips64el
#define qemu_opts_do_parse qemu_opts_do_parse_mips64el
#define qemu_opts_find qemu_opts_find_mips64el
#define qemu_opts_foreach qemu_opts_foreach_mips64el
#define qemu_opts_free qemu_opts_free_mips64el
#define qemu_opts_from_qdict qemu_opts_from_qdict_mips64el
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_mips64el
#define qemu_opts_id qemu_opts_id_mips64el
#define qemu_opts_parse qemu_opts_parse_mips64el
#define qemu_opts_print qemu_opts_print_mips64el
#define qemu_opts_print_help qemu_opts_print_help_mips64el
#define qemu_opts_reset qemu_opts_reset_mips64el
#define qemu_opts_set qemu_opts_set_mips64el
#define qemu_opts_set_defaults qemu_opts_set_defaults_mips64el
#define qemu_opts_set_id qemu_opts_set_id_mips64el
#define qemu_opts_to_qdict qemu_opts_to_qdict_mips64el
#define qemu_opts_validate qemu_opts_validate_mips64el
#define qemu_parse_fd qemu_parse_fd_mips64el
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_mips64el
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_mips64el
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_mips64el
#define sort_constraints sort_constraints_mips64el
#define sp_el0_access sp_el0_access_mips64el
#define spin_lock spin_lock_mips64el
#define spin_unlock spin_unlock_mips64el
#define spsel_read spsel_read_mips64el
#define spsel_write spsel_write_mips64el
#define start_list start_list_mips64el

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_mipsel
#define countLeadingZeros32 countLeadingZeros32_mipsel
#define countLeadingZeros64 countLeadingZeros64_mipsel
#define count_opts_list count_opts_list_mipsel
#define cp_access_ok cp_access_ok_mipsel
#define cpacr_write cpacr_write_mipsel
#define cpreg_field_is_64bit cpreg_field_is_64bit_mipsel
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_mipsel
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_mipsel
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_mipsel
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_mipsel
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_mipsel
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_mipsel
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_mipsel
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_mipsel
#define memory_region_name memory_region_name_mipsel
#define memory_region_need_escape memory_region_need_escape_mipsel
#define memory_region_notify_iommu memory_region_notify_iommu_mipsel
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_mipsel
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_mipsel
#define memory_region_present memory_region_present_mipsel
#define memory_region_read_accessor memory_region_read_accessor_mipsel
#define memory_region_readd_subregion memory_region_readd_subregion_mipsel
#define memory_region_ref memory_region_ref_mipsel
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_mipsel
#define memory_region_resolve_container memory_region_resolve_container_mipsel
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_mipsel
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_mipsel
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_mipsel
#define memory_region_transaction_commit memory_region_transaction_commit_mipsel
#define memory_region_unref memory_region_unref_mipsel
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_mipsel
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_mipsel
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_mipsel
#define memory_region_update_container_subregions memory_region_update_container_subregions_mipsel
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_mipsel
#define op_to_mov op_to_mov_mipsel
#define op_to_movi op_to_movi_mipsel
#define opts_accepts_any opts_accepts_any_mipsel
#define opts_do_parse opts_do_parse_mipsel
#define opt_set opt_set_mipsel
#define opts_parse opts_parse_mipsel
#define output_type_enum output_type_enum_mipsel
#define packFloat128 packFloat128_mipsel
#define packFloat16 packFloat16_mipsel
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_mipsel
#define qemu_clock_ptr qemu_clock_ptr_mipsel
#define qemu_clocks qemu_clocks_mipsel
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_mipsel
#define qemu_get_cpu qemu_get_cpu_mipsel
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_mipsel
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_mipsel
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_mipsel
#define qemu_loglevel_mask qemu_loglevel_mask_mipsel
#define qemu_log_vprintf qemu_log_vprintf_mipsel
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_mipsel
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_mipsel
#define qemu_oom_check qemu_oom_check_mipsel
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_mipsel
#define qemu_opts_append qemu_opts_append_mipsel
#define qemu_opts_create qemu_opts_create_mipsel
#define qemu_opts_del qemu_opts_del_mipsel
#define qemu_opts_do_parse qemu_opts_do_parse_mipsel
#define qemu_opts_find qemu_opts_find_mipsel
#define qemu_opts_foreach qemu_opts_foreach_mipsel
#define qemu_opts_free qemu_opts_free_mipsel
#define qemu_opts_from_qdict qemu_opts_from_qdict_mipsel
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_mipsel
#define qemu_opts_id qemu_opts_id_mipsel
#define qemu_opts_parse qemu_opts_parse_mipsel
#define qemu_opts_print qemu_opts_print_mipsel
#define qemu_opts_print_help qemu_opts_print_help_mipsel
#define qemu_opts_reset qemu_opts_reset_mipsel
#define qemu_opts_set qemu_opts_set_mipsel
#define qemu_opts_set_defaults qemu_opts_set_defaults_mipsel
#define qemu_opts_set_id qemu_opts_set_id_mipsel
#define qemu_opts_to_qdict qemu_opts_to_qdict_mipsel
#define qemu_opts_validate qemu_opts_validate_mipsel
#define qemu_parse_fd qemu_parse_fd_mipsel
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_mipsel
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_mipsel
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_mipsel
#define sort_constraints sort_constraints_mipsel
#define sp_el0_access sp_el0_access_mipsel
#define spin_lock spin_lock_mipsel
#define spin_unlock spin_unlock_mipsel
#define spsel_read spsel_read_mipsel
#define spsel_write spsel_write_mipsel
#define start_list start_list_mipsel

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_powerpc
#define countLeadingZeros32 countLeadingZeros32_powerpc
#define countLeadingZeros64 countLeadingZeros64_powerpc
#define count_opts_list count_opts_list_powerpc
#define cp_access_ok cp_access_ok_powerpc
#define cpacr_write cpacr_write_powerpc
#define cpreg_field_is_64bit cpreg_field_is_64bit_powerpc
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_powerpc
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_powerpc
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_powerpc
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_powerpc
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_powerpc
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_powerpc
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_powerpc
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_powerpc
#define memory_region_name memory_region_name_powerpc
#define memory_region_need_escape memory_region_need_escape_powerpc
#define memory_region_notify_iommu memory_region_notify_iommu_powerpc
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_powerpc
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_powerpc
#define memory_region_present memory_region_present_powerpc
#define memory_region_read_accessor memory_region_read_accessor_powerpc
#define memory_region_readd_subregion memory_region_readd_subregion_powerpc
#define memory_region_ref memory_region_ref_powerpc
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_powerpc
#define memory_region_resolve_container memory_region_resolve_container_powerpc
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_powerpc
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_powerpc
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_powerpc
#define memory_region_transaction_commit memory_region_transaction_commit_powerpc
#define memory_region_unref memory_region_unref_powerpc
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_powerpc
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_powerpc
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_powerpc
#define memory_region_update_container_subregions memory_region_update_container_subregions_powerpc
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_powerpc
#define op_to_mov op_to_mov_powerpc
#define op_to_movi op_to_movi_powerpc
#define opts_accepts_any opts_accepts_any_powerpc
#define opts_do_parse opts_do_parse_powerpc
#define opt_set opt_set_powerpc
#define opts_parse opts_parse_powerpc
#define output_type_enum output_type_enum_powerpc
#define packFloat128 packFloat128_powerpc
#define packFloat16 packFloat16_powerpc
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_powerpc
#define qemu_clock_ptr qemu_clock_ptr_powerpc
#define qemu_clocks qemu_clocks_powerpc
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_powerpc
#define qemu_get_cpu qemu_get_cpu_powerpc
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_powerpc
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_powerpc
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_powerpc
#define qemu_loglevel_mask qemu_loglevel_mask_powerpc
#define qemu_log_vprintf qemu_log_vprintf_powerpc
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_powerpc
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_powerpc
#define qemu_oom_check qemu_oom_check_powerpc
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_powerpc
#define qemu_opts_append qemu_opts_append_powerpc
#define qemu_opts_create qemu_opts_create_powerpc
#define qemu_opts_del qemu_opts_del_powerpc
#define qemu_opts_do_parse qemu_opts_do_parse_powerpc
#define qemu_opts_find qemu_opts_find_powerpc
#define qemu_opts_foreach qemu_opts_foreach_powerpc
#define qemu_opts_free qemu_opts_free_powerpc
#define qemu_opts_from_qdict qemu_opts_from_qdict_powerpc
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_powerpc
#define qemu_opts_id qemu_opts_id_powerpc
#define qemu_opts_parse qemu_opts_parse_powerpc
#define qemu_opts_print qemu_opts_print_powerpc
#define qemu_opts_print_help qemu_opts_print_help_powerpc
#define qemu_opts_reset qemu_opts_reset_powerpc
#define qemu_opts_set qemu_opts_set_powerpc
#define qemu_opts_set_defaults qemu_opts_set_defaults_powerpc
#define qemu_opts_set_id qemu_opts_set_id_powerpc
#define qemu_opts_to_qdict qemu_opts_to_qdict_powerpc
#define qemu_opts_validate qemu_opts_validate_powerpc
#define qemu_parse_fd qemu_parse_fd_powerpc
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_powerpc
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_powerpc
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_powerpc
#define sort_constraints sort_constraints_powerpc
#define sp_el0_access sp_el0_access_powerpc
#define spin_lock spin_lock_powerpc
#define spin_unlock spin_unlock_powerpc
#define spsel_read spsel_read_powerpc
#define spsel_write spsel_write_powerpc
#define start_list start_list_powerpc

View file

@ -47,7 +47,6 @@ typedef struct QEMUClock {
/* We rely on BQL to protect the timerlists */
QLIST_HEAD(, QEMUTimerList) timerlists;
NotifierList reset_notifiers;
int64_t last;
QEMUClockType type;
@ -56,22 +55,6 @@ typedef struct QEMUClock {
static QEMUClock qemu_clocks[QEMU_CLOCK_MAX];
/* A QEMUTimerList is a list of timers attached to a clock. More
* than one QEMUTimerList can be attached to each clock, for instance
* used by different AioContexts / threads. Each clock also has
* a list of the QEMUTimerLists associated with it, in order that
* reenabling the clock can call all the notifiers.
*/
struct QEMUTimerList {
QEMUClock *clock;
QemuMutex active_timers_lock;
QEMUTimer *active_timers;
QLIST_ENTRY(QEMUTimerList) list;
QEMUTimerListNotifyCB *notify_cb;
void *notify_opaque;
};
/**
* qemu_clock_ptr:
* @type: type of clock
@ -85,131 +68,6 @@ static inline QEMUClock *qemu_clock_ptr(QEMUClockType type)
return &qemu_clocks[type];
}
static bool timer_expired_ns(QEMUTimer *timer_head, int64_t current_time)
{
return timer_head && (timer_head->expire_time <= current_time);
}
void timerlist_free(QEMUTimerList *timer_list)
{
assert(!timerlist_has_timers(timer_list));
if (timer_list->clock) {
QLIST_REMOVE(timer_list, list);
}
qemu_mutex_destroy(&timer_list->active_timers_lock);
g_free(timer_list);
}
bool timerlist_has_timers(QEMUTimerList *timer_list)
{
return !!timer_list->active_timers;
}
void timerlist_notify(QEMUTimerList *timer_list)
{
if (timer_list->notify_cb) {
timer_list->notify_cb(timer_list->notify_opaque);
}
}
void timer_init(QEMUTimer *ts,
QEMUTimerList *timer_list, int scale,
QEMUTimerCB *cb, void *opaque)
{
ts->timer_list = timer_list;
ts->cb = cb;
ts->opaque = opaque;
ts->scale = scale;
ts->expire_time = -1;
}
static void timer_del_locked(QEMUTimerList *timer_list, QEMUTimer *ts)
{
QEMUTimer **pt, *t;
ts->expire_time = -1;
pt = &timer_list->active_timers;
for(;;) {
t = *pt;
if (!t)
break;
if (t == ts) {
*pt = t->next;
break;
}
pt = &t->next;
}
}
static bool timer_mod_ns_locked(QEMUTimerList *timer_list,
QEMUTimer *ts, int64_t expire_time)
{
QEMUTimer **pt, *t;
/* add the timer in the sorted list */
pt = &timer_list->active_timers;
for (;;) {
t = *pt;
if (!timer_expired_ns(t, expire_time)) {
break;
}
pt = &t->next;
}
ts->expire_time = MAX(expire_time, 0);
ts->next = *pt;
*pt = ts;
return pt == &timer_list->active_timers;
}
static void timerlist_rearm(QEMUTimerList *timer_list)
{
/* Interrupt execution to force deadline recalculation. */
timerlist_notify(timer_list);
}
/* stop a timer, but do not dealloc it */
void timer_del(QEMUTimer *ts)
{
QEMUTimerList *timer_list = ts->timer_list;
qemu_mutex_lock(&timer_list->active_timers_lock);
timer_del_locked(timer_list, ts);
qemu_mutex_unlock(&timer_list->active_timers_lock);
}
/* modify the current timer so that it will be fired when current_time
>= expire_time. The corresponding callback will be called. */
void timer_mod_ns(QEMUTimer *ts, int64_t expire_time)
{
QEMUTimerList *timer_list = ts->timer_list;
bool rearm;
qemu_mutex_lock(&timer_list->active_timers_lock);
timer_del_locked(timer_list, ts);
rearm = timer_mod_ns_locked(timer_list, ts, expire_time);
qemu_mutex_unlock(&timer_list->active_timers_lock);
if (rearm) {
timerlist_rearm(timer_list);
}
}
void timer_mod(QEMUTimer *ts, int64_t expire_time)
{
timer_mod_ns(ts, expire_time * ts->scale);
}
bool timer_pending(QEMUTimer *ts)
{
return ts->expire_time >= 0;
}
uint64_t timer_expire_time_ns(QEMUTimer *ts)
{
return timer_pending(ts) ? ts->expire_time : -1;
}
/* return the host CPU cycle counter and handle stop/restart */
int64_t cpu_get_ticks(void)
{

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_sparc
#define countLeadingZeros32 countLeadingZeros32_sparc
#define countLeadingZeros64 countLeadingZeros64_sparc
#define count_opts_list count_opts_list_sparc
#define cp_access_ok cp_access_ok_sparc
#define cpacr_write cpacr_write_sparc
#define cpreg_field_is_64bit cpreg_field_is_64bit_sparc
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_sparc
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_sparc
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_sparc
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_sparc
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_sparc
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_sparc
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_sparc
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_sparc
#define memory_region_name memory_region_name_sparc
#define memory_region_need_escape memory_region_need_escape_sparc
#define memory_region_notify_iommu memory_region_notify_iommu_sparc
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_sparc
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_sparc
#define memory_region_present memory_region_present_sparc
#define memory_region_read_accessor memory_region_read_accessor_sparc
#define memory_region_readd_subregion memory_region_readd_subregion_sparc
#define memory_region_ref memory_region_ref_sparc
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_sparc
#define memory_region_resolve_container memory_region_resolve_container_sparc
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_sparc
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_sparc
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_sparc
#define memory_region_transaction_commit memory_region_transaction_commit_sparc
#define memory_region_unref memory_region_unref_sparc
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_sparc
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_sparc
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_sparc
#define memory_region_update_container_subregions memory_region_update_container_subregions_sparc
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_sparc
#define op_to_mov op_to_mov_sparc
#define op_to_movi op_to_movi_sparc
#define opts_accepts_any opts_accepts_any_sparc
#define opts_do_parse opts_do_parse_sparc
#define opt_set opt_set_sparc
#define opts_parse opts_parse_sparc
#define output_type_enum output_type_enum_sparc
#define packFloat128 packFloat128_sparc
#define packFloat16 packFloat16_sparc
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_sparc
#define qemu_clock_ptr qemu_clock_ptr_sparc
#define qemu_clocks qemu_clocks_sparc
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_sparc
#define qemu_get_cpu qemu_get_cpu_sparc
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_sparc
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_sparc
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_sparc
#define qemu_loglevel_mask qemu_loglevel_mask_sparc
#define qemu_log_vprintf qemu_log_vprintf_sparc
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_sparc
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_sparc
#define qemu_oom_check qemu_oom_check_sparc
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_sparc
#define qemu_opts_append qemu_opts_append_sparc
#define qemu_opts_create qemu_opts_create_sparc
#define qemu_opts_del qemu_opts_del_sparc
#define qemu_opts_do_parse qemu_opts_do_parse_sparc
#define qemu_opts_find qemu_opts_find_sparc
#define qemu_opts_foreach qemu_opts_foreach_sparc
#define qemu_opts_free qemu_opts_free_sparc
#define qemu_opts_from_qdict qemu_opts_from_qdict_sparc
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_sparc
#define qemu_opts_id qemu_opts_id_sparc
#define qemu_opts_parse qemu_opts_parse_sparc
#define qemu_opts_print qemu_opts_print_sparc
#define qemu_opts_print_help qemu_opts_print_help_sparc
#define qemu_opts_reset qemu_opts_reset_sparc
#define qemu_opts_set qemu_opts_set_sparc
#define qemu_opts_set_defaults qemu_opts_set_defaults_sparc
#define qemu_opts_set_id qemu_opts_set_id_sparc
#define qemu_opts_to_qdict qemu_opts_to_qdict_sparc
#define qemu_opts_validate qemu_opts_validate_sparc
#define qemu_parse_fd qemu_parse_fd_sparc
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_sparc
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_sparc
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_sparc
#define sort_constraints sort_constraints_sparc
#define sp_el0_access sp_el0_access_sparc
#define spin_lock spin_lock_sparc
#define spin_unlock spin_unlock_sparc
#define spsel_read spsel_read_sparc
#define spsel_write spsel_write_sparc
#define start_list start_list_sparc

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_sparc64
#define countLeadingZeros32 countLeadingZeros32_sparc64
#define countLeadingZeros64 countLeadingZeros64_sparc64
#define count_opts_list count_opts_list_sparc64
#define cp_access_ok cp_access_ok_sparc64
#define cpacr_write cpacr_write_sparc64
#define cpreg_field_is_64bit cpreg_field_is_64bit_sparc64
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_sparc64
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_sparc64
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_sparc64
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_sparc64
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_sparc64
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_sparc64
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_sparc64
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_sparc64
#define memory_region_name memory_region_name_sparc64
#define memory_region_need_escape memory_region_need_escape_sparc64
#define memory_region_notify_iommu memory_region_notify_iommu_sparc64
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_sparc64
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_sparc64
#define memory_region_present memory_region_present_sparc64
#define memory_region_read_accessor memory_region_read_accessor_sparc64
#define memory_region_readd_subregion memory_region_readd_subregion_sparc64
#define memory_region_ref memory_region_ref_sparc64
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_sparc64
#define memory_region_resolve_container memory_region_resolve_container_sparc64
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_sparc64
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_sparc64
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_sparc64
#define memory_region_transaction_commit memory_region_transaction_commit_sparc64
#define memory_region_unref memory_region_unref_sparc64
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_sparc64
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_sparc64
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_sparc64
#define memory_region_update_container_subregions memory_region_update_container_subregions_sparc64
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_sparc64
#define op_to_mov op_to_mov_sparc64
#define op_to_movi op_to_movi_sparc64
#define opts_accepts_any opts_accepts_any_sparc64
#define opts_do_parse opts_do_parse_sparc64
#define opt_set opt_set_sparc64
#define opts_parse opts_parse_sparc64
#define output_type_enum output_type_enum_sparc64
#define packFloat128 packFloat128_sparc64
#define packFloat16 packFloat16_sparc64
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_sparc64
#define qemu_clock_ptr qemu_clock_ptr_sparc64
#define qemu_clocks qemu_clocks_sparc64
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_sparc64
#define qemu_get_cpu qemu_get_cpu_sparc64
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_sparc64
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_sparc64
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_sparc64
#define qemu_loglevel_mask qemu_loglevel_mask_sparc64
#define qemu_log_vprintf qemu_log_vprintf_sparc64
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_sparc64
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_sparc64
#define qemu_oom_check qemu_oom_check_sparc64
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_sparc64
#define qemu_opts_append qemu_opts_append_sparc64
#define qemu_opts_create qemu_opts_create_sparc64
#define qemu_opts_del qemu_opts_del_sparc64
#define qemu_opts_do_parse qemu_opts_do_parse_sparc64
#define qemu_opts_find qemu_opts_find_sparc64
#define qemu_opts_foreach qemu_opts_foreach_sparc64
#define qemu_opts_free qemu_opts_free_sparc64
#define qemu_opts_from_qdict qemu_opts_from_qdict_sparc64
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_sparc64
#define qemu_opts_id qemu_opts_id_sparc64
#define qemu_opts_parse qemu_opts_parse_sparc64
#define qemu_opts_print qemu_opts_print_sparc64
#define qemu_opts_print_help qemu_opts_print_help_sparc64
#define qemu_opts_reset qemu_opts_reset_sparc64
#define qemu_opts_set qemu_opts_set_sparc64
#define qemu_opts_set_defaults qemu_opts_set_defaults_sparc64
#define qemu_opts_set_id qemu_opts_set_id_sparc64
#define qemu_opts_to_qdict qemu_opts_to_qdict_sparc64
#define qemu_opts_validate qemu_opts_validate_sparc64
#define qemu_parse_fd qemu_parse_fd_sparc64
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_sparc64
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_sparc64
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_sparc64
#define sort_constraints sort_constraints_sparc64
#define sp_el0_access sp_el0_access_sparc64
#define spin_lock spin_lock_sparc64
#define spin_unlock spin_unlock_sparc64
#define spsel_read spsel_read_sparc64
#define spsel_write spsel_write_sparc64
#define start_list start_list_sparc64

View file

@ -27,12 +27,10 @@
void helper_lock(CPUX86State *env)
{
spin_lock(&x86_env_get_cpu(env)->parent_obj.uc->x86_global_cpu_lock);
}
void helper_unlock(CPUX86State *env)
{
spin_unlock(&x86_env_get_cpu(env)->parent_obj.uc->x86_global_cpu_lock);
}
void helper_cmpxchg8b(CPUX86State *env, target_ulong a0)

View file

@ -31,47 +31,6 @@ static void error_exit(int err, const char *msg)
abort();
}
void qemu_mutex_init(QemuMutex *mutex)
{
int err;
pthread_mutexattr_t mutexattr;
pthread_mutexattr_init(&mutexattr);
pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_ERRORCHECK);
err = pthread_mutex_init(&mutex->lock, &mutexattr);
pthread_mutexattr_destroy(&mutexattr);
if (err)
error_exit(err, __func__);
}
void qemu_mutex_destroy(QemuMutex *mutex)
{
int err;
err = pthread_mutex_destroy(&mutex->lock);
if (err)
error_exit(err, __func__);
}
void qemu_mutex_lock(QemuMutex *mutex)
{
int err;
err = pthread_mutex_lock(&mutex->lock);
if (err)
error_exit(err, __func__);
}
void qemu_mutex_unlock(QemuMutex *mutex)
{
int err;
err = pthread_mutex_unlock(&mutex->lock);
if (err)
error_exit(err, __func__);
}
int qemu_thread_create(struct uc_struct *uc, QemuThread *thread, const char *name,
void *(*start_routine)(void*),
void *arg, int mode)

View file

@ -200,7 +200,6 @@
#define count_cpreg count_cpreg_x86_64
#define countLeadingZeros32 countLeadingZeros32_x86_64
#define countLeadingZeros64 countLeadingZeros64_x86_64
#define count_opts_list count_opts_list_x86_64
#define cp_access_ok cp_access_ok_x86_64
#define cpacr_write cpacr_write_x86_64
#define cpreg_field_is_64bit cpreg_field_is_64bit_x86_64
@ -270,7 +269,6 @@
#define cpu_physical_memory_rw cpu_physical_memory_rw_x86_64
#define cpu_physical_memory_set_dirty_flag cpu_physical_memory_set_dirty_flag_x86_64
#define cpu_physical_memory_set_dirty_range cpu_physical_memory_set_dirty_range_x86_64
#define cpu_physical_memory_set_dirty_range_nocode cpu_physical_memory_set_dirty_range_nocode_x86_64
#define cpu_physical_memory_unmap cpu_physical_memory_unmap_x86_64
#define cpu_physical_memory_write_rom cpu_physical_memory_write_rom_x86_64
#define cpu_physical_memory_write_rom_internal cpu_physical_memory_write_rom_internal_x86_64
@ -2061,14 +2059,12 @@
#define memory_region_is_unassigned memory_region_is_unassigned_x86_64
#define memory_region_name memory_region_name_x86_64
#define memory_region_need_escape memory_region_need_escape_x86_64
#define memory_region_notify_iommu memory_region_notify_iommu_x86_64
#define memory_region_oldmmio_read_accessor memory_region_oldmmio_read_accessor_x86_64
#define memory_region_oldmmio_write_accessor memory_region_oldmmio_write_accessor_x86_64
#define memory_region_present memory_region_present_x86_64
#define memory_region_read_accessor memory_region_read_accessor_x86_64
#define memory_region_readd_subregion memory_region_readd_subregion_x86_64
#define memory_region_ref memory_region_ref_x86_64
#define memory_region_register_iommu_notifier memory_region_register_iommu_notifier_x86_64
#define memory_region_resolve_container memory_region_resolve_container_x86_64
#define memory_region_rom_device_set_romd memory_region_rom_device_set_romd_x86_64
#define memory_region_section_get_iotlb memory_region_section_get_iotlb_x86_64
@ -2082,7 +2078,6 @@
#define memory_region_transaction_begin memory_region_transaction_begin_x86_64
#define memory_region_transaction_commit memory_region_transaction_commit_x86_64
#define memory_region_unref memory_region_unref_x86_64
#define memory_region_unregister_iommu_notifier memory_region_unregister_iommu_notifier_x86_64
#define memory_region_update_coalesced_range memory_region_update_coalesced_range_x86_64
#define memory_region_update_coalesced_range_as memory_region_update_coalesced_range_as_x86_64
#define memory_region_update_container_subregions memory_region_update_container_subregions_x86_64
@ -2184,10 +2179,6 @@
#define open_modeflags open_modeflags_x86_64
#define op_to_mov op_to_mov_x86_64
#define op_to_movi op_to_movi_x86_64
#define opts_accepts_any opts_accepts_any_x86_64
#define opts_do_parse opts_do_parse_x86_64
#define opt_set opt_set_x86_64
#define opts_parse opts_parse_x86_64
#define output_type_enum output_type_enum_x86_64
#define packFloat128 packFloat128_x86_64
#define packFloat16 packFloat16_x86_64
@ -2384,7 +2375,6 @@
#define qemu_clock_get_us qemu_clock_get_us_x86_64
#define qemu_clock_ptr qemu_clock_ptr_x86_64
#define qemu_clocks qemu_clocks_x86_64
#define qemu_flush_coalesced_mmio_buffer qemu_flush_coalesced_mmio_buffer_x86_64
#define qemu_get_cpu qemu_get_cpu_x86_64
#define qemu_get_guest_memory_mapping qemu_get_guest_memory_mapping_x86_64
#define qemu_get_guest_simple_memory_mapping qemu_get_guest_simple_memory_mapping_x86_64
@ -2401,29 +2391,7 @@
#define qemu_log_flush qemu_log_flush_x86_64
#define qemu_loglevel_mask qemu_loglevel_mask_x86_64
#define qemu_log_vprintf qemu_log_vprintf_x86_64
#define qemu_mutex_lock_ramlist qemu_mutex_lock_ramlist_x86_64
#define qemu_mutex_unlock_ramlist qemu_mutex_unlock_ramlist_x86_64
#define qemu_oom_check qemu_oom_check_x86_64
#define qemu_opts_absorb_qdict qemu_opts_absorb_qdict_x86_64
#define qemu_opts_append qemu_opts_append_x86_64
#define qemu_opts_create qemu_opts_create_x86_64
#define qemu_opts_del qemu_opts_del_x86_64
#define qemu_opts_do_parse qemu_opts_do_parse_x86_64
#define qemu_opts_find qemu_opts_find_x86_64
#define qemu_opts_foreach qemu_opts_foreach_x86_64
#define qemu_opts_free qemu_opts_free_x86_64
#define qemu_opts_from_qdict qemu_opts_from_qdict_x86_64
#define qemu_opts_from_qdict_1 qemu_opts_from_qdict_1_x86_64
#define qemu_opts_id qemu_opts_id_x86_64
#define qemu_opts_parse qemu_opts_parse_x86_64
#define qemu_opts_print qemu_opts_print_x86_64
#define qemu_opts_print_help qemu_opts_print_help_x86_64
#define qemu_opts_reset qemu_opts_reset_x86_64
#define qemu_opts_set qemu_opts_set_x86_64
#define qemu_opts_set_defaults qemu_opts_set_defaults_x86_64
#define qemu_opts_set_id qemu_opts_set_id_x86_64
#define qemu_opts_to_qdict qemu_opts_to_qdict_x86_64
#define qemu_opts_validate qemu_opts_validate_x86_64
#define qemu_parse_fd qemu_parse_fd_x86_64
#define qemu_ram_addr_from_host qemu_ram_addr_from_host_x86_64
#define qemu_ram_addr_from_host_nofail qemu_ram_addr_from_host_nofail_x86_64
@ -2600,8 +2568,6 @@
#define softmmu_unlock_user softmmu_unlock_user_x86_64
#define sort_constraints sort_constraints_x86_64
#define sp_el0_access sp_el0_access_x86_64
#define spin_lock spin_lock_x86_64
#define spin_unlock spin_unlock_x86_64
#define spsel_read spsel_read_x86_64
#define spsel_write spsel_write_x86_64
#define start_list start_list_x86_64

2
uc.c
View file

@ -157,8 +157,6 @@ uc_err uc_open(uc_arch arch, uc_mode mode, uc_engine **result)
uc->ram_list.blocks.tqh_first = NULL;
uc->ram_list.blocks.tqh_last = &(uc->ram_list.blocks.tqh_first);
uc->x86_global_cpu_lock = SPIN_LOCK_UNLOCKED;
uc->memory_listeners.tqh_first = NULL;
uc->memory_listeners.tqh_last = &uc->memory_listeners.tqh_first;