mirror of https://github.com/xqemu/xqemu.git
Merge remote-tracking branch 'stefanha/trivial-patches' into staging
* stefanha/trivial-patches: configure: Quote the configure args printed in config.log osdep: Remove local definition of macro offsetof libcacard: Spelling and grammar fixes in documentation Spelling fixes in comments (it's -> its) vnc: Add break statement libcacard: Use format specifier %u instead of %d for unsigned values Fix sign of sscanf format specifiers block/vmdk: Fix warning from splint (comparision of unsigned value) qmp: Fix spelling fourty -> forty qom: Fix spelling in documentation sh7750: Remove redundant 'struct' from MemoryRegionOps
This commit is contained in:
commit
dac6b1b22c
|
@ -453,7 +453,7 @@ static int vmdk_open_vmdk4(BlockDriverState *bs,
|
||||||
}
|
}
|
||||||
l1_entry_sectors = le32_to_cpu(header.num_gtes_per_gte)
|
l1_entry_sectors = le32_to_cpu(header.num_gtes_per_gte)
|
||||||
* le64_to_cpu(header.granularity);
|
* le64_to_cpu(header.granularity);
|
||||||
if (l1_entry_sectors <= 0) {
|
if (l1_entry_sectors == 0) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
l1_size = (le64_to_cpu(header.capacity) + l1_entry_sectors - 1)
|
l1_size = (le64_to_cpu(header.capacity) + l1_entry_sectors - 1)
|
||||||
|
|
|
@ -22,7 +22,9 @@ rm -f config.log
|
||||||
|
|
||||||
# Print a helpful header at the top of config.log
|
# Print a helpful header at the top of config.log
|
||||||
echo "# QEMU configure log $(date)" >> config.log
|
echo "# QEMU configure log $(date)" >> config.log
|
||||||
echo "# produced by $0 $*" >> config.log
|
printf "# Configured with:" >> config.log
|
||||||
|
printf " '%s'" "$0" "$@" >> config.log
|
||||||
|
echo >> config.log
|
||||||
echo "#" >> config.log
|
echo "#" >> config.log
|
||||||
|
|
||||||
compile_object() {
|
compile_object() {
|
||||||
|
@ -232,7 +234,7 @@ for opt do
|
||||||
done
|
done
|
||||||
# OS specific
|
# OS specific
|
||||||
# Using uname is really, really broken. Once we have the right set of checks
|
# Using uname is really, really broken. Once we have the right set of checks
|
||||||
# we can eliminate it's usage altogether
|
# we can eliminate its usage altogether.
|
||||||
|
|
||||||
cc="${CC-${cross_prefix}gcc}"
|
cc="${CC-${cross_prefix}gcc}"
|
||||||
ar="${AR-${cross_prefix}ar}"
|
ar="${AR-${cross_prefix}ar}"
|
||||||
|
@ -2524,17 +2526,6 @@ if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# check if the compiler defines offsetof
|
|
||||||
|
|
||||||
need_offsetof=yes
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <stddef.h>
|
|
||||||
int main(void) { struct s { int f; }; return offsetof(struct s, f); }
|
|
||||||
EOF
|
|
||||||
if compile_prog "" "" ; then
|
|
||||||
need_offsetof=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
# spice probe
|
# spice probe
|
||||||
if test "$spice" != "no" ; then
|
if test "$spice" != "no" ; then
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
|
@ -3199,9 +3190,6 @@ fi
|
||||||
if test "$tcg_interpreter" = "yes" ; then
|
if test "$tcg_interpreter" = "yes" ; then
|
||||||
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
|
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$need_offsetof" = "yes" ; then
|
|
||||||
echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$fdatasync" = "yes" ; then
|
if test "$fdatasync" = "yes" ; then
|
||||||
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
|
3
cursor.c
3
cursor.c
|
@ -15,7 +15,8 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
|
||||||
uint8_t idx;
|
uint8_t idx;
|
||||||
|
|
||||||
/* parse header line: width, height, #colors, #chars */
|
/* parse header line: width, height, #colors, #chars */
|
||||||
if (sscanf(xpm[line], "%d %d %d %d", &width, &height, &colors, &chars) != 4) {
|
if (sscanf(xpm[line], "%u %u %u %u",
|
||||||
|
&width, &height, &colors, &chars) != 4) {
|
||||||
fprintf(stderr, "%s: header parse error: \"%s\"\n",
|
fprintf(stderr, "%s: header parse error: \"%s\"\n",
|
||||||
__FUNCTION__, xpm[line]);
|
__FUNCTION__, xpm[line]);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -10,7 +10,7 @@ such as signing, card removal/insertion, etc. are mapped to real, physical
|
||||||
cards which are shared with the client machine the emulator is running on, or
|
cards which are shared with the client machine the emulator is running on, or
|
||||||
the cards could be pure software constructs.
|
the cards could be pure software constructs.
|
||||||
|
|
||||||
The emulator is structured to allow multiple replacable or additional pieces,
|
The emulator is structured to allow multiple replaceable or additional pieces,
|
||||||
so it can be easily modified for future requirements. The primary envisioned
|
so it can be easily modified for future requirements. The primary envisioned
|
||||||
modifications are:
|
modifications are:
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ be emulated as well, including PIV, newer versions of CAC, PKCS #15, etc.
|
||||||
--------------------
|
--------------------
|
||||||
Replacing the Socket Based Virtual Reader Interface.
|
Replacing the Socket Based Virtual Reader Interface.
|
||||||
|
|
||||||
The current implementation contains a replacable module vscclient.c. The
|
The current implementation contains a replaceable module vscclient.c. The
|
||||||
current vscclient.c implements a sockets interface to the virtual ccid reader
|
current vscclient.c implements a sockets interface to the virtual ccid reader
|
||||||
on the guest. CCID commands that are pertinent to emulation are passed
|
on the guest. CCID commands that are pertinent to emulation are passed
|
||||||
across the socket, and their responses are passed back along that same socket.
|
across the socket, and their responses are passed back along that same socket.
|
||||||
|
@ -42,7 +42,7 @@ implements a program with a main entry. It also handles argument parsing for
|
||||||
the emulator.
|
the emulator.
|
||||||
|
|
||||||
An application that wants to use the virtual reader can replace vscclient.c
|
An application that wants to use the virtual reader can replace vscclient.c
|
||||||
with it's own implementation that connects to it's own CCID reader. The calls
|
with its own implementation that connects to its own CCID reader. The calls
|
||||||
that the CCID reader can call are:
|
that the CCID reader can call are:
|
||||||
|
|
||||||
VReaderList * vreader_get_reader_list();
|
VReaderList * vreader_get_reader_list();
|
||||||
|
@ -72,12 +72,12 @@ that the CCID reader can call are:
|
||||||
VReader * vreader_list_get_reader(VReaderListEntry *)
|
VReader * vreader_list_get_reader(VReaderListEntry *)
|
||||||
|
|
||||||
This function returns the reader stored in the reader List entry. Caller gets
|
This function returns the reader stored in the reader List entry. Caller gets
|
||||||
a new reference to a reader. The caller must free it's reference when it is
|
a new reference to a reader. The caller must free its reference when it is
|
||||||
finished with vreader_free().
|
finished with vreader_free().
|
||||||
|
|
||||||
void vreader_free(VReader *reader);
|
void vreader_free(VReader *reader);
|
||||||
|
|
||||||
This function frees a reference to a reader. Reader's are reference counted
|
This function frees a reference to a reader. Readers are reference counted
|
||||||
and are automatically deleted when the last reference is freed.
|
and are automatically deleted when the last reference is freed.
|
||||||
|
|
||||||
void vreader_list_delete(VReaderList *list);
|
void vreader_list_delete(VReaderList *list);
|
||||||
|
@ -87,7 +87,7 @@ that the CCID reader can call are:
|
||||||
|
|
||||||
VReaderStatus vreader_power_on(VReader *reader, char *atr, int *len);
|
VReaderStatus vreader_power_on(VReader *reader, char *atr, int *len);
|
||||||
|
|
||||||
This functions simulates a card power on. Virtual cards do not care about
|
This function simulates a card power on. A virtual card does not care about
|
||||||
the actual voltage and other physical parameters, but it does care that the
|
the actual voltage and other physical parameters, but it does care that the
|
||||||
card is actually on or off. Cycling the card causes the card to reset. If
|
card is actually on or off. Cycling the card causes the card to reset. If
|
||||||
the caller provides enough space, vreader_power_on will return the ATR of
|
the caller provides enough space, vreader_power_on will return the ATR of
|
||||||
|
@ -104,7 +104,7 @@ that the CCID reader can call are:
|
||||||
unsigned char *receive_buf,
|
unsigned char *receive_buf,
|
||||||
int receive_buf_len);
|
int receive_buf_len);
|
||||||
|
|
||||||
This functions send a raw apdu to a card and returns the card's response.
|
This function sends a raw apdu to a card and returns the card's response.
|
||||||
The CCID front end should return the response back. Most of the emulation
|
The CCID front end should return the response back. Most of the emulation
|
||||||
is driven from these APDUs.
|
is driven from these APDUs.
|
||||||
|
|
||||||
|
@ -217,10 +217,10 @@ the card using the following functions:
|
||||||
VCardStatus vcard_add_applet(VCard *card, VCardApplet *applet);
|
VCardStatus vcard_add_applet(VCard *card, VCardApplet *applet);
|
||||||
|
|
||||||
Add an applet onto the list of applets attached to the card. Once an applet
|
Add an applet onto the list of applets attached to the card. Once an applet
|
||||||
has been added, it can be selected by it's aid, and then commands will be
|
has been added, it can be selected by its AID, and then commands will be
|
||||||
routed to it VCardProcessAPDU function. This function adopts the applet the
|
routed to it VCardProcessAPDU function. This function adopts the applet that
|
||||||
passed int applet. Note: 2 applets with the same AID should not be added to
|
is passed into it. Note: 2 applets with the same AID should not be added to
|
||||||
the same card. It's permissible to add more than one applet. Multiple applets
|
the same card. It is permissible to add more than one applet. Multiple applets
|
||||||
may have the same VCardPRocessAPDU entry point.
|
may have the same VCardPRocessAPDU entry point.
|
||||||
|
|
||||||
The certs and keys should be attached to private data associated with one or
|
The certs and keys should be attached to private data associated with one or
|
||||||
|
@ -335,7 +335,7 @@ and applet.
|
||||||
VCard7816Status vcard_emul_login(VCard *card, unsigned char *pin,
|
VCard7816Status vcard_emul_login(VCard *card, unsigned char *pin,
|
||||||
int pin_len);
|
int pin_len);
|
||||||
|
|
||||||
This function logins into the card and return the standard 7816 status
|
This function logs into the card and returns the standard 7816 status
|
||||||
word depending on the success or failure of the call.
|
word depending on the success or failure of the call.
|
||||||
|
|
||||||
void vcard_emul_delete_key(VCardKey *key);
|
void vcard_emul_delete_key(VCardKey *key);
|
||||||
|
@ -424,7 +424,7 @@ functions:
|
||||||
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
|
||||||
the same of the parameters xxxx_card_init() accepts.
|
the same of the parameters xxxx_card_init() accepts.
|
||||||
|
|
||||||
Finally the card is associated with it's reader by the call:
|
Finally the card is associated with its reader by the call:
|
||||||
|
|
||||||
VReaderStatus vreader_insert_card(VReader *vreader, VCard *vcard);
|
VReaderStatus vreader_insert_card(VReader *vreader, VCard *vcard);
|
||||||
|
|
||||||
|
|
|
@ -888,7 +888,7 @@ static void exynos4210_ltick_event(void *opaque)
|
||||||
static uint64_t time2[2] = {0};
|
static uint64_t time2[2] = {0};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Call tick_timer event handler, it will update it's tcntb and icntb */
|
/* Call tick_timer event handler, it will update its tcntb and icntb. */
|
||||||
exynos4210_ltick_timer_event(&s->tick_timer);
|
exynos4210_ltick_timer_event(&s->tick_timer);
|
||||||
|
|
||||||
/* get tick_timer cnt */
|
/* get tick_timer cnt */
|
||||||
|
|
|
@ -712,7 +712,7 @@ static void sh7750_mmct_write(void *opaque, target_phys_addr_t addr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct MemoryRegionOps sh7750_mmct_ops = {
|
static const MemoryRegionOps sh7750_mmct_ops = {
|
||||||
.read = sh7750_mmct_read,
|
.read = sh7750_mmct_read,
|
||||||
.write = sh7750_mmct_write,
|
.write = sh7750_mmct_write,
|
||||||
.endianness = DEVICE_NATIVE_ENDIAN,
|
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||||
|
|
|
@ -283,7 +283,7 @@ static void sh_intc_write(void *opaque, target_phys_addr_t offset,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct MemoryRegionOps sh_intc_ops = {
|
static const MemoryRegionOps sh_intc_ops = {
|
||||||
.read = sh_intc_read,
|
.read = sh_intc_read,
|
||||||
.write = sh_intc_write,
|
.write = sh_intc_write,
|
||||||
.endianness = DEVICE_NATIVE_ENDIAN,
|
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*
|
*
|
||||||
* Written by Alon Levy, with contributions from Robert Relyea.
|
* Written by Alon Levy, with contributions from Robert Relyea.
|
||||||
*
|
*
|
||||||
* Based on usb-serial.c, see it's copyright and attributions below.
|
* Based on usb-serial.c, see its copyright and attributions below.
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2.1 or later.
|
* This work is licensed under the terms of the GNU GPL, version 2.1 or later.
|
||||||
* See the COPYING file in the top-level directory.
|
* See the COPYING file in the top-level directory.
|
||||||
|
|
|
@ -124,7 +124,7 @@ typedef struct InterfaceInfo InterfaceInfo;
|
||||||
*
|
*
|
||||||
* Once all of the parent classes have been initialized, #TypeInfo::class_init
|
* Once all of the parent classes have been initialized, #TypeInfo::class_init
|
||||||
* is called to let the class being instantiated provide default initialize for
|
* is called to let the class being instantiated provide default initialize for
|
||||||
* it's virtual functions. Here is how the above example might be modified
|
* its virtual functions. Here is how the above example might be modified
|
||||||
* to introduce an overridden virtual function:
|
* to introduce an overridden virtual function:
|
||||||
*
|
*
|
||||||
* <example>
|
* <example>
|
||||||
|
@ -288,7 +288,7 @@ struct Object
|
||||||
* implementing an explicit class type if they are not adding additional
|
* implementing an explicit class type if they are not adding additional
|
||||||
* virtual functions.
|
* virtual functions.
|
||||||
* @class_init: This function is called after all parent class initialization
|
* @class_init: This function is called after all parent class initialization
|
||||||
* has occured to allow a class to set its default virtual method pointers.
|
* has occurred to allow a class to set its default virtual method pointers.
|
||||||
* This is also the function to use to override virtual methods from a parent
|
* This is also the function to use to override virtual methods from a parent
|
||||||
* class.
|
* class.
|
||||||
* @class_finalize: This function is called during class destruction and is
|
* @class_finalize: This function is called during class destruction and is
|
||||||
|
@ -527,7 +527,7 @@ Type type_register_static(const TypeInfo *info);
|
||||||
* type_register:
|
* type_register:
|
||||||
* @info: The #TypeInfo of the new type
|
* @info: The #TypeInfo of the new type
|
||||||
*
|
*
|
||||||
* Unlike type_register_static(), this call does not require @info or it's
|
* Unlike type_register_static(), this call does not require @info or its
|
||||||
* string members to continue to exist after the call returns.
|
* string members to continue to exist after the call returns.
|
||||||
*
|
*
|
||||||
* Returns: 0 on failure, the new #Type on success.
|
* Returns: 0 on failure, the new #Type on success.
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include <sys/eventfd.h>
|
#include <sys/eventfd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* KVM uses PAGE_SIZE in it's definition of COALESCED_MMIO_MAX */
|
/* KVM uses PAGE_SIZE in its definition of COALESCED_MMIO_MAX */
|
||||||
#define PAGE_SIZE TARGET_PAGE_SIZE
|
#define PAGE_SIZE TARGET_PAGE_SIZE
|
||||||
|
|
||||||
//#define DEBUG_KVM
|
//#define DEBUG_KVM
|
||||||
|
|
|
@ -66,7 +66,7 @@ send_msg(
|
||||||
qemu_mutex_lock(&write_lock);
|
qemu_mutex_lock(&write_lock);
|
||||||
|
|
||||||
if (verbose > 10) {
|
if (verbose > 10) {
|
||||||
printf("sending type=%d id=%d, len =%d (0x%x)\n",
|
printf("sending type=%d id=%u, len =%u (0x%x)\n",
|
||||||
type, reader_id, length, length);
|
type, reader_id, length, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ event_thread(void *arg)
|
||||||
vevent_delete(event);
|
vevent_delete(event);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* this reader hasn't been told it's status from qemu yet, wait for
|
/* this reader hasn't been told its status from qemu yet, wait for
|
||||||
* that status */
|
* that status */
|
||||||
while (pending_reader != NULL) {
|
while (pending_reader != NULL) {
|
||||||
qemu_cond_wait(&pending_reader_condition, &pending_reader_lock);
|
qemu_cond_wait(&pending_reader_condition, &pending_reader_lock);
|
||||||
|
@ -167,7 +167,7 @@ event_thread(void *arg)
|
||||||
case VEVENT_READER_REMOVE:
|
case VEVENT_READER_REMOVE:
|
||||||
/* future, tell qemu that an old CCID reader has been removed */
|
/* future, tell qemu that an old CCID reader has been removed */
|
||||||
if (verbose > 10) {
|
if (verbose > 10) {
|
||||||
printf(" READER REMOVE: %d\n", reader_id);
|
printf(" READER REMOVE: %u\n", reader_id);
|
||||||
}
|
}
|
||||||
send_msg(VSC_ReaderRemove, reader_id, NULL, 0);
|
send_msg(VSC_ReaderRemove, reader_id, NULL, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -178,7 +178,7 @@ event_thread(void *arg)
|
||||||
vreader_power_on(event->reader, atr, &atr_len);
|
vreader_power_on(event->reader, atr, &atr_len);
|
||||||
/* ATR call functions as a Card Insert event */
|
/* ATR call functions as a Card Insert event */
|
||||||
if (verbose > 10) {
|
if (verbose > 10) {
|
||||||
printf(" CARD INSERT %d: ", reader_id);
|
printf(" CARD INSERT %u: ", reader_id);
|
||||||
print_byte_array(atr, atr_len);
|
print_byte_array(atr, atr_len);
|
||||||
}
|
}
|
||||||
send_msg(VSC_ATR, reader_id, atr, atr_len);
|
send_msg(VSC_ATR, reader_id, atr, atr_len);
|
||||||
|
@ -186,7 +186,7 @@ event_thread(void *arg)
|
||||||
case VEVENT_CARD_REMOVE:
|
case VEVENT_CARD_REMOVE:
|
||||||
/* Card removed */
|
/* Card removed */
|
||||||
if (verbose > 10) {
|
if (verbose > 10) {
|
||||||
printf(" CARD REMOVE %d:\n", reader_id);
|
printf(" CARD REMOVE %u:\n", reader_id);
|
||||||
}
|
}
|
||||||
send_msg(VSC_CardRemove, reader_id, NULL, 0);
|
send_msg(VSC_CardRemove, reader_id, NULL, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -256,7 +256,7 @@ do_command(void)
|
||||||
reader ? vreader_get_name(reader)
|
reader ? vreader_get_name(reader)
|
||||||
: "invalid reader", error);
|
: "invalid reader", error);
|
||||||
} else {
|
} else {
|
||||||
printf("no reader by id %d found\n", reader_id);
|
printf("no reader by id %u found\n", reader_id);
|
||||||
}
|
}
|
||||||
} else if (strncmp(string, "remove", 6) == 0) {
|
} else if (strncmp(string, "remove", 6) == 0) {
|
||||||
if (string[6] == ' ') {
|
if (string[6] == ' ') {
|
||||||
|
@ -269,7 +269,7 @@ do_command(void)
|
||||||
reader ? vreader_get_name(reader)
|
reader ? vreader_get_name(reader)
|
||||||
: "invalid reader", error);
|
: "invalid reader", error);
|
||||||
} else {
|
} else {
|
||||||
printf("no reader by id %d found\n", reader_id);
|
printf("no reader by id %u found\n", reader_id);
|
||||||
}
|
}
|
||||||
} else if (strncmp(string, "select", 6) == 0) {
|
} else if (strncmp(string, "select", 6) == 0) {
|
||||||
if (string[6] == ' ') {
|
if (string[6] == ' ') {
|
||||||
|
@ -280,11 +280,11 @@ do_command(void)
|
||||||
reader = vreader_get_reader_by_id(reader_id);
|
reader = vreader_get_reader_by_id(reader_id);
|
||||||
}
|
}
|
||||||
if (reader) {
|
if (reader) {
|
||||||
printf("Selecting reader %d, %s\n", reader_id,
|
printf("Selecting reader %u, %s\n", reader_id,
|
||||||
vreader_get_name(reader));
|
vreader_get_name(reader));
|
||||||
default_reader_id = reader_id;
|
default_reader_id = reader_id;
|
||||||
} else {
|
} else {
|
||||||
printf("Reader with id %d not found\n", reader_id);
|
printf("Reader with id %u not found\n", reader_id);
|
||||||
}
|
}
|
||||||
} else if (strncmp(string, "debug", 5) == 0) {
|
} else if (strncmp(string, "debug", 5) == 0) {
|
||||||
if (string[5] == ' ') {
|
if (string[5] == ' ') {
|
||||||
|
@ -303,7 +303,7 @@ do_command(void)
|
||||||
if (reader_id == -1) {
|
if (reader_id == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
printf("%3d %s %s\n", reader_id,
|
printf("%3u %s %s\n", reader_id,
|
||||||
vreader_card_is_present(reader) == VREADER_OK ?
|
vreader_card_is_present(reader) == VREADER_OK ?
|
||||||
"CARD_PRESENT" : " ",
|
"CARD_PRESENT" : " ",
|
||||||
vreader_get_name(reader));
|
vreader_get_name(reader));
|
||||||
|
@ -563,7 +563,7 @@ main(
|
||||||
mhHeader.reader_id = ntohl(mhHeader.reader_id);
|
mhHeader.reader_id = ntohl(mhHeader.reader_id);
|
||||||
mhHeader.length = ntohl(mhHeader.length);
|
mhHeader.length = ntohl(mhHeader.length);
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
printf("Header: type=%d, reader_id=%d length=%d (0x%x)\n",
|
printf("Header: type=%d, reader_id=%u length=%d (0x%x)\n",
|
||||||
mhHeader.type, mhHeader.reader_id, mhHeader.length,
|
mhHeader.type, mhHeader.reader_id, mhHeader.length,
|
||||||
mhHeader.length);
|
mhHeader.length);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2700,7 +2700,7 @@ get_sigframe(struct target_sigaction *ka, CPUState *regs, size_t frame_size)
|
||||||
sp = regs->active_tc.gpr[29];
|
sp = regs->active_tc.gpr[29];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FPU emulator may have it's own trampoline active just
|
* FPU emulator may have its own trampoline active just
|
||||||
* above the user stack, 16-bytes before the next lowest
|
* above the user stack, 16-bytes before the next lowest
|
||||||
* 16 byte boundary. Try to avoid trashing it.
|
* 16 byte boundary. Try to avoid trashing it.
|
||||||
*/
|
*/
|
||||||
|
|
3
osdep.h
3
osdep.h
|
@ -26,9 +26,6 @@
|
||||||
#define unlikely(x) __builtin_expect(!!(x), 0)
|
#define unlikely(x) __builtin_expect(!!(x), 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_NEED_OFFSETOF
|
|
||||||
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER)
|
|
||||||
#endif
|
|
||||||
#ifndef container_of
|
#ifndef container_of
|
||||||
#define container_of(ptr, type, member) ({ \
|
#define container_of(ptr, type, member) ({ \
|
||||||
const typeof(((type *) 0)->member) *__mptr = (ptr); \
|
const typeof(((type *) 0)->member) *__mptr = (ptr); \
|
||||||
|
|
|
@ -47,7 +47,7 @@ typedef int (QEMUFileGetBufferFunc)(void *opaque, uint8_t *buf,
|
||||||
*/
|
*/
|
||||||
typedef int (QEMUFileCloseFunc)(void *opaque);
|
typedef int (QEMUFileCloseFunc)(void *opaque);
|
||||||
|
|
||||||
/* Called to determine if the file has exceeded it's bandwidth allocation. The
|
/* Called to determine if the file has exceeded its bandwidth allocation. The
|
||||||
* bandwidth capping is a soft limit, not a hard limit.
|
* bandwidth capping is a soft limit, not a hard limit.
|
||||||
*/
|
*/
|
||||||
typedef int (QEMUFileRateLimit)(void *opaque);
|
typedef int (QEMUFileRateLimit)(void *opaque);
|
||||||
|
|
|
@ -1930,7 +1930,7 @@ target_ulong helper_evpe(void)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (other_cpu != env
|
if (other_cpu != env
|
||||||
/* If the VPE is WFI, dont distrub it's sleep. */
|
/* If the VPE is WFI, don't disturb its sleep. */
|
||||||
&& !mips_vpe_is_wfi(other_cpu)) {
|
&& !mips_vpe_is_wfi(other_cpu)) {
|
||||||
/* Enable the VPE. */
|
/* Enable the VPE. */
|
||||||
other_cpu->mvp->CP0_MVPControl |= (1 << CP0MVPCo_EVP);
|
other_cpu->mvp->CP0_MVPControl |= (1 << CP0MVPCo_EVP);
|
||||||
|
|
|
@ -221,8 +221,8 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
|
||||||
QObject *obj;
|
QObject *obj;
|
||||||
QDict *qdict, *dict1, *dict2, *dict3, *userdef;
|
QDict *qdict, *dict1, *dict2, *dict3, *userdef;
|
||||||
const char *string = "user def string";
|
const char *string = "user def string";
|
||||||
const char *strings[] = { "fourty two", "fourty three", "fourty four",
|
const char *strings[] = { "forty two", "forty three", "forty four",
|
||||||
"fourty five" };
|
"forty five" };
|
||||||
|
|
||||||
ud2 = g_malloc0(sizeof(*ud2));
|
ud2 = g_malloc0(sizeof(*ud2));
|
||||||
ud2->string0 = g_strdup(strings[0]);
|
ud2->string0 = g_strdup(strings[0]);
|
||||||
|
|
|
@ -175,6 +175,7 @@ static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
|
||||||
/* we really don't have to invalidate either the bg or fg
|
/* we really don't have to invalidate either the bg or fg
|
||||||
but we've lost the old values. oh well. */
|
but we've lost the old values. oh well. */
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue