mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-09-11' into staging
trivial patches for 2015-09-11 # gpg: Signature made Fri 11 Sep 2015 12:02:43 BST using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" * remotes/mjt/tags/pull-trivial-patches-2015-09-11: (26 commits) virtio-vga: enable for i386 hw/arm/spitz: Remove meaningless blank Property hw/gpio/zaurus: Remove meaningless blank Property hw/virtio/virtio-pci: Remove meaningless blank Property hw/s390x/s390-virtio-bus: Remove meaningless blank Property typofixes - v4 qapi-schema: remove legacy<> from doc disas/microblaze: Remove unused code help: dd missing newline Target-ppc: Remove unnecessary variable baum: Fix build with debugging enabled linux-user: Fix warnings caused by missing 'static' attribute opts: produce valid command line in qemu_opts_print docs: fix a qga/qapi-schema.json comment trivial: remove trailing newline from error_report maint: avoid useless "if (foo) free(foo)" pattern maint: avoid useless "if (foo) free(foo)" pattern maint: remove unused include for strings.h maint: remove unused include for signal.h maint: remove unused include for dirent.h ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
+1
-1
@@ -303,7 +303,7 @@ static int baum_eat_packet(BaumDriverState *baum, const uint8_t *buf, int len)
|
||||
return 0;
|
||||
cur++;
|
||||
}
|
||||
DPRINTF("Dropped %d bytes!\n", cur - buf);
|
||||
DPRINTF("Dropped %td bytes!\n", cur - buf);
|
||||
}
|
||||
|
||||
#define EAT(c) do {\
|
||||
|
||||
@@ -83,9 +83,7 @@ static void set_mem_path(Object *o, const char *str, Error **errp)
|
||||
error_setg(errp, "cannot change property value");
|
||||
return;
|
||||
}
|
||||
if (fb->mem_path) {
|
||||
g_free(fb->mem_path);
|
||||
}
|
||||
g_free(fb->mem_path);
|
||||
fb->mem_path = g_strdup(str);
|
||||
}
|
||||
|
||||
|
||||
@@ -3869,7 +3869,7 @@ void bdrv_img_create(const char *filename, const char *fmt,
|
||||
}
|
||||
|
||||
if (!quiet) {
|
||||
printf("Formatting '%s', fmt=%s", filename, fmt);
|
||||
printf("Formatting '%s', fmt=%s ", filename, fmt);
|
||||
qemu_opts_print(opts, " ");
|
||||
puts("");
|
||||
}
|
||||
|
||||
@@ -498,7 +498,7 @@ int qcow2_get_cluster_offset(BlockDriverState *bs, uint64_t offset,
|
||||
|
||||
*cluster_offset = 0;
|
||||
|
||||
/* seek the the l2 offset in the l1 table */
|
||||
/* seek to the l2 offset in the l1 table */
|
||||
|
||||
l1_index = offset >> l1_bits;
|
||||
if (l1_index >= s->l1_size) {
|
||||
@@ -612,7 +612,7 @@ static int get_cluster_table(BlockDriverState *bs, uint64_t offset,
|
||||
uint64_t *l2_table = NULL;
|
||||
int ret;
|
||||
|
||||
/* seek the the l2 offset in the l1 table */
|
||||
/* seek to the l2 offset in the l1 table */
|
||||
|
||||
l1_index = offset >> (s->l2_bits + s->cluster_bits);
|
||||
if (l1_index >= s->l1_size) {
|
||||
|
||||
@@ -1294,7 +1294,7 @@ static int realloc_refcount_array(BDRVQcowState *s, void **array,
|
||||
/*
|
||||
* Increases the refcount for a range of clusters in a given refcount table.
|
||||
* This is used to construct a temporary refcount table out of L1 and L2 tables
|
||||
* which can be compared the the refcount table saved in the image.
|
||||
* which can be compared to the refcount table saved in the image.
|
||||
*
|
||||
* Modifies the number of errors in res.
|
||||
*/
|
||||
|
||||
+1
-1
@@ -1454,7 +1454,7 @@ static int vhdx_create_new_metadata(BlockDriverState *bs,
|
||||
uint32_t offset = 0;
|
||||
void *buffer = NULL;
|
||||
void *entry_buffer;
|
||||
VHDXMetadataTableHeader *md_table;;
|
||||
VHDXMetadataTableHeader *md_table;
|
||||
VHDXMetadataTableEntry *md_table_entry;
|
||||
|
||||
/* Metadata entries */
|
||||
|
||||
+1
-3
@@ -1355,9 +1355,7 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
|
||||
}
|
||||
}
|
||||
if (!bprm->p) {
|
||||
if (elf_interpreter) {
|
||||
free(elf_interpreter);
|
||||
}
|
||||
free(elf_interpreter);
|
||||
free (elf_phdata);
|
||||
close(bprm->fd);
|
||||
return -E2BIG;
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "qemu.h"
|
||||
|
||||
@@ -7,6 +7,7 @@ CONFIG_QXL=$(CONFIG_SPICE)
|
||||
CONFIG_VGA_ISA=y
|
||||
CONFIG_VGA_CIRRUS=y
|
||||
CONFIG_VMWARE_VGA=y
|
||||
CONFIG_VIRTIO_VGA=y
|
||||
CONFIG_VMMOUSE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_PARALLEL=y
|
||||
|
||||
+1
-1
@@ -357,7 +357,7 @@ fetch_data(struct disassemble_info *info, bfd_byte *addr)
|
||||
#define Rd { OP_R, d_mode }
|
||||
#define Rm { OP_R, m_mode }
|
||||
#define Ib { OP_I, b_mode }
|
||||
#define sIb { OP_sI, b_mode } /* sign extened byte */
|
||||
#define sIb { OP_sI, b_mode } /* sign extended byte */
|
||||
#define Iv { OP_I, v_mode }
|
||||
#define Iq { OP_I, q_mode }
|
||||
#define Iv64 { OP_I64, v_mode }
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
along with this file; see the file COPYING. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "disas/bfd.h"
|
||||
|
||||
@@ -582,7 +582,6 @@ static const char pvr_register_prefix[] = "rpvr";
|
||||
#endif /* MICROBLAZE_OPC */
|
||||
|
||||
#include "disas/bfd.h"
|
||||
#include <strings.h>
|
||||
|
||||
#define get_field_rd(instr) get_field(instr, RD_MASK, RD_LOW)
|
||||
#define get_field_r1(instr) get_field(instr, RA_MASK, RA_LOW)
|
||||
@@ -604,25 +603,6 @@ char * get_field_special (long instr, struct op_code_struct * op);
|
||||
unsigned long read_insn_microblaze (bfd_vma memaddr,
|
||||
struct disassemble_info *info,
|
||||
struct op_code_struct **opr);
|
||||
enum microblaze_instr get_insn_microblaze (long inst,
|
||||
bfd_boolean *isunsignedimm,
|
||||
enum microblaze_instr_type *insn_type,
|
||||
short *delay_slots);
|
||||
short get_delay_slots_microblaze (long inst);
|
||||
enum microblaze_instr microblaze_decode_insn (long insn,
|
||||
int *rd,
|
||||
int *ra,
|
||||
int *rb,
|
||||
int *imm);
|
||||
unsigned long
|
||||
microblaze_get_target_address (long inst,
|
||||
bfd_boolean immfound,
|
||||
int immval,
|
||||
long pcval,
|
||||
long r1val,
|
||||
long r2val,
|
||||
bfd_boolean *targetvalid,
|
||||
bfd_boolean *unconditionalbranch);
|
||||
|
||||
static char *
|
||||
get_field (long instr, long mask, unsigned short low)
|
||||
@@ -968,134 +948,3 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
|
||||
/* Say how many bytes we consumed? */
|
||||
return 4;
|
||||
}
|
||||
|
||||
enum microblaze_instr
|
||||
get_insn_microblaze (long inst,
|
||||
bfd_boolean *isunsignedimm,
|
||||
enum microblaze_instr_type *insn_type,
|
||||
short *delay_slots)
|
||||
{
|
||||
struct op_code_struct * op;
|
||||
*isunsignedimm = FALSE;
|
||||
|
||||
/* Just a linear search of the table. */
|
||||
for (op = opcodes; op->name != 0; op ++)
|
||||
if (op->bit_sequence == (inst & op->opcode_mask))
|
||||
break;
|
||||
|
||||
if (op->name == 0)
|
||||
return invalid_inst;
|
||||
else {
|
||||
*isunsignedimm = (op->inst_type == INST_TYPE_RD_R1_UNSIGNED_IMM);
|
||||
*insn_type = op->instr_type;
|
||||
*delay_slots = op->delay_slots;
|
||||
return op->instr;
|
||||
}
|
||||
}
|
||||
|
||||
short
|
||||
get_delay_slots_microblaze (long inst)
|
||||
{
|
||||
bfd_boolean isunsignedimm;
|
||||
enum microblaze_instr_type insn_type;
|
||||
enum microblaze_instr op;
|
||||
short delay_slots;
|
||||
|
||||
op = get_insn_microblaze( inst, &isunsignedimm, &insn_type, &delay_slots);
|
||||
if (op == invalid_inst)
|
||||
return 0;
|
||||
else
|
||||
return delay_slots;
|
||||
}
|
||||
|
||||
enum microblaze_instr
|
||||
microblaze_decode_insn (long insn,
|
||||
int *rd,
|
||||
int *ra,
|
||||
int *rb,
|
||||
int *imm)
|
||||
{
|
||||
enum microblaze_instr op;
|
||||
bfd_boolean t1;
|
||||
enum microblaze_instr_type t2;
|
||||
short t3;
|
||||
|
||||
op = get_insn_microblaze(insn, &t1, &t2, &t3);
|
||||
*rd = (insn & RD_MASK) >> RD_LOW;
|
||||
*ra = (insn & RA_MASK) >> RA_LOW;
|
||||
*rb = (insn & RB_MASK) >> RB_LOW;
|
||||
t3 = (insn & IMM_MASK) >> IMM_LOW;
|
||||
*imm = (int) t3;
|
||||
return (op);
|
||||
}
|
||||
|
||||
unsigned long
|
||||
microblaze_get_target_address (long inst,
|
||||
bfd_boolean immfound,
|
||||
int immval,
|
||||
long pcval,
|
||||
long r1val,
|
||||
long r2val,
|
||||
bfd_boolean *targetvalid,
|
||||
bfd_boolean *unconditionalbranch)
|
||||
{
|
||||
struct op_code_struct * op;
|
||||
long targetaddr = 0;
|
||||
|
||||
*unconditionalbranch = FALSE;
|
||||
/* Just a linear search of the table. */
|
||||
for (op = opcodes; op->name != 0; op ++)
|
||||
if (op->bit_sequence == (inst & op->opcode_mask))
|
||||
break;
|
||||
|
||||
if (op->name == 0) {
|
||||
*targetvalid = FALSE;
|
||||
} else if (op->instr_type == branch_inst) {
|
||||
switch (op->inst_type) {
|
||||
case INST_TYPE_R2:
|
||||
*unconditionalbranch = TRUE;
|
||||
/* fallthru */
|
||||
case INST_TYPE_RD_R2:
|
||||
case INST_TYPE_R1_R2:
|
||||
targetaddr = r2val;
|
||||
*targetvalid = TRUE;
|
||||
if (op->inst_offset_type == INST_PC_OFFSET)
|
||||
targetaddr += pcval;
|
||||
break;
|
||||
case INST_TYPE_IMM:
|
||||
*unconditionalbranch = TRUE;
|
||||
/* fallthru */
|
||||
case INST_TYPE_RD_IMM:
|
||||
case INST_TYPE_R1_IMM:
|
||||
if (immfound) {
|
||||
targetaddr = (immval << 16) & 0xffff0000;
|
||||
targetaddr |= (get_int_field_imm(inst) & 0x0000ffff);
|
||||
} else {
|
||||
targetaddr = get_int_field_imm(inst);
|
||||
if (targetaddr & 0x8000)
|
||||
targetaddr |= 0xFFFF0000;
|
||||
}
|
||||
if (op->inst_offset_type == INST_PC_OFFSET)
|
||||
targetaddr += pcval;
|
||||
*targetvalid = TRUE;
|
||||
break;
|
||||
default:
|
||||
*targetvalid = FALSE;
|
||||
break;
|
||||
}
|
||||
} else if (op->instr_type == return_inst) {
|
||||
if (immfound) {
|
||||
targetaddr = (immval << 16) & 0xffff0000;
|
||||
targetaddr |= (get_int_field_imm(inst) & 0x0000ffff);
|
||||
} else {
|
||||
targetaddr = get_int_field_imm(inst);
|
||||
if (targetaddr & 0x8000)
|
||||
targetaddr |= 0xFFFF0000;
|
||||
}
|
||||
targetaddr += r1val;
|
||||
*targetvalid = TRUE;
|
||||
} else {
|
||||
*targetvalid = FALSE;
|
||||
}
|
||||
return targetaddr;
|
||||
}
|
||||
|
||||
+2
-2
@@ -613,7 +613,7 @@ static const struct s390_operand s390_operands[] =
|
||||
names of the instruction format that you can find in the principals
|
||||
of operation.
|
||||
2) the last part of the definition (y in INSTR_x_y) gives you an idea
|
||||
which operands the binary represenation of the instruction has.
|
||||
which operands the binary representation of the instruction has.
|
||||
The meanings of the letters in y are:
|
||||
a - access register
|
||||
c - control register
|
||||
@@ -627,7 +627,7 @@ static const struct s390_operand s390_operands[] =
|
||||
m - mode field, 4 bit
|
||||
0 - operand skipped.
|
||||
The order of the letters reflects the layout of the format in
|
||||
storage and not the order of the paramaters of the instructions.
|
||||
storage and not the order of the parameters of the instructions.
|
||||
The use of the letters is not a 100% match with the PoP but it is
|
||||
quite close.
|
||||
|
||||
|
||||
+1
-2
@@ -2622,8 +2622,7 @@ build_hash_table (const sparc_opcode **opcode_table,
|
||||
|
||||
memset (hash_table, 0, HASH_SIZE * sizeof (hash_table[0]));
|
||||
memset (hash_count, 0, HASH_SIZE * sizeof (hash_count[0]));
|
||||
if (hash_buf != NULL)
|
||||
free (hash_buf);
|
||||
free(hash_buf);
|
||||
hash_buf = malloc (sizeof (* hash_buf) * num_opcodes);
|
||||
for (i = num_opcodes - 1; i >= 0; --i)
|
||||
{
|
||||
|
||||
+2
-2
@@ -327,7 +327,7 @@ and applet.
|
||||
|
||||
int vcard_emul_get_login_count(VCard *card);
|
||||
|
||||
This function returns the the number of remaining login attempts for this
|
||||
This function returns the number of remaining login attempts for this
|
||||
card. If the card emulator does not know, or the card does not have a
|
||||
way of giving this information, this function returns -1.
|
||||
|
||||
@@ -421,7 +421,7 @@ functions:
|
||||
The vcard is the value returned from vcard_new. The type is the
|
||||
card type emulator that this card should presented to the guest as.
|
||||
The flags are card type emulator specific options. The certs,
|
||||
cert_len, and keys are all arrays of length cert_count. These are the
|
||||
cert_len, and keys are all arrays of length cert_count. These are
|
||||
the same of the parameters xxxx_card_init() accepts.
|
||||
|
||||
Finally the card is associated with its reader by the call:
|
||||
|
||||
+1
-1
@@ -135,7 +135,7 @@ configuration:
|
||||
TAG+="seat", ENV{ID_AUTOSEAT}="1"
|
||||
|
||||
Patch with this rule has been submitted to upstream udev/systemd, was
|
||||
accepted and and should be included in the next systemd release (222).
|
||||
accepted and should be included in the next systemd release (222).
|
||||
So, if your guest has this or a newer version, multiseat will work just
|
||||
fine without any manual guest configuration.
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ When the guest runs in "real mode" (in powerpc lingua this means
|
||||
with MMU disabled, ie guest effective == guest physical), it only
|
||||
has access to a subset of memory and no IOs.
|
||||
|
||||
PAPR provides a set of hypervisor calls to perform cachable or
|
||||
non-cachable accesses to any guest physical addresses that the
|
||||
PAPR provides a set of hypervisor calls to perform cacheable or
|
||||
non-cacheable accesses to any guest physical addresses that the
|
||||
guest can use in order to access IO devices while in real mode.
|
||||
|
||||
This is typically used by the firmware running in the guest.
|
||||
|
||||
@@ -257,7 +257,7 @@ L2 table entry:
|
||||
|
||||
63: 0 for a cluster that is unused or requires COW, 1 if its
|
||||
refcount is exactly one. This information is only accurate
|
||||
in L2 tables that are reachable from the the active L1
|
||||
in L2 tables that are reachable from the active L1
|
||||
table.
|
||||
|
||||
Standard Cluster Descriptor:
|
||||
|
||||
@@ -297,7 +297,7 @@ but not fired. If only partial credits are returned, the interrupt remains
|
||||
masked but the device generates an interrupt, signaling the driver that more
|
||||
outstanding work is available.
|
||||
|
||||
(* this masking is unrelated to to the MSI-X interrupt mask register)
|
||||
(* this masking is unrelated to the MSI-X interrupt mask register)
|
||||
|
||||
Endianness
|
||||
----------
|
||||
|
||||
@@ -122,7 +122,7 @@ There are a few things to be noticed:
|
||||
Now a little hack is needed. As we're still using the old QMP server we need
|
||||
to add the new command to its internal dispatch table. This step won't be
|
||||
required in the near future. Open the qmp-commands.hx file and add the
|
||||
following in the botton:
|
||||
following at the bottom:
|
||||
|
||||
{
|
||||
.name = "hello-world",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user