unicorn/qemu
Igor Mammedov 87db6e033b
cpu: Use CPUClass->parse_features() as convertor to global properties
Currently CPUClass->parse_features() is used to parse -cpu
features string and set properties on created CPU instances.

But considering that features specified by -cpu apply to every
created CPU instance, it doesn't make sense to parse the same
features string for every CPU created. It also makes every target
that cares about parsing features string explicitly call
CPUClass->parse_features() parser, which gets in a way if we
consider using generic device_add for CPU hotplug as device_add
has not a clue about CPU specific hooks.

Turns out we can use global properties mechanism to set
properties on every created CPU instance for a given type. That
way it's possible to convert CPU features into a set of global
properties for CPU type specified by -cpu cpu_model and common
Device.device_post_init() will apply them to CPU of given type
automatically regardless whether it's manually created CPU or CPU
created with help of device_add.

Backports commits 62a48a2a5798425997152dea3fc48708f9116c04 and
f313369fdb78f849ecbbd8e5d88f01ddf38786c8 from qemu
2018-03-20 12:00:27 -04:00
..
accel cpu-exec: fix exception_index handling 2018-03-17 19:33:05 -04:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: fix crash on int conversion of SNaN 2018-03-09 11:40:17 -05:00
hw cpu: Use CPUClass->parse_features() as convertor to global properties 2018-03-20 12:00:27 -04:00
include cpu: Use CPUClass->parse_features() as convertor to global properties 2018-03-20 12:00:27 -04:00
qapi qapi: Make more of qobject_to() 2018-03-20 11:05:44 -04:00
qobject qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
qom cpu: Use CPUClass->parse_features() as convertor to global properties 2018-03-20 12:00:27 -04:00
scripts qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
target cpu: Use CPUClass->parse_features() as convertor to global properties 2018-03-20 12:00:27 -04:00
tcg tcg/i386: Perform comparison pass against qemu 2018-03-20 06:29:06 -04:00
util membarrier: add --enable-membarrier 2018-03-17 19:30:43 -04:00
aarch64.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
aarch64eb.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
armeb.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure use _Static_assert in QEMU_BUILD_BUG_ON 2018-03-20 10:42:20 -04:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c memory: Share FlatView's and dispatch trees between address spaces 2018-03-11 22:05:44 -04:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
Makefile qapi: Don't create useless directory qapi-generated 2018-03-09 11:36:49 -05:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target tcg: move tcg backend files into accel/tcg/ 2018-03-13 11:48:15 -04:00
memory.c memory: Share special empty FlatView 2018-03-11 22:34:28 -04:00
memory_ldst.inc.c exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
mips64.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
mips64el.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
mipsel.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
powerpc.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
sparc.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
sparc64.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00
unicorn_common.h memory: Share special empty FlatView 2018-03-11 22:34:28 -04:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c machine: Eliminate QEMUMachine and qemu_register_machine() 2018-03-11 15:22:25 -04:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h qobject: introduce qobject_get_try_str() 2018-03-20 11:10:03 -04:00