use generic GenOpFunc
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@543 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
16d17fdb8e
commit
bd49793889
@ -51,11 +51,6 @@ enum {
|
||||
|
||||
#include "gen-op.h"
|
||||
|
||||
typedef void (GenOpFunc)(void);
|
||||
typedef void (GenOpFunc1)(long);
|
||||
typedef void (GenOpFunc2)(long, long);
|
||||
typedef void (GenOpFunc3)(long, long, long);
|
||||
|
||||
static GenOpFunc2 *gen_test_cc[14] = {
|
||||
gen_op_test_eq,
|
||||
gen_op_test_ne,
|
||||
|
@ -128,11 +128,6 @@ enum {
|
||||
NB_OREGS,
|
||||
};
|
||||
|
||||
typedef void (GenOpFunc)(void);
|
||||
typedef void (GenOpFunc1)(long);
|
||||
typedef void (GenOpFunc2)(long, long);
|
||||
typedef void (GenOpFunc3)(long, long, long);
|
||||
|
||||
static GenOpFunc *gen_op_mov_reg_T0[3][8] = {
|
||||
[OT_BYTE] = {
|
||||
gen_op_movb_EAX_T0,
|
||||
|
@ -2,6 +2,7 @@
|
||||
SPARC translation
|
||||
|
||||
Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at>
|
||||
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
|
||||
@ -19,33 +20,15 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
SPARC has two pitfalls: Delay slots and (a)nullification.
|
||||
This is currently solved as follows:
|
||||
|
||||
'call' instructions simply execute the delay slot before the actual
|
||||
control transfer instructions.
|
||||
|
||||
'jmpl' instructions execute calculate the destination, then execute
|
||||
the delay slot and then do the control transfer.
|
||||
|
||||
(conditional) branch instructions are the most difficult ones, as the
|
||||
delay slot may be nullified (ie. not executed). This happens when a
|
||||
conditional branch is not executed (thus no control transfer happens)
|
||||
and the 'anull' bit in the branch instruction opcode is set. This is
|
||||
currently solved by doing a jump after the delay slot instruction.
|
||||
|
||||
TODO-list:
|
||||
|
||||
Register window overflow/underflow check
|
||||
NPC/PC static optimisations (use JUMP_TB when possible)
|
||||
FPU-Instructions
|
||||
Coprocessor-Instructions
|
||||
Check signedness issues
|
||||
Privileged instructions
|
||||
Coprocessor-Instructions
|
||||
Optimize synthetic instructions
|
||||
Optional alignment and privileged instruction check
|
||||
|
||||
-- TMO, 09/03/03
|
||||
*/
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
@ -87,11 +70,6 @@ enum {
|
||||
|
||||
static void disas_sparc_insn(DisasContext * dc);
|
||||
|
||||
typedef void (GenOpFunc) (void);
|
||||
typedef void (GenOpFunc1) (long);
|
||||
typedef void (GenOpFunc2) (long, long);
|
||||
typedef void (GenOpFunc3) (long, long, long);
|
||||
|
||||
static GenOpFunc *gen_op_movl_TN_reg[2][32] = {
|
||||
{
|
||||
gen_op_movl_g0_T0,
|
||||
|
Loading…
Reference in New Issue
Block a user