Richard Henderson
42a268c241
tcg: Change translator-side labels to a pointer
...
This is improved type checking for the translators -- it's no longer
possible to accidentally swap arguments to the branch functions.
Note that the code generating backends still manipulate labels as int.
With notable exceptions, the scope of the change is just a few lines
for each target, so it's not worth building extra machinery to do this
change in per-target increments.
Cc: Peter Maydell <peter.maydell@linaro.org >
Cc: Edgar E. Iglesias <edgar.iglesias@gmail.com >
Cc: Michael Walle <michael@walle.cc >
Cc: Leon Alrae <leon.alrae@imgtec.com >
Cc: Anthony Green <green@moxielogic.com >
Cc: Jia Liu <proljc@gmail.com >
Cc: Alexander Graf <agraf@suse.de >
Cc: Aurelien Jarno <aurelien@aurel32.net >
Cc: Blue Swirl <blauwirbel@gmail.com >
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn >
Cc: Paolo Bonzini <pbonzini@redhat.com >
Cc: Max Filippov <jcmvbkbc@gmail.com >
Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2015-03-13 12:28:18 -07:00
Eduardo Habkost
2994fd96d9
cpu: Make cpu_init() return QOM CPUState object
...
Instead of making cpu_init() return CPUArchState, return CPUState.
Changes were made using the Coccinelle semantic patch below.
@@
typedef CPUState;
identifier e;
expression args;
type CPUArchState;
@@
- e =
+ cpu =
cpu_init(args);
- if (!e) {
+ if (!cpu) {
...
}
- cpu = ENV_GET_CPU(env);
+ e = cpu->env_ptr;
@@
identifier new_env, new_cpu, env, cpu;
type CPUArchState;
expression args;
@@
-{
- CPUState *cpu = ENV_GET_CPU(env);
- CPUArchState *new_env = cpu_init(args);
- CPUState *new_cpu = ENV_GET_CPU(new_env);
+{
+ CPUState *cpu = ENV_GET_CPU(env);
+ CPUState *new_cpu = cpu_init(args);
+ CPUArchState *new_env = new_cpu->env_ptr;
...
}
@@
identifier c, cpu_init_func, cpu_model;
type StateType, CPUType;
@@
-static inline StateType* cpu_init(const char *cpu_model)
-{
- CPUType *c = cpu_init_func(cpu_model);
(
- if (c == NULL) {
- return NULL;
- }
- return &c->env;
|
- if (c) {
- return &c->env;
- }
- return NULL;
)
-}
+#define cpu_init(cpu_model) CPU(cpu_init_func(cpu_model))
@@
identifier cpu_init_func;
identifier model;
@@
-#define cpu_init(model) (&cpu_init_func(model)->env)
+#define cpu_init(model) CPU(cpu_init_func(model))
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Cc: Blue Swirl <blauwirbel@gmail.com >
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn >
Cc: Riku Voipio <riku.voipio@iki.fi >
Cc: Richard Henderson <rth@twiddle.net >
Cc: Peter Maydell <peter.maydell@linaro.org >
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com >
Cc: Paolo Bonzini <pbonzini@redhat.com >
Cc: Michael Walle <michael@walle.cc >
Cc: Aurelien Jarno <aurelien@aurel32.net >
Cc: Leon Alrae <leon.alrae@imgtec.com >
Cc: Anthony Green <green@moxielogic.com >
Cc: Jia Liu <proljc@gmail.com >
Cc: Alexander Graf <agraf@suse.de >
Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Cc: Max Filippov <jcmvbkbc@gmail.com >
[AF: Fixed up cpu_copy() manually]
Signed-off-by: Andreas Färber <afaerber@suse.de >
2015-03-10 17:33:51 +01:00
Richard Henderson
fe700adb3d
tcg: Introduce tcg_op_buf_count and tcg_op_buf_full
...
The method by which we count the number of ops emitted
is going to change. Abstract that away into some inlines.
Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2015-02-12 21:21:38 -08:00
Richard Henderson
0a7df5da98
tcg: Move emit of INDEX_op_end into gen_tb_end
...
Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2015-02-12 21:21:38 -08:00
Peter Maydell
ec53b45bcd
exec.c: Drop TARGET_HAS_ICE define and checks
...
The TARGET_HAS_ICE #define is intended to indicate whether a target-*
guest CPU implementation supports the breakpoint handling. However,
all our guest CPUs have that support (the only two which do not
define TARGET_HAS_ICE are unicore32 and openrisc, and in both those
cases the bp support is present and the lack of the #define is just
a bug). So remove the #define entirely: all new guest CPU support
should include breakpoint handling as part of the basic implementation.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Message-id: 1420484960-32365-1-git-send-email-peter.maydell@linaro.org
2015-01-20 15:19:32 +00:00
Paolo Bonzini
cd42d5b236
gen-icount: check cflags instead of use_icount global
...
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2015-01-03 09:22:12 +01:00
Paolo Bonzini
bd79255d25
translate: check cflags instead of use_icount global
...
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2015-01-03 09:22:10 +01:00
Richard Henderson
dde7c241e3
target-alpha: Use cpu_exec_interrupt qom hook
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
Message-id: 1410626734-3804-12-git-send-email-rth@twiddle.net
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2014-09-25 18:54:21 +01:00
Lluís Vilanova
a7e30d84ce
trace: [tcg] Include TCG-tracing header on all targets
...
Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-12 14:26:12 +01:00
Paolo Bonzini
f08b617018
softmmu: introduce cpu_ldst.h
...
This will collect all load and store helpers soon. For now
it is just a replacement for softmmu_exec.h, which this patch
stops including directly, but we also include it where this will
be necessary in order to simplify the next patch.
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2014-06-05 16:10:33 +02:00
Paolo Bonzini
0f590e749f
softmmu: commonize helper definitions
...
They do not need to be in op_helper.c. Because cputlb.c now includes
softmmu_template.h twice for each size, io_readX must be elided the
second time through.
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2014-06-05 16:10:33 +02:00
Paolo Bonzini
d94f0a8ecb
softmmu: move ALIGNED_ONLY to cpu.h
...
Prepare for moving softmmu_header.h inclusion out of .c files
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2014-06-05 16:10:33 +02:00
Paolo Bonzini
93e22326d6
softmmu: make do_unaligned_access a method of CPU
...
We will reference it from more files in the next patch. To avoid
ruining the small steps we're making towards multi-target, make
it a method of CPU rather than just a global.
Reviewed-by: Andreas Färber <afaerber@suse.de >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2014-06-05 16:10:31 +02:00
Richard Henderson
2ef6175aa7
tcg: Invert the inclusion of helper.h
...
Rather than include helper.h with N values of GEN_HELPER, include a
secondary file that sets up the macros to include helper.h. This
minimizes the files that must be rebuilt when changing the macros
for file N.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-05-28 09:33:54 -07:00
Juan Quintela
35d08458a9
savevm: Remove all the unneeded version_minimum_id_old (rest)
...
After previous Peter patch, they are redundant. This way we don't
assign them except when needed. Once there, there were lots of case
where the ".fields" indentation was wrong:
.fields = (VMStateField []) {
and
.fields = (VMStateField []) {
Change all the combinations to:
.fields = (VMStateField[]){
The biggest problem (appart from aesthetics) was that checkpatch complained
when we copy&pasted the code from one place to another.
Signed-off-by: Juan Quintela <quintela@redhat.com >
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
2014-05-14 15:24:51 +02:00
Richard Henderson
214bb280c6
target-alpha: Fix RDUSP
...
Commit 06ef8604e9 contained a typo.
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-05-02 20:42:02 -07:00
Richard Henderson
06ef8604e9
target-alpha: Remove cpu_unique, cpu_sysval, cpu_usp
...
Technically, these variables could have been referenced both via
offsets from env and as TCG registers, which would be illegal.
Of course, that could only be done from PALcode, and ours doesn't
do that.
But honestly, these are used infrequently enough that they don't
really need to be TCG registers. We wind up with exactly the same
code if we follow the letter of the law and issue explicit ld/st.
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
39acc64741
target-alpha: Tidy alpha_translate_init
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
e566be049a
target-alpha: Don't issue goto_tb under singlestep
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
8f811b9a4a
target-alpha: Use non-local temps for zero/sink
...
These values are no longer live across branches.
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
a9e05a1ceb
target-alpha: Use extract to get insn fields
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
0e154fe92c
target-alpha: Convert mfpr/mtpr to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
ef3765cb95
target-alpha: Convert gen_cpys et al to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
e8d8fef48f
target-alpha: Convert gen_fcvtlq/ql to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
6580935246
target-alpha: Convert gen_fcmov to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
76bff4f82f
target-alpha: Convert gen_bcond to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
e20b8c04a3
target-alpha: Convert most ieee insns to source/sink
...
This one fixes a bug, previously noted as supressing exceptions
in the (unlikely) case the destination register was $f31.
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
8b0190bbde
target-alpha: Convert gen_ieee_input to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
f477ed3c11
target-alpha: Convert MVIOP2 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
cd2754addc
target-alpha: Convert ARITH3 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
3d045dbca5
target-alpha: Convert FARITH3 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
baee04abba
target-alpha: Convert FARITH2 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
b144be9e06
target-alpha: Convert gen_zap/not to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
5e5863ecf1
target-alpha: Convert gen_ins_h/l to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
9a734d64f9
target-alpha: Convert gen_ext_h/l to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:42 -07:00
Richard Henderson
9a8fa1bdad
target-alpha: Convert gen_msk_h/l to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
83ebb7cd01
target-alpha: Convert gen_cmov to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
42774a56ec
target-alpha: Convert ARITH3_EX to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
958683482c
target-alpha: Convert gen_cmp to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
cd2d46fd21
target-alpha: Convert gen_store_conditional to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
595b8fdd54
target-alpha: Convert gen_load/store_mem to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
a4af30447b
target-alpha: Convert opcode 0x1F to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
46010969f3
target-alpha: Convert opcode 0x1E to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
c67b67e511
target-alpha: Convert opcode 0x1C to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
1eaa1da7e4
target-alpha: Convert opcode 0x1B to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
8f56ced8aa
target-alpha: Convert opcode 0x1A to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
89fe090bb3
target-alpha: Convert opcode 0x18 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
6b88b37c0e
target-alpha: Convert opcode 0x17 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
075b8ddb9b
target-alpha: Convert opcode 0x14 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00
Richard Henderson
de4d3555fa
target-alpha: Convert opcode 0x13 to source/sink
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2014-04-17 11:47:41 -07:00