aboutsummaryrefslogtreecommitdiff
path: root/target-s390x/translate.c
AgeCommit message (Collapse)AuthorFilesLines
2014-11-05s390x: Implement SAM{24,31,64}Alexander Graf1-0/+12
The SAM instructions simply change 2 bits in PSW.MASK to advertise the current memory mode. While we can't fully guarantee that 31 bit mode (or even remotely 24 bit mode) actually work correctly, we don't check whether lpswe modifies these bits, so we shouldn't keep the guest from executing SAM instructions either. This patch implements all SAM instrutions with their actual PSW changing semantics, making more recent Linux kernels boot properly which do issue a SAM31 call during early boot. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Reviewed-by: Richard Henderson <rth@twiddle.net>
2014-08-12trace: [tcg] Include TCG-tracing header on all targetsLluís Vilanova1-0/+2
Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2014-06-24target-s390x: Remove unused ld_code6() functionPeter Maydell1-5/+0
The ld_code6() function is unused; remove it. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2014-06-05softmmu: introduce cpu_ldst.hPaolo Bonzini1-0/+1
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-05-28tcg: Invert the inclusion of helper.hRichard Henderson1-3/+2
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-03-13cpu: Move breakpoints field from CPU_COMMON to CPUStateAndreas Färber1-2/+2
Most targets were using offsetof(CPUFooState, breakpoints) to determine how much of CPUFooState to clear on reset. Use the next field after CPU_COMMON instead, if any, or sizeof(CPUFooState) otherwise. Signed-off-by: Andreas Färber <afaerber@suse.de>
2013-10-10tcg: Move helper registration into tcg_context_initRichard Henderson1-4/+0
No longer needs to be done on a per-target basis. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-09-02tcg: Change tcg_gen_exit_tb argument to uintptr_tRichard Henderson1-4/+4
And update all users. Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-07-23cpu: Move singlestep_enabled field from CPU_COMMON to CPUStateAndreas Färber1-2/+3
Prepares for changing cpu_single_step() argument to CPUState. Acked-by: Michael Walle <michael@walle.cc> (for lm32) Signed-off-by: Andreas Färber <afaerber@suse.de>
2013-07-09target-s390x: Change gen_intermediate_code_internal() argument to S390CPUAndreas Färber1-4/+5
Also use bool type while at it. Prepares for moving singlestep_enabled field to CPUState. Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
2013-06-28cpu: Turn cpu_dump_{state,statistics}() into CPUState hooksAndreas Färber1-2/+4
Make cpustats monitor command available unconditionally. Prepares for changing kvm_handle_internal_error() and kvm_cpu_exec() arguments to CPUState. Signed-off-by: Andreas Färber <afaerber@suse.de>
2013-05-01Trivial grammar and spelling fixesStefan Weil1-1/+1
similiar -> similar recieve -> receive transfered -> transferred preperation -> preparation Most changes are in comments, one modifies a parameter name in a function prototype. The spelling fixes were made using codespell. Signed-off-by: Stefan Weil <sw@weilnetz.de> Acked-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2013-04-05target-s390: Fix SRNMTRichard Henderson1-0/+1
Fallthough into abort = oops. Cc: qemu-trivial@nongnu.org Cc: Alexander Graf <agraf@suse.de> Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-03-22Fix typos and misspellingsPeter Maydell1-1/+1
Fix various typos and misspellings. The bulk of these were found with codespell. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-03-03gen-icount.h: Rename gen_icount_start/end to gen_tb_start/endPeter Maydell1-2/+2
The gen_icount_start/end functions are now somewhat misnamed since they are useful for generic "start/end of TB" code, used for more than just icount. Rename them to gen_tb_start/end. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2013-02-23target-s390x: Use mulu2 for mlgr insnRichard Henderson1-2/+1
Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2013-01-05target-s390: Perform COMPARE AND SWAP inlineRichard Henderson1-34/+118
Still no proper solution for CONFIG_USER_ONLY, but the system version is significantly better. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Optimize get_addressRichard Henderson1-26/+18
Don't load the displacement into a register first, add it second so that tcg_gen_addi_i64 can eliminate zeros. Don't mask the displacement first so that we don't turn small negative numbers into large positive numbers. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Optimize ADDC/SUBBRichard Henderson1-19/+37
Giving the proper mask to disas_jcc allows us to generate an inline comparison generating the carry/borrow with setcond. In the very worst case, when we must use the external helper to compute a value for CC, we generate (cc > 1) instead of (cc >> 1), which is only very slightly slower on common cpus. In the very best case, when the CC comes from a COMPARE insn and the compiler is using ALCG with zero, everything folds out to become just the setcond that the compiler wanted. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Optimize ADDU/SUBU CC testingRichard Henderson1-0/+68
We can easily generate some masks for logical add/subtract inline. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Tidy comparisonsRichard Henderson1-22/+17
After full conversion, we can audit the uses of LTGT cc ops and see that none of the instructions can ever set CC=3. Thus we can extend the table to treat that bit as ignored. This fixes a regression wrt the pre-conversion translation in which NE was used for both m=6 and m=7. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Optmize emitting discardsRichard Henderson1-6/+24
While they aren't expensive, they aren't free to process. When we know that the three cc helper variables are dead, don't kill them. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Optimize XCRichard Henderson1-3/+47
Notice XC with same address and convert that to store of zero. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement LOAD/SET FP AND SIGNALRichard Henderson1-0/+6
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement SET ROUNDING MODERichard Henderson1-0/+39
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Check insn operand specificationsRichard Henderson1-36/+159
Removes all the fixmes for even register numbers, etc. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement CPSDRRichard Henderson1-0/+16
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement POPCNTRichard Henderson1-0/+6
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement CONVERT FROM LOGICALRichard Henderson1-0/+25
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement CONVERT TO LOGICALRichard Henderson1-0/+54
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement STORE ON CONDITIONRichard Henderson1-0/+29
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement LOAD ON CONDITIONRichard Henderson1-0/+30
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement COMPARE AND TRAPRichard Henderson1-0/+29
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement R[NOX]SBGRichard Henderson1-0/+53
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement RISBGRichard Henderson1-0/+83
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement COMPARE AND BRANCHRichard Henderson1-0/+28
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Tidy s->op_cc handlingRichard Henderson1-40/+55
There's no need to force computation of the true cc_op when taking an exception or single stepping. In either case we'll enter the next TB with s->cc_op = DYNAMIC and recompute anyway. Just make sure that s->cc_op is stored back to env->cc_op as needed. Delete some dead functions, avoid allocating unused TCG temps, drop the old s->is_jmp setting. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Implement BRANCH ON INDEXRichard Henderson1-0/+52
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Delete dead code from old translatorRichard Henderson1-291/+27
The use of inline restricts detection of static functions that are no longer used. Limit the use of inline to those functions that are conditionally used based on CONFIG_USER_ONLY. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert SERVCRichard Henderson1-20/+9
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert LPSWERichard Henderson1-19/+18
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert STFLRichard Henderson1-9/+14
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert STSIRichard Henderson1-14/+10
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert SACFRichard Henderson1-13/+8
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert STCKERichard Henderson1-9/+22
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert CSPRichard Henderson1-12/+12
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert STURARichard Henderson1-12/+8
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert subchannel instructionsRichard Henderson1-10/+8
While we're at it, list all of the chapter 14 subchannel insns. Which is easy since all merely need indicate non-operation. Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert RRBERichard Henderson1-12/+10
Signed-off-by: Richard Henderson <rth@twiddle.net>
2013-01-05target-s390: Convert SSKERichard Henderson1-11/+7
Signed-off-by: Richard Henderson <rth@twiddle.net>