sim-card
/
qemu
Archived
10
0
Fork 0

Merge remote-tracking branch 'stefanha/trivial-patches-next' into staging

This commit is contained in:
Anthony Liguori 2011-12-14 07:59:21 -06:00
commit 9423a2e8dd
94 changed files with 228 additions and 533 deletions

View File

@ -78,7 +78,7 @@ version 0.10.2:
- fix savevm/loadvm (Anthony Liguori)
- live migration: fix dirty tracking windows (Glauber Costa)
- live migration: improve error propogation (Glauber Costa)
- live migration: improve error propagation (Glauber Costa)
- qcow2: fix image creation for > ~2TB images (Chris Wright)
- hotplug: fix error handling for if= parameter (Eduardo Habkost)
- qcow2: fix data corruption (Nolan Leake)
@ -386,7 +386,7 @@ version 0.5.3:
- support of CD-ROM change
- multiple network interface support
- initial x86-64 host support (Gwenole Beauchesne)
- lret to outer priviledge fix (OS/2 install fix)
- lret to outer privilege fix (OS/2 install fix)
- task switch fixes (SkyOS boot)
- VM save/restore commands
- new timer API

View File

@ -6,9 +6,7 @@ The following points clarify the QEMU license:
GNU General Public License. Hence each source file contains its own
licensing information.
In particular, the QEMU virtual CPU core library (libqemu.a) is
released under the GNU Lesser General Public License. Many hardware
device emulation sources are released under the BSD license.
Many hardware device emulation sources are released under the BSD license.
3) The Tiny Code Generator (TCG) is released under the BSD license
(see license headers in files).

View File

@ -68,10 +68,9 @@ endif
fsdev-obj-$(CONFIG_VIRTFS) += $(addprefix fsdev/, $(fsdev-nested-y))
######################################################################
# libqemu_common.a: Target independent part of system emulation. The
# long term path is to suppress *all* target specific code in case of
# system emulation, i.e. a single QEMU executable should support all
# CPUs and machines.
# Target independent part of system emulation. The long term path is to
# suppress *all* target specific code in case of system emulation, i.e. a
# single QEMU executable should support all CPUs and machines.
common-obj-y = $(block-obj-y) blockdev.o
common-obj-y += $(net-obj-y)

View File

@ -92,8 +92,6 @@ tci-dis.o: QEMU_CFLAGS += -I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/tci
$(libobj-y): $(GENERATED_HEADERS)
# libqemu
translate.o: translate.c cpu.h
translate-all.o: translate-all.c cpu.h

View File

@ -1665,7 +1665,7 @@ static void audio_pp_nb_voices (const char *typ, int nb)
printf ("Theoretically supports many %s voices\n", typ);
break;
default:
printf ("Theoretically supports upto %d %s voices\n", nb, typ);
printf ("Theoretically supports up to %d %s voices\n", nb, typ);
break;
}

View File

@ -21,7 +21,7 @@ typedef struct QEMUSnapshotInfo {
char id_str[128]; /* unique snapshot id */
/* the following fields are informative. They are not needed for
the consistency of the snapshot */
char name[256]; /* user choosen name */
char name[256]; /* user chosen name */
uint32_t vm_state_size; /* VM state info size */
uint32_t date_sec; /* UTC date of the snapshot */
uint32_t date_nsec;

View File

@ -189,7 +189,7 @@ static int nbd_read(BlockDriverState *bs, int64_t sector_num,
request.type = NBD_CMD_READ;
request.handle = (uint64_t)(intptr_t)bs;
request.from = sector_num * 512;;
request.from = sector_num * 512;
request.len = nb_sectors * 512;
if (nbd_send_request(s->sock, &request) == -1)
@ -219,7 +219,7 @@ static int nbd_write(BlockDriverState *bs, int64_t sector_num,
request.type = NBD_CMD_WRITE;
request.handle = (uint64_t)(intptr_t)bs;
request.from = sector_num * 512;;
request.from = sector_num * 512;
request.len = nb_sectors * 512;
if (nbd_send_request(s->sock, &request) == -1)

View File

@ -8,7 +8,7 @@ struct target_pt_regs {
abi_ulong r12;
abi_ulong rbp;
abi_ulong rbx;
/* arguments: non interrupts/non tracing syscalls only save upto here*/
/* arguments: non interrupts/non tracing syscalls only save up to here */
abi_ulong r11;
abi_ulong r10;
abi_ulong r9;

44
configure vendored
View File

@ -20,6 +20,11 @@ TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
rm -f config.log
# Print a helpful header at the top of config.log
echo "# QEMU configure log $(date)" >> config.log
echo "# produced by $0 $*" >> config.log
echo "#" >> config.log
compile_object() {
echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
$cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
@ -249,7 +254,7 @@ source_path=`cd "$source_path"; pwd`
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#error $1 not defined
#endif
int main(void) { return 0; }
EOF
@ -3279,6 +3284,22 @@ for d in libdis libdis-user; do
echo > $d/config.mak
done
# use included Linux headers
if test "$linux" = "yes" ; then
mkdir -p linux-headers
case "$cpu" in
i386|x86_64)
symlink $source_path/linux-headers/asm-x86 linux-headers/asm
;;
ppcemb|ppc|ppc64)
symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
;;
s390x)
symlink $source_path/linux-headers/asm-s390 linux-headers/asm
;;
esac
fi
for target in $target_list; do
target_dir="$target"
config_target_mak=$target_dir/config-target.mak
@ -3604,6 +3625,10 @@ else
fi
includes="-I\$(SRC_PATH)/tcg $includes"
if test "$linux" = "yes" ; then
includes="-I\$(SRC_PATH)/linux-headers $includes"
fi
if test "$target_user_only" = "yes" ; then
libdis_config_mak=libdis-user/config.mak
else
@ -3735,23 +3760,6 @@ if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
esac
fi
# use included Linux headers
if test "$linux" = "yes" ; then
includes="-I\$(SRC_PATH)/linux-headers $includes"
mkdir -p linux-headers
case "$cpu" in
i386|x86_64)
symlink $source_path/linux-headers/asm-x86 linux-headers/asm
;;
ppcemb|ppc|ppc64)
symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
;;
s390x)
symlink $source_path/linux-headers/asm-s390 linux-headers/asm
;;
esac
fi
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak

View File

@ -1009,16 +1009,17 @@ static void console_putchar(TextConsole *s, int ch)
console_clear_xy(s, x, y);
}
}
break;
break;
}
break;
case 'K':
switch (s->esc_params[0]) {
case 0:
/* clear to eol */
for(x = s->x; x < s->width; x++) {
/* clear to eol */
for(x = s->x; x < s->width; x++) {
console_clear_xy(s, x, s->y);
}
break;
}
break;
case 1:
/* clear from beginning of line */
for (x = 0; x <= s->x; x++) {
@ -1030,12 +1031,12 @@ static void console_putchar(TextConsole *s, int ch)
for(x = 0; x < s->width; x++) {
console_clear_xy(s, x, s->y);
}
break;
}
break;
}
break;
case 'm':
console_handle_escape(s);
break;
console_handle_escape(s);
break;
case 'n':
/* report cursor position */
/* TODO: send ESC[row;colR */
@ -1687,6 +1688,7 @@ PixelFormat qemu_default_pixelformat(int bpp)
pf.rbits = 8;
pf.gbits = 8;
pf.bbits = 8;
break;
case 32:
pf.rmask = 0x00FF0000;
pf.gmask = 0x0000FF00;

View File

@ -336,7 +336,7 @@ void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...)
GCC_FMT_ATTR(2, 3);
extern CPUState *first_cpu;
DECLARE_TLS(CPUState *,cpu_single_env);
#define cpu_single_env get_tls(cpu_single_env)
#define cpu_single_env tls_var(cpu_single_env)
/* Flags for use in ENV->INTERRUPT_PENDING.

2
cpus.c
View File

@ -89,7 +89,7 @@ TimersState timers_state;
int64_t cpu_get_icount(void)
{
int64_t icount;
CPUState *env = cpu_single_env;;
CPUState *env = cpu_single_env;
icount = qemu_icount;
if (env) {

View File

@ -7,7 +7,7 @@ machine. It attempts to allow modelling of:
- ordinary RAM
- memory-mapped I/O (MMIO)
- memory controllers that can dynamically reroute physical memory regions
to different destinations
to different destinations
The memory model provides support for
@ -121,7 +121,7 @@ pci (0-2^32-1)
ram: ram@0x00000000-0xffffffff
The is a (simplified) PC memory map. The 4GB RAM block is mapped into the
This is a (simplified) PC memory map. The 4GB RAM block is mapped into the
system address space via two aliases: "lomem" is a 1:1 mapping of the first
3.5GB; "himem" maps the last 0.5GB at address 4GB. This leaves 0.5GB for the
so-called PCI hole, that allows a 32-bit PCI bus to exist in a system with
@ -164,7 +164,7 @@ various constraints can be supplied to control how these callbacks are called:
- .impl.min_access_size, .impl.max_access_size define the access sizes
(in bytes) supported by the *implementation*; other access sizes will be
emulated using the ones available. For example a 4-byte write will be
emulated using four 1-byte write, if .impl.max_access_size = 1.
emulated using four 1-byte writes, if .impl.max_access_size = 1.
- .impl.valid specifies that the *implementation* only supports unaligned
accesses; unaligned accesses will be emulated by two aligned accesses.
- .old_portio and .old_mmio can be used to ease porting from code using

View File

@ -2678,7 +2678,7 @@ gdb_handlesig (CPUState *env, int sig)
}
else if (n == 0 || errno != EAGAIN)
{
/* XXX: Connection closed. Should probably wait for annother
/* XXX: Connection closed. Should probably wait for another
connection before continuing. */
return sig;
}

View File

@ -915,7 +915,7 @@ ETEXI
"<tlb header> = 32bit x 4\n\t\t\t"
"<tlb header prefix> = 32bit x 4",
.user_print = pcie_aer_inject_error_print,
.mhandler.cmd_new = do_pcie_aer_inejct_error,
.mhandler.cmd_new = do_pcie_aer_inject_error,
},
STEXI

View File

@ -90,7 +90,7 @@ int v9fs_co_mkdir(V9fsPDU *pdu, V9fsFidState *fidp, V9fsString *name,
V9fsState *s = pdu->s;
if (v9fs_request_cancelled(pdu)) {
return -EINTR;;
return -EINTR;
}
cred_init(&cred);
cred.fc_mode = mode;
@ -124,7 +124,7 @@ int v9fs_co_opendir(V9fsPDU *pdu, V9fsFidState *fidp)
V9fsState *s = pdu->s;
if (v9fs_request_cancelled(pdu)) {
return -EINTR;;
return -EINTR;
}
v9fs_path_read_lock(s);
v9fs_co_run_in_worker(
@ -152,7 +152,7 @@ int v9fs_co_closedir(V9fsPDU *pdu, V9fsFidOpenState *fs)
V9fsState *s = pdu->s;
if (v9fs_request_cancelled(pdu)) {
return -EINTR;;
return -EINTR;
}
v9fs_co_run_in_worker(
{

View File

@ -44,7 +44,7 @@ typedef struct V9fsThPool {
qemu_coroutine_self()); \
qemu_bh_schedule(co_bh); \
/* \
* yeild in qemu thread and re-enter back \
* yield in qemu thread and re-enter back \
* in glib worker thread \
*/ \
qemu_coroutine_yield(); \

View File

@ -59,7 +59,7 @@ static inline int open_by_handle(int mountfd, const char *fh, int flags)
static int handle_update_file_cred(int dirfd, const char *name, FsCred *credp)
{
int fd, ret;
fd = openat(dirfd, name, O_NONBLOCK | O_NOFOLLOW);;
fd = openat(dirfd, name, O_NONBLOCK | O_NOFOLLOW);
if (fd < 0) {
return fd;
}
@ -520,7 +520,7 @@ static int handle_name_to_path(FsContext *ctx, V9fsPath *dir_path,
}
fh = g_malloc(sizeof(struct file_handle) + data->handle_bytes);
fh->handle_bytes = data->handle_bytes;
/* add a "./" at the begining of the path */
/* add a "./" at the beginning of the path */
snprintf(buffer, PATH_MAX, "./%s", name);
/* flag = 0 imply don't follow symlink */
ret = name_to_handle(dirfd, buffer, fh, &mnt_id, 0);

View File

@ -1492,7 +1492,7 @@ static void v9fs_walk(void *opaque)
int32_t fid, newfid;
V9fsString *wnames = NULL;
V9fsFidState *fidp;
V9fsFidState *newfidp = NULL;;
V9fsFidState *newfidp = NULL;
V9fsPDU *pdu = opaque;
V9fsState *s = pdu->s;
@ -2398,7 +2398,7 @@ static void v9fs_link(void *opaque)
V9fsState *s = pdu->s;
int32_t dfid, oldfid;
V9fsFidState *dfidp, *oldfidp;
V9fsString name;;
V9fsString name;
size_t offset = 7;
int err = 0;

View File

@ -304,7 +304,7 @@ void acpi_pm_tmr_calc_overflow_time(ACPIPMTimer *tmr)
uint32_t acpi_pm_tmr_get(ACPIPMTimer *tmr)
{
uint32_t d = acpi_pm_tmr_get_clock();;
uint32_t d = acpi_pm_tmr_get_clock();
return d & 0xffffff;
}

View File

@ -2,7 +2,7 @@
* QEMU Alpha DP264/CLIPPER hardware system emulator.
*
* Choose CLIPPER IRQ mappings over, say, DP264, MONET, or WEBBRICK
* variants because CLIPPER doesn't have an SMC669 SuperIO controler
* variants because CLIPPER doesn't have an SMC669 SuperIO controller
* that we need to emulate as well.
*/

View File

@ -609,7 +609,7 @@ static uint32_t gic_cpu_read(gic_state *s, int cpu, int offset)
return 0;
case 0x0c: /* Acknowledge */
return gic_acknowledge_irq(s, cpu);
case 0x14: /* Runing Priority */
case 0x14: /* Running Priority */
return s->running_priority[cpu];
case 0x18: /* Highest Pending Interrupt */
return s->current_pending[cpu];

View File

@ -222,7 +222,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
rpkt = csrhci_out_packet_csr(s, H4_NEG_PKT, 10);
*rpkt ++ = 0x20; /* Operational settings negotation Ok */
*rpkt ++ = 0x20; /* Operational settings negotiation Ok */
memcpy(rpkt, pkt, 7); rpkt += 7;
*rpkt ++ = 0xff;
*rpkt = 0xff;

View File

@ -783,7 +783,7 @@ static void cirrus_bitblt_cputovideo_next(CirrusVGAState * s)
s->cirrus_srccounter -= s->cirrus_blt_srcpitch;
if (s->cirrus_srccounter <= 0)
goto the_end;
/* more bytes than needed can be transfered because of
/* more bytes than needed can be transferred because of
word alignment, so we keep them for the next line */
/* XXX: keep alignment to speed up transfer */
end_ptr = s->cirrus_bltbuf + s->cirrus_blt_srcpitch;

View File

@ -1,7 +1,7 @@
/*
* QEMU NVRAM emulation for DS1225Y chip
*
* Copyright (c) 2007-2008 Hervé Poussineau
* Copyright (c) 2007-2008 Hervé Poussineau
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal

View File

@ -295,7 +295,7 @@
#define E1000_KUMCTRLSTA 0x00034 /* MAC-PHY interface - RW */
#define E1000_MDPHYA 0x0003C /* PHY address - RW */
#define E1000_MANC2H 0x05860 /* Managment Control To Host - RW */
#define E1000_MANC2H 0x05860 /* Management Control To Host - RW */
#define E1000_SW_FW_SYNC 0x05B5C /* Software-Firmware Synchronization - RW */
#define E1000_GCR 0x05B00 /* PCI-Ex Control */

View File

@ -258,7 +258,7 @@ typedef struct {
/* Data in mem is always in the byte order of the controller (le).
* It must be dword aligned to allow direct access to 32 bit values. */
uint8_t mem[PCI_MEM_SIZE] __attribute__((aligned(8)));;
uint8_t mem[PCI_MEM_SIZE] __attribute__((aligned(8)));
/* Configuration bytes. */
uint8_t configuration[22];

View File

@ -788,7 +788,7 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
int cnt = d->frame_cnt >> 16;
int size = d->frame_cnt & 0xffff;
int left = ((size - cnt + 1) << 2) + d->leftover;
int transfered = 0;
int transferred = 0;
int temp = audio_MIN (max, audio_MIN (left, csc_bytes));
int index = d - &s->chan[0];
@ -807,7 +807,7 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
temp -= acquired;
addr += acquired;
transfered += acquired;
transferred += acquired;
}
}
else {
@ -823,11 +823,11 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
break;
temp -= copied;
addr += copied;
transfered += copied;
transferred += copied;
}
}
if (csc_bytes == transfered) {
if (csc_bytes == transferred) {
*irq = 1;
d->scount = sc | (sc << 16);
ldebug ("sc = %d, rate = %f\n",
@ -836,10 +836,10 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
}
else {
*irq = 0;
d->scount = sc | (((csc_bytes - transfered - 1) >> d->shift) << 16);
d->scount = sc | (((csc_bytes - transferred - 1) >> d->shift) << 16);
}
cnt += (transfered + d->leftover) >> 2;
cnt += (transferred + d->leftover) >> 2;
if (s->sctl & loop_sel) {
/* Bah, how stupid is that having a 0 represent true value?
@ -853,7 +853,7 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
d->frame_cnt |= cnt << 16;
}
d->leftover = (transfered + d->leftover) & 3;
d->leftover = (transferred + d->leftover) & 3;
}
static void es1370_run_channel (ES1370State *s, size_t chan, int free_or_avail)

View File

@ -180,7 +180,7 @@ struct fs_dma_channel
struct dma_descr_context current_c;
struct dma_descr_data current_d;
/* Controll registers. */
/* Control registers. */
uint32_t regs[DMA_REG_MAX];
};

View File

@ -53,7 +53,7 @@ static void pic_update(struct etrax_pic *fs)
fs->regs[R_R_MASKED_VECT] = fs->regs[R_R_VECT] & fs->regs[R_RW_MASK];
/* The ETRAX interrupt controller signals interrupts to teh core
/* The ETRAX interrupt controller signals interrupts to the core
through an interrupt request wire and an irq vector bus. If
multiple interrupts are simultaneously active it chooses vector
0x30 and lets the sw choose the priorities. */

View File

@ -2,7 +2,7 @@
* QEMU Floppy disk emulator (Intel 82078)
*
* Copyright (c) 2003, 2007 Jocelyn Mayer
* Copyright (c) 2008 Hervé Poussineau
* Copyright (c) 2008 Hervé Poussineau
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal

View File

@ -362,8 +362,8 @@ INLINE UINT32 OPL_CALC_SLOT( OPL_SLOT *SLOT )
return SLOT->TLL+ENV_CURVE[SLOT->evc>>ENV_BITS]+(SLOT->ams ? ams : 0);
}
/* set algorythm connection */
static void set_algorythm( OPL_CH *CH)
/* set algorithm connection */
static void set_algorithm( OPL_CH *CH)
{
INT32 *carrier = &outd[0];
CH->connect1 = CH->CON ? carrier : &feedback2;
@ -498,7 +498,7 @@ INLINE void OPL_CALC_CH( OPL_CH *CH )
}
}
/* ---------- calcrate rythm block ---------- */
/* ---------- calcrate rhythm block ---------- */
#define WHITE_NOISE_db 6.0
INLINE void OPL_CALC_RH( OPL_CH *CH )
{
@ -715,7 +715,7 @@ static void OPLCloseTable( void )
free(VIB_TABLE);
}
/* CSM Key Controll */
/* CSM Key Control */
INLINE void CSMKeyControll(OPL_CH *CH)
{
OPL_SLOT *slot1 = &CH->SLOT[SLOT1];
@ -762,7 +762,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
switch(r&0xe0)
{
case 0x00: /* 00-1f:controll */
case 0x00: /* 00-1f:control */
switch(r&0x1f)
{
case 0x01:
@ -826,7 +826,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
LOG(LOG_WAR,("OPL:write unmapped KEYBOARD port\n"));
}
return;
case 0x07: /* DELTA-T controll : START,REC,MEMDATA,REPT,SPOFF,x,x,RST */
case 0x07: /* DELTA-T control : START,REC,MEMDATA,REPT,SPOFF,x,x,RST */
if(OPL->type&OPL_TYPE_ADPCM)
YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v);
return;
@ -895,14 +895,14 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
case 0xbd:
/* amsep,vibdep,r,bd,sd,tom,tc,hh */
{
UINT8 rkey = OPL->rythm^v;
UINT8 rkey = OPL->rhythm^v;
OPL->ams_table = &AMS_TABLE[v&0x80 ? AMS_ENT : 0];
OPL->vib_table = &VIB_TABLE[v&0x40 ? VIB_ENT : 0];
OPL->rythm = v&0x3f;
if(OPL->rythm&0x20)
OPL->rhythm = v&0x3f;
if(OPL->rhythm&0x20)
{
#if 0
usrintf_showmessage("OPL Rythm mode select");
usrintf_showmessage("OPL Rhythm mode select");
#endif
/* BD key on/off */
if(rkey&0x10)
@ -995,7 +995,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
int feedback = (v>>1)&7;
CH->FB = feedback ? (8+1) - feedback : 0;
CH->CON = v&1;
set_algorythm(CH);
set_algorithm(CH);
}
return;
case 0xe0: /* wave type */
@ -1049,7 +1049,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
OPLSAMPLE *buf = buffer;
UINT32 amsCnt = OPL->amsCnt;
UINT32 vibCnt = OPL->vibCnt;
UINT8 rythm = OPL->rythm&0x20;
UINT8 rhythm = OPL->rhythm&0x20;
OPL_CH *CH,*R_CH;
if( (void *)OPL != cur_chip ){
@ -1057,7 +1057,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
/* channel pointers */
S_CH = OPL->P_CH;
E_CH = &S_CH[9];
/* rythm slot */
/* rhythm slot */
SLOT7_1 = &S_CH[7].SLOT[SLOT1];
SLOT7_2 = &S_CH[7].SLOT[SLOT2];
SLOT8_1 = &S_CH[8].SLOT[SLOT1];
@ -1068,7 +1068,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
ams_table = OPL->ams_table;
vib_table = OPL->vib_table;
}
R_CH = rythm ? &S_CH[6] : E_CH;
R_CH = rhythm ? &S_CH[6] : E_CH;
for( i=0; i < length ; i++ )
{
/* channel A channel B channel C */
@ -1080,7 +1080,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
for(CH=S_CH ; CH < R_CH ; CH++)
OPL_CALC_CH(CH);
/* Rythn part */
if(rythm)
if(rhythm)
OPL_CALC_RH(S_CH);
/* limit check */
data = Limit( outd[0] , OPL_MAXOUT, OPL_MINOUT );
@ -1110,7 +1110,7 @@ void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
OPLSAMPLE *buf = buffer;
UINT32 amsCnt = OPL->amsCnt;
UINT32 vibCnt = OPL->vibCnt;
UINT8 rythm = OPL->rythm&0x20;
UINT8 rhythm = OPL->rhythm&0x20;
OPL_CH *CH,*R_CH;
YM_DELTAT *DELTAT = OPL->deltat;
@ -1122,7 +1122,7 @@ void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
/* channel pointers */
S_CH = OPL->P_CH;
E_CH = &S_CH[9];
/* rythm slot */
/* rhythm slot */
SLOT7_1 = &S_CH[7].SLOT[SLOT1];
SLOT7_2 = &S_CH[7].SLOT[SLOT2];
SLOT8_1 = &S_CH[8].SLOT[SLOT1];
@ -1133,7 +1133,7 @@ void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
ams_table = OPL->ams_table;
vib_table = OPL->vib_table;
}
R_CH = rythm ? &S_CH[6] : E_CH;
R_CH = rhythm ? &S_CH[6] : E_CH;
for( i=0; i < length ; i++ )
{
/* channel A channel B channel C */
@ -1148,7 +1148,7 @@ void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
for(CH=S_CH ; CH < R_CH ; CH++)
OPL_CALC_CH(CH);
/* Rythn part */
if(rythm)
if(rhythm)
OPL_CALC_RH(S_CH);
/* limit check */
data = Limit( outd[0] , OPL_MAXOUT, OPL_MINOUT );
@ -1380,7 +1380,7 @@ int OPLTimerOver(FM_OPL *OPL,int c)
else
{ /* Timer A */
OPL_STATUS_SET(OPL,0x40);
/* CSM mode key,TL controll */
/* CSM mode key,TL control */
if( OPL->mode & 0x80 )
{ /* CSM mode total level latch and auto key on */
int ch;

View File

@ -110,8 +110,8 @@ typedef struct fm_opl_f {
/* FM channel slots */
OPL_CH *P_CH; /* pointer of CH */
int max_ch; /* maximum channel */
/* Rythm sention */
UINT8 rythm; /* Rythm mode , key flag */
/* Rhythm sention */
UINT8 rhythm; /* Rhythm mode , key flag */
#if BUILD_Y8950
/* Delta-T ADPCM unit (Y8950) */
YM_DELTAT *deltat; /* DELTA-T ADPCM */

View File

@ -27,7 +27,7 @@
/* data types (need to be adjusted if neither a VC6 nor a C99 compatible compiler is used) */
#if defined _WIN32 && defined _MSC_VER /* doesnt support other win32 compilers yet, do it yourself... */
#if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */
typedef unsigned char GUSbyte;
typedef unsigned short GUSword;
typedef unsigned int GUSdword;
@ -83,7 +83,7 @@ void gus_dma_transferdata(GUSEmuState *state, char *dma_addr, unsigned int count
/* it is possible to break down a single transfer into multiple ones, but take care that: */
/* -dma_count is actually count-1 */
/* -before and during a transfer, DREQ is set and TC cleared */
/* -when calling gus_dma_transferdata(), TC is only set true for call transfering the last byte */
/* -when calling gus_dma_transferdata(), TC is only set true for call transferring the last byte */
/* -after the last transfer, DREQ is cleared and TC is set */
/* ** GF1 mixer emulation functions: */

View File

@ -502,7 +502,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun
/* this function gets called by the callback function as soon as a DMA transfer is about to start
* dma_addr is a translated address within accessible memory, not the physical one,
* count is (real dma count register)+1
* note that the amount of bytes transfered is fully determined by values in the DMA registers
* note that the amount of bytes transferred is fully determined by values in the DMA registers
* do not forget to update DMA states after transferring the entire block:
* DREQ cleared & TC asserted after the _whole_ transfer */
@ -517,7 +517,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun
int offset = (GUSregw(GUS42DMAStart) << 4) + (GUSregb(GUS50DMAHigh) & 0xf);
if (state->gusdma >= 4)
offset = (offset & 0xc0000) + (2 * (offset & 0x1fff0)); /* 16 bit address translation */
destaddr = (char *) state->himemaddr + offset; /* wavetable RAM adress */
destaddr = (char *) state->himemaddr + offset; /* wavetable RAM address */
}
GUSregw(GUS42DMAStart) += (GUSword) (count >> 4); /* ToDo: add 16bit GUS page limit? */

View File

@ -1000,7 +1000,7 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
printf("ide: CMD=%02x\n", val);
#endif
s = idebus_active_if(bus);
/* ignore commands to non existant slave */
/* ignore commands to non existent slave */
if (s != bus->ifs && !s->bs)
return;

View File

@ -172,7 +172,7 @@ static void vt82c686b_init_ports(PCIIDEState *d) {
/* via ide func */
static int vt82c686b_ide_initfn(PCIDevice *dev)
{
PCIIDEState *d = DO_UPCAST(PCIIDEState, dev, dev);;
PCIIDEState *d = DO_UPCAST(PCIIDEState, dev, dev);
uint8_t *pci_conf = d->dev.config;
pci_config_set_prog_interface(pci_conf, 0x8a); /* legacy ATA mode */

View File

@ -1,7 +1,7 @@
/*
* QEMU JAZZ LED emulator.
*
* Copyright (c) 2007 Hervé Poussineau
* Copyright (c) 2007 Hervé Poussineau
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal

View File

@ -697,7 +697,7 @@ static uint32_t do_phy_read(lan9118_state *s, int reg)
return 0x0007;
case 3: /* ID2 */
return 0xc0d1;
case 4: /* Auto-neg advertisment */
case 4: /* Auto-neg advertisement */
return s->phy_advertise;
case 5: /* Auto-neg Link Partner Ability */
return 0x0f71;
@ -731,7 +731,7 @@ static void do_phy_write(lan9118_state *s, int reg, uint32_t val)
s->phy_status |= 0x0020;
}
break;
case 4: /* Auto-neg advertisment */
case 4: /* Auto-neg advertisement */
s->phy_advertise = (val & 0x2d7f) | 0x80;
break;
/* TODO 17, 18, 27, 31 */

View File

@ -4,7 +4,7 @@
* Copyright (c) 2011
* Written by Mathieu Sonet - www.elasticsheep.com
*
* This code is licenced under the GPL.
* This code is licensed under the GPL.
*
* *****************************************************************
*

View File

@ -4,7 +4,7 @@
* Copyright (c) 2011
* Written by Mathieu Sonet - www.elasticsheep.com
*
* This code is licenced under the GPL.
* This code is licensed under the GPL.
*
* *****************************************************************
*/

View File

@ -911,6 +911,7 @@ void mips_malta_init (ram_addr_t ram_size,
uint32_t *end = addr + bios_size;
while (addr < end) {
bswap32s(addr);
addr++;
}
}
#endif

View File

@ -1616,7 +1616,7 @@ static void omap_prcm_write(void *opaque, target_phys_addr_t addr,
case 0x500: /* CM_CLKEN_PLL */
if (value & 0xffffff30)
fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for "
"future compatiblity\n", __FUNCTION__);
"future compatibility\n", __FUNCTION__);
if ((s->clken[9] ^ value) & 0xcc) {
s->clken[9] &= ~0xcc;
s->clken[9] |= value & 0xcc;
@ -1635,7 +1635,7 @@ static void omap_prcm_write(void *opaque, target_phys_addr_t addr,
case 0x540: /* CM_CLKSEL1_PLL */
if (value & 0xfc4000d7)
fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for "
"future compatiblity\n", __FUNCTION__);
"future compatibility\n", __FUNCTION__);
if ((s->clksel[5] ^ value) & 0x003fff00) {
s->clksel[5] = value & 0x03bfff28;
omap_prcm_dpll_update(s);
@ -1647,7 +1647,7 @@ static void omap_prcm_write(void *opaque, target_phys_addr_t addr,
case 0x544: /* CM_CLKSEL2_PLL */
if (value & ~3)
fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
"future compatiblity\n", __FUNCTION__);
"future compatibility\n", __FUNCTION__);
if (s->clksel[6] != (value & 3)) {
s->clksel[6] = value & 3;
omap_prcm_dpll_update(s);

View File

@ -983,7 +983,7 @@ void pc_memory_init(MemoryRegion *system_memory,
linux_boot = (kernel_filename != NULL);
/* Allocate RAM. We allocate it as a single memory region and use
* aliases to address portions of it, mostly for backwards compatiblity
* aliases to address portions of it, mostly for backwards compatibility
* with older qemus that used qemu_ram_alloc().
*/
ram = g_malloc(sizeof(*ram));

View File

@ -34,7 +34,7 @@ static void pci_error_message(Monitor *mon)
monitor_printf(mon, "PCI devices not supported\n");
}
int do_pcie_aer_inejct_error(Monitor *mon,
int do_pcie_aer_inject_error(Monitor *mon,
const QDict *qdict, QObject **ret_data)
{
pci_error_message(mon);

View File

@ -826,7 +826,7 @@ typedef struct PCIEAERErrorName {
} PCIEAERErrorName;
/*
* AER error name -> value convertion table
* AER error name -> value conversion table
* This naming scheme is same to linux aer-injection tool.
*/
static const struct PCIEAERErrorName pcie_aer_error_list[] = {
@ -951,7 +951,7 @@ static int pcie_aer_parse_error_string(const char *error_name,
return -EINVAL;
}
int do_pcie_aer_inejct_error(Monitor *mon,
int do_pcie_aer_inject_error(Monitor *mon,
const QDict *qdict, QObject **ret_data)
{
const char *id = qdict_get_str(qdict, "id");

View File

@ -4,7 +4,7 @@
* Copyright (c) 2011
* Written by Mathieu Sonet - www.elasticsheep.com
*
* This code is licenced under the GPL.
* This code is licensed under the GPL.
*
* *****************************************************************
*

View File

@ -4,7 +4,7 @@
* Copyright (c) 2011
* Written by Mathieu Sonet - www.elasticsheep.com
*
* This code is licenced under the GPL.
* This code is licensed under the GPL.
*
* *****************************************************************
*/

View File

@ -4,7 +4,7 @@
* Copyright (c) 2011
* Written by Mathieu Sonet - www.elasticsheep.com
*
* This code is licenced under the GPL.
* This code is licensed under the GPL.
*
* *****************************************************************
*/

View File

@ -358,7 +358,7 @@ static void pl110_write(void *opaque, target_phys_addr_t offset,
int n;
/* For simplicity invalidate the display whenever a control register
is writen to. */
is written to. */
s->invalidate = 1;
if (offset >= 0x200 && offset < 0x400) {
/* Pallette. */

View File

@ -311,9 +311,9 @@ static uint64_t pl181_read(void *opaque, target_phys_addr_t offset,
case 0x48: /* FifoCnt */
/* The documentation is somewhat vague about exactly what FifoCnt
does. On real hardware it appears to be when decrememnted
when a word is transfered between the FIFO and the serial
when a word is transferred between the FIFO and the serial
data engine. DataCnt is decremented after each byte is
transfered between the serial engine and the card.
transferred between the serial engine and the card.
We don't emulate this level of detail, so both can be the same. */
tmp = (s->datacnt + 3) >> 2;
if (s->linux_hack) {

View File

@ -1153,7 +1153,7 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val)
/* NVRAM helpers */
static inline uint32_t nvram_read (nvram_t *nvram, uint32_t addr)
{
return (*nvram->read_fn)(nvram->opaque, addr);;
return (*nvram->read_fn)(nvram->opaque, addr);
}
static inline void nvram_write (nvram_t *nvram, uint32_t addr, uint32_t val)

View File

@ -2662,7 +2662,7 @@ static void rtl8139_IntrStatus_write(RTL8139State *s, uint32_t val)
* Computing if we miss an interrupt here is not that correct but
* considered that we should have had already an interrupt
* and probably emulated is slower is better to assume this resetting was
* done before testing on previous rtl8139_update_irq lead to IRQ loosing
* done before testing on previous rtl8139_update_irq lead to IRQ losing
*/
rtl8139_set_next_tctr_time(s, qemu_get_clock_ns(vm_clock));
rtl8139_update_irq(s);

View File

@ -157,7 +157,7 @@
* Exeption-related registers
*/
/* Immediate data for TRAPA instuction - TRA */
/* Immediate data for TRAPA instruction - TRA */
#define SH7750_TRA_REGOFS 0x000020 /* offset */
#define SH7750_TRA SH7750_P4_REG32(SH7750_TRA_REGOFS)
#define SH7750_TRA_A7 SH7750_A7_REG32(SH7750_TRA_REGOFS)

View File

@ -429,7 +429,7 @@ static void smc91c111_writeb(void *opaque, target_phys_addr_t offset,
smc91c111_update(s);
return;
}
break;;
break;
case 3:
switch (offset) {

View File

@ -141,7 +141,7 @@ typedef struct sPAPREnvironment {
#define H_DABRX_KERNEL (1ULL<<(63-62))
#define H_DABRX_USER (1ULL<<(63-63))
/* Each control block has to be on a 4K bondary */
/* Each control block has to be on a 4K boundary */
#define H_CB_ALIGNMENT 4096
/* pSeries hypervisor opcodes */

View File

@ -123,7 +123,7 @@ static int ssd0303_send(i2c_slave *i2c, uint8_t data)
case 0xa7: /* Inverse on. */
s->inverse = 1;
break;
case 0xa8: /* Set multipled ratio (Ignored). */
case 0xa8: /* Set multiplied ratio (Ignored). */
s->cmd_state = SSD0303_CMD_SKIP1;
break;
case 0xad: /* DC-DC power control. */

View File

@ -5,7 +5,7 @@
*
* FB support code. Based on G364 fb emulator
*
* Copyright (c) 2007 Hervé Poussineau
* Copyright (c) 2007 Hervé Poussineau
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as

View File

@ -627,9 +627,10 @@ void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev)
if (proxy->class_code) {
pci_config_set_class(config, proxy->class_code);
}
pci_set_word(config + 0x2c, pci_get_word(config + PCI_VENDOR_ID));
pci_set_word(config + 0x2e, vdev->device_id);
config[0x3d] = 1;
pci_set_word(config + PCI_SUBSYSTEM_VENDOR_ID,
pci_get_word(config + PCI_VENDOR_ID));
pci_set_word(config + PCI_SUBSYSTEM_ID, vdev->device_id);
config[PCI_INTERRUPT_PIN] = 1;
memory_region_init(&proxy->msix_bar, "virtio-msix", 4096);
if (vdev->nvectors && !msix_init(&proxy->pci_dev, vdev->nvectors,

View File

@ -1,7 +1,7 @@
/*
* QEMU VMPort emulation
*
* Copyright (C) 2007 Hervé Poussineau
* Copyright (C) 2007 Hervé Poussineau
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal

View File

@ -42,7 +42,7 @@ typedef struct IB700state {
/* This is the timer. We use a global here because the watchdog
* code ensures there is only one watchdog (it is located at a fixed,
* unchangable IO port, so there could only ever be one anyway).
* unchangeable IO port, so there could only ever be one anyway).
*/
/* A write to this register enables the timer. */

View File

@ -75,11 +75,11 @@ TABLE 1
+-------------------------+---+---+---------+---------+
| Precision | u | v | FPSR.EP | length |
+-------------------------+---+---+---------+---------+
| Single | 0 ü 0 | x | 1 words |
| Double | 1 ü 1 | x | 2 words |
| Extended | 1 ü 1 | x | 3 words |
| Packed decimal | 1 ü 1 | 0 | 3 words |
| Expanded packed decimal | 1 ü 1 | 1 | 4 words |
| Single | 0 | 0 | x | 1 words |
| Double | 1 | 1 | x | 2 words |
| Extended | 1 | 1 | x | 3 words |
| Packed decimal | 1 | 1 | 0 | 3 words |
| Expanded packed decimal | 1 | 1 | 1 | 4 words |
+-------------------------+---+---+---------+---------+
Note: x = don't care
*/
@ -89,10 +89,10 @@ TABLE 2
+---+---+---------------------------------+
| w | x | Number of registers to transfer |
+---+---+---------------------------------+
| 0 ü 1 | 1 |
| 1 ü 0 | 2 |
| 1 ü 1 | 3 |
| 0 ü 0 | 4 |
| 0 | 1 | 1 |
| 1 | 0 | 2 |
| 1 | 1 | 3 |
| 0 | 0 | 4 |
+---+---+---------------------------------+
*/
@ -153,10 +153,10 @@ TABLE 5
+-------------------------+---+---+
| Rounding Precision | e | f |
+-------------------------+---+---+
| IEEE Single precision | 0 ü 0 |
| IEEE Double precision | 0 ü 1 |
| IEEE Extended precision | 1 ü 0 |
| undefined (trap) | 1 ü 1 |
| IEEE Single precision | 0 | 0 |
| IEEE Double precision | 0 | 1 |
| IEEE Extended precision | 1 | 0 |
| undefined (trap) | 1 | 1 |
+-------------------------+---+---+
*/
@ -165,10 +165,10 @@ TABLE 5
+---------------------------------+---+---+
| Rounding Mode | g | h |
+---------------------------------+---+---+
| Round to nearest (default) | 0 ü 0 |
| Round toward plus infinity | 0 ü 1 |
| Round toward negative infinity | 1 ü 0 |
| Round toward zero | 1 ü 1 |
| Round to nearest (default) | 0 | 0 |
| Round toward plus infinity | 0 | 1 |
| Round toward negative infinity | 1 | 0 |
| Round toward zero | 1 | 1 |
+---------------------------------+---+---+
*/

View File

@ -1,7 +1,7 @@
/*
* cpu to uname machine name map
*
* Copyright (c) 2009 Loïc Minier
* Copyright (c) 2009 Loïc Minier
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@ -2377,7 +2377,7 @@ static inline abi_long host_to_target_semid_ds(abi_ulong target_addr,
if (!lock_user_struct(VERIFY_WRITE, target_sd, target_addr, 0))
return -TARGET_EFAULT;
if (host_to_target_ipc_perm(target_addr,&(host_sd->sem_perm)))
return -TARGET_EFAULT;;
return -TARGET_EFAULT;
target_sd->sem_nsems = tswapal(host_sd->sem_nsems);
target_sd->sem_otime = tswapal(host_sd->sem_otime);
target_sd->sem_ctime = tswapal(host_sd->sem_ctime);
@ -7521,8 +7521,10 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
#endif
cmd = target_to_host_fcntl_cmd(arg2);
if (cmd == -TARGET_EINVAL)
return cmd;
if (cmd == -TARGET_EINVAL) {
ret = cmd;
break;
}
switch(arg2) {
case TARGET_F_GETLK64:

View File

@ -8,7 +8,7 @@ struct target_pt_regs {
abi_ulong r12;
abi_ulong rbp;
abi_ulong rbx;
/* arguments: non interrupts/non tracing syscalls only save upto here*/
/* arguments: non interrupts/non tracing syscalls only save up to here */
abi_ulong r11;
abi_ulong r10;
abi_ulong r9;

View File

@ -149,7 +149,7 @@ struct MemoryRegionPortio {
/**
* memory_region_init: Initialize a memory region
*
* The region typically acts as a container for other memory regions. Us
* The region typically acts as a container for other memory regions. Use
* memory_region_add_subregion() to add subregions.
*
* @mr: the #MemoryRegion to be initialized
@ -162,7 +162,7 @@ void memory_region_init(MemoryRegion *mr,
/**
* memory_region_init_io: Initialize an I/O memory region.
*
* Accesses into the region will be cause the callbacks in @ops to be called.
* Accesses into the region will cause the callbacks in @ops to be called.
* if @size is nonzero, subregions will be clipped to @size.
*
* @mr: the #MemoryRegion to be initialized.
@ -180,7 +180,7 @@ void memory_region_init_io(MemoryRegion *mr,
/**
* memory_region_init_ram: Initialize RAM memory region. Accesses into the
* region will be modify memory directly.
* region will modify memory directly.
*
* @mr: the #MemoryRegion to be initialized.
* @dev: a device associated with the region; may be %NULL.
@ -196,7 +196,7 @@ void memory_region_init_ram(MemoryRegion *mr,
/**
* memory_region_init_ram: Initialize RAM memory region from a user-provided.
* pointer. Accesses into the region will be modify
* pointer. Accesses into the region will modify
* memory directly.
*
* @mr: the #MemoryRegion to be initialized.
@ -250,7 +250,7 @@ void memory_region_init_rom_device(MemoryRegion *mr,
uint64_t size);
/**
* memory_region_destroy: Destroy a memory region and relaim all resources.
* memory_region_destroy: Destroy a memory region and reclaim all resources.
*
* @mr: the region to be destroyed. May not currently be a subregion
* (see memory_region_add_subregion()) or referenced in an alias
@ -417,7 +417,7 @@ void memory_region_clear_coalescing(MemoryRegion *mr);
*
* Marks a word in an IO region (initialized with memory_region_init_io())
* as a trigger for an eventfd event. The I/O callback will not be called.
* The caller must be prepared to handle failure (hat is, take the required
* The caller must be prepared to handle failure (that is, take the required
* action if the callback _is_ called).
*
* @mr: the memory region being updated.
@ -435,10 +435,10 @@ void memory_region_add_eventfd(MemoryRegion *mr,
int fd);
/**
* memory_region_del_eventfd: Cancel and eventfd.
* memory_region_del_eventfd: Cancel an eventfd.
*
* Cancels an eventfd trigger request by a previous memory_region_add_eventfd()
* call.
* Cancels an eventfd trigger requested by a previous
* memory_region_add_eventfd() call.
*
* @mr: the memory region being updated.
* @addr: the address within @mr that is to be monitored
@ -454,9 +454,9 @@ void memory_region_del_eventfd(MemoryRegion *mr,
uint64_t data,
int fd);
/**
* memory_region_add_subregion: Add a sub-region to a container.
* memory_region_add_subregion: Add a subregion to a container.
*
* Adds a sub-region at @offset. The sub-region may not overlap with other
* Adds a subregion at @offset. The subregion may not overlap with other
* subregions (except for those explicitly marked as overlapping). A region
* may only be added once as a subregion (unless removed with
* memory_region_del_subregion()); use memory_region_init_alias() if you
@ -471,9 +471,9 @@ void memory_region_add_subregion(MemoryRegion *mr,
target_phys_addr_t offset,
MemoryRegion *subregion);
/**
* memory_region_add_subregion: Add a sub-region to a container, with overlap.
* memory_region_add_subregion: Add a subregion to a container, with overlap.
*
* Adds a sub-region at @offset. The sub-region may overlap with other
* Adds a subregion at @offset. The subregion may overlap with other
* subregions. Conflicts are resolved by having a higher @priority hide a
* lower @priority. Subregions without priority are taken as @priority 0.
* A region may only be added once as a subregion (unless removed with
@ -501,11 +501,17 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr,
void memory_region_del_subregion(MemoryRegion *mr,
MemoryRegion *subregion);
/* Start a transaction; changes will be accumulated and made visible only
* when the transaction ends.
/**
* memory_region_transaction_begin: Start a transaction.
*
* During a transaction, changes will be accumulated and made visible
* only when the transaction ends (is commited).
*/
void memory_region_transaction_begin(void);
/* Commit a transaction and make changes visible to the guest.
/**
* memory_region_transaction_commit: Commit a transaction and make changes
* visible to the guest.
*/
void memory_region_transaction_commit(void);

View File

@ -81,8 +81,6 @@ uint64_t ram_bytes_total(void);
int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque);
int ram_load(QEMUFile *f, void *opaque, int version_id);
extern int incoming_expected;
/**
* @migrate_add_blocker - prevent migration from proceeding
*

View File

@ -414,6 +414,7 @@ static int net_socket_listen_init(VLANState *vlan,
fd = qemu_socket(PF_INET, SOCK_STREAM, 0);
if (fd < 0) {
perror("socket");
g_free(s);
return -1;
}
socket_set_nonblock(fd);
@ -425,11 +426,13 @@ static int net_socket_listen_init(VLANState *vlan,
ret = bind(fd, (struct sockaddr *)&saddr, sizeof(saddr));
if (ret < 0) {
perror("bind");
g_free(s);
return -1;
}
ret = listen(fd, 0);
if (ret < 0) {
perror("listen");
g_free(s);
return -1;
}
s->vlan = vlan;

View File

@ -65,7 +65,7 @@ static int tap_alloc(char *dev, size_t dev_size)
static int arp_fd = 0;
int ip_muxid, arp_muxid;
struct strioctl strioc_if, strioc_ppa;
int link_type = I_PLINK;;
int link_type = I_PLINK;
struct lifreq ifr;
char actual_name[32] = "";

View File

@ -44,6 +44,13 @@ int setenv(const char *name, const char *value, int overwrite)
char *string = g_malloc(length);
snprintf(string, length, "%s=%s", name, value);
result = putenv(string);
/* Windows takes a copy and does not continue to use our string.
* Therefore it can be safely freed on this platform. POSIX code
* typically has to leak the string because according to the spec it
* becomes part of the environment.
*/
g_free(string);
}
return result;
}

View File

@ -1,4 +1,4 @@
# 2004-03-16 Halldór Guðmundsson and Morten Lange
# 2004-03-16 Halldór Guðmundsson and Morten Lange
# Keyboard definition file for the Icelandic keyboard
# to be used in rdesktop 1.3.x ( See rdesktop.org)
# generated from XKB map de, and changed manually

View File

@ -1065,7 +1065,7 @@ diff -wruN --exclude '*~' --exclude '*.o' --exclude '*.bin' --exclude '*.out' --
+ tab, 4 * sizeof(uint32_t));
+ }
+#if 0
/* escc is usefull to get MacOS X debug messages */
/* escc is useful to get MacOS X debug messages */
{
OF_regprop_t regs[8];
@@ -2645,85 +2843,12 @@

View File

@ -50,7 +50,7 @@ run_multiboot:
shr $0x4, %ecx
mov %cx, %gs
/* now push the indirect jump decriptor there */
/* now push the indirect jump descriptor there */
mov (prot_jump), %ebx
add %eax, %ebx
movl %ebx, %gs:GS_PROT_JUMP

View File

@ -128,8 +128,8 @@ static ssize_t handle_aiocb_ioctl(struct qemu_paiocb *aiocb)
return -errno;
/*
* This looks weird, but the aio code only consideres a request
* successful if it has written the number full number of bytes.
* This looks weird, but the aio code only considers a request
* successful if it has written the full number of bytes.
*
* Now we overload aio_nbytes as aio_ioctl_cmd for the ioctl command,
* so in fact we return the ioctl command here to make posix_aio_read()

View File

@ -13,7 +13,7 @@
# partially-delivered JSON text in such a way that this response
# can be obtained.
#
# Such clients should also preceed this command
# Such clients should also precede this command
# with a 0xFF byte to make such the guest agent flushes any
# partially read JSON data from a previous session.
#

View File

@ -107,7 +107,6 @@ For system emulation, the following hardware targets are supported:
@item MusicPal (MV88W8618 ARM processor)
@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
@item Siemens SX1 smartphone (OMAP310 processor)
@item Syborg SVP base model (ARM Cortex-A8).
@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
@item Avnet LX60/LX110/LX200 boards (Xtensa)
@ -2079,28 +2078,6 @@ Secure Digital card connected to OMAP MMC/SD host
Three on-chip UARTs
@end itemize
The "Syborg" Symbian Virtual Platform base model includes the following
elements:
@itemize @minus
@item
ARM Cortex-A8 CPU
@item
Interrupt controller
@item
Timer
@item
Real Time Clock
@item
Keyboard
@item
Framebuffer
@item
Touchscreen
@item
UARTs
@end itemize
A Linux 2.6 test image is available on the QEMU web site. More
information is available in the QEMU mailing-list archive.

View File

@ -217,7 +217,7 @@ qcow2. If performance is more important than correctness,
In case you don't care about data integrity over host failures, use
cache=unsafe. This option tells qemu that it never needs to write any data
to the disk but can instead keeps things in cache. If anything goes wrong,
like your host losing power, the disk storage getting disconnected accidently,
like your host losing power, the disk storage getting disconnected accidentally,
etc. you're image will most probably be rendered unusable. When using
the @option{-snapshot} option, unsafe caching is always used.

View File

@ -96,10 +96,6 @@ Alpha and S390 hosts, but TCG (see below) doesn't support those yet.
@item Precise exceptions support.
@item The virtual CPU is a library (@code{libqemu}) which can be used
in other projects (look at @file{qemu/tests/qruncom.c} to have an
example of user mode @code{libqemu} usage).
@item
Floating point library supporting both full software emulation and
native host FPU instructions.
@ -685,7 +681,6 @@ are available. They are used for regression testing.
@menu
* test-i386::
* linux-test::
* qruncom.c::
@end menu
@node test-i386
@ -711,11 +706,6 @@ This program tests various Linux system calls. It is used to verify
that the system call parameters are correctly converted between target
and host CPUs.
@node qruncom.c
@section @file{qruncom.c}
Example of usage of @code{libqemu} to emulate a user mode i386 CPU.
@node Index
@chapter Index
@printindex cp

View File

@ -41,12 +41,12 @@
#ifdef __linux__
#define DECLARE_TLS(type, x) extern DEFINE_TLS(type, x)
#define DEFINE_TLS(type, x) __thread __typeof__(type) tls__##x
#define get_tls(x) tls__##x
#define tls_var(x) tls__##x
#else
/* Dummy implementations which define plain global variables */
#define DECLARE_TLS(type, x) extern DEFINE_TLS(type, x)
#define DEFINE_TLS(type, x) __typeof__(type) tls__##x
#define get_tls(x) tls__##x
#define tls_var(x) tls__##x
#endif
#endif

View File

@ -261,7 +261,7 @@ static const QErrorStringTable qerror_table[] = {
},
{
.error_fmt = QERR_INVALID_PARAMETER_COMBINATION,
.desc = "Invalid paramter combination",
.desc = "Invalid parameter combination",
},
{}
};

View File

@ -1907,7 +1907,7 @@ sub process {
my $ok = 0;
for (my $ln = $linenr - 1; $ln >= $first_line; $ln--) {
#print "CHECK<$lines[$ln - 1]\n";
# we have a preceeding printk if it ends
# we have a preceding printk if it ends
# with "\n" ignore it, else it is to blame
if ($lines[$ln - 1] =~ m{\bprintk\(}) {
if ($rawlines[$ln - 1] !~ m{\\n"}) {
@ -1999,7 +1999,7 @@ sub process {
for (my $n = 0; $n < $#elements; $n += 2) {
$off += length($elements[$n]);
# Pick up the preceeding and succeeding characters.
# Pick up the preceding and succeeding characters.
my $ca = substr($opline, 0, $off);
my $cc = '';
if (length($opline) >= ($off + length($elements[$n + 1]))) {

View File

@ -148,7 +148,7 @@ void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict);
/* pcie aer error injection */
void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
int do_pcie_aer_inejct_error(Monitor *mon,
int do_pcie_aer_inject_error(Monitor *mon,
const QDict *qdict, QObject **ret_data);
/* serial ports */

View File

@ -497,7 +497,7 @@ void do_interrupt (CPUState *env)
}
} else {
/* For VEIC mode, the external interrupt controller feeds the
vector throught the CP0Cause IP lines. */
vector through the CP0Cause IP lines. */
vector = pending;
}
offset = 0x200 + vector * spacing;

View File

@ -513,15 +513,15 @@ enum cc_op {
CC_OP_ADD_64, /* overflow on add (64bit) */
CC_OP_ADDU_64, /* overflow on unsigned add (64bit) */
CC_OP_SUB_64, /* overflow on substraction (64bit) */
CC_OP_SUBU_64, /* overflow on unsigned substraction (64bit) */
CC_OP_SUB_64, /* overflow on subtraction (64bit) */
CC_OP_SUBU_64, /* overflow on unsigned subtraction (64bit) */
CC_OP_ABS_64, /* sign eval on abs (64bit) */
CC_OP_NABS_64, /* sign eval on nabs (64bit) */
CC_OP_ADD_32, /* overflow on add (32bit) */
CC_OP_ADDU_32, /* overflow on unsigned add (32bit) */
CC_OP_SUB_32, /* overflow on substraction (32bit) */
CC_OP_SUBU_32, /* overflow on unsigned substraction (32bit) */
CC_OP_SUB_32, /* overflow on subtraction (32bit) */
CC_OP_SUBU_32, /* overflow on unsigned subtraction (32bit) */
CC_OP_ABS_32, /* sign eval on abs (64bit) */
CC_OP_NABS_32, /* sign eval on nabs (64bit) */

View File

@ -1336,7 +1336,7 @@ void HELPER(meeb)(uint32_t f1, uint32_t val)
uint32_t HELPER(cebr)(uint32_t f1, uint32_t f2)
{
float32 v1 = env->fregs[f1].l.upper;
float32 v2 = env->fregs[f2].l.upper;;
float32 v2 = env->fregs[f2].l.upper;
HELPER_LOG("%s: comparing 0x%d from f%d and 0x%d\n", __FUNCTION__,
v1, f1, v2);
return set_cc_f32(v1, v2);
@ -1346,7 +1346,7 @@ uint32_t HELPER(cebr)(uint32_t f1, uint32_t f2)
uint32_t HELPER(cdbr)(uint32_t f1, uint32_t f2)
{
float64 v1 = env->fregs[f1].d;
float64 v2 = env->fregs[f2].d;;
float64 v2 = env->fregs[f2].d;
HELPER_LOG("%s: comparing 0x%ld from f%d and 0x%ld\n", __FUNCTION__,
v1, f1, v2);
return set_cc_f64(v1, v2);

View File

@ -23,11 +23,6 @@
*/
#define TCG_TARGET_I386 1
#if defined(__x86_64__)
# define TCG_TARGET_REG_BITS 64
#else
# define TCG_TARGET_REG_BITS 32
#endif
//#define TCG_TARGET_WORDS_BIGENDIAN
#if TCG_TARGET_REG_BITS == 64

View File

@ -389,7 +389,7 @@ static inline void tcg_gen_helperN(void *func, int flags, int sizemask,
TCGArg ret, int nargs, TCGArg *args)
{
TCGv_ptr fn;
fn = tcg_const_ptr((tcg_target_long)func);
fn = tcg_const_ptr(func);
tcg_gen_callN(&tcg_ctx, fn, flags, sizemask, ret,
nargs, args);
tcg_temp_free_ptr(fn);
@ -405,7 +405,7 @@ static inline void tcg_gen_helper32(void *func, int sizemask, TCGv_i32 ret,
{
TCGv_ptr fn;
TCGArg args[2];
fn = tcg_const_ptr((tcg_target_long)func);
fn = tcg_const_ptr(func);
args[0] = GET_TCGV_I32(a);
args[1] = GET_TCGV_I32(b);
tcg_gen_callN(&tcg_ctx, fn, TCG_CALL_CONST | TCG_CALL_PURE, sizemask,
@ -418,7 +418,7 @@ static inline void tcg_gen_helper64(void *func, int sizemask, TCGv_i64 ret,
{
TCGv_ptr fn;
TCGArg args[2];
fn = tcg_const_ptr((tcg_target_long)func);
fn = tcg_const_ptr(func);
args[0] = GET_TCGV_I64(a);
args[1] = GET_TCGV_I64(b);
tcg_gen_callN(&tcg_ctx, fn, TCG_CALL_CONST | TCG_CALL_PURE, sizemask,

View File

@ -544,7 +544,7 @@ void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
#define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I32(n))
#define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I32(GET_TCGV_PTR(n))
#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32(V))
#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32((tcg_target_long)(V)))
#define tcg_global_reg_new_ptr(R, N) \
TCGV_NAT_TO_PTR(tcg_global_reg_new_i32((R), (N)))
#define tcg_global_mem_new_ptr(R, O, N) \
@ -555,7 +555,7 @@ void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
#define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I64(n))
#define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I64(GET_TCGV_PTR(n))
#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64(V))
#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64((tcg_target_long)(V)))
#define tcg_global_reg_new_ptr(R, N) \
TCGV_NAT_TO_PTR(tcg_global_reg_new_i64((R), (N)))
#define tcg_global_mem_new_ptr(R, O, N) \

View File

@ -115,12 +115,6 @@ speed: sha1 sha1-i386
time ./sha1
time $(QEMU) ./sha1-i386
# broken test
# NOTE: -fomit-frame-pointer is currently needed : this is a bug in libqemu
qruncom: qruncom.c ../ioport-user.c ../i386-user/libqemu.a
$(CC) $(CFLAGS) -fomit-frame-pointer $(LDFLAGS) -I../target-i386 -I.. -I../i386-user -I../fpu \
-o $@ $(filter %.c, $^) -L../i386-user -lqemu -lm
# arm test
hello-arm: hello-arm.o
arm-linux-ld -o $@ $<

View File

@ -1,284 +0,0 @@
/*
* Example of use of user mode libqemu: launch a basic .com DOS
* executable
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <signal.h>
#include <malloc.h>
#include "cpu.h"
//#define SIGTEST
int cpu_get_pic_interrupt(CPUState *env)
{
return -1;
}
uint64_t cpu_get_tsc(CPUState *env)
{
return 0;
}
static void set_gate(void *ptr, unsigned int type, unsigned int dpl,
unsigned long addr, unsigned int sel)
{
unsigned int e1, e2;
e1 = (addr & 0xffff) | (sel << 16);
e2 = (addr & 0xffff0000) | 0x8000 | (dpl << 13) | (type << 8);
stl((uint8_t *)ptr, e1);
stl((uint8_t *)ptr + 4, e2);
}
uint64_t idt_table[256];
/* only dpl matters as we do only user space emulation */
static void set_idt(int n, unsigned int dpl)
{
set_gate(idt_table + n, 0, dpl, 0, 0);
}
void g_free(void *ptr)
{
free(ptr);
}
void *g_malloc(size_t size)
{
return malloc(size);
}
void *g_malloc0(size_t size)
{
void *ptr;
ptr = g_malloc(size);
if (!ptr)
return NULL;
memset(ptr, 0, size);
return ptr;
}
void *qemu_vmalloc(size_t size)
{
return memalign(4096, size);
}
void qemu_vfree(void *ptr)
{
free(ptr);
}
void qemu_printf(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
}
/* XXX: this is a bug in helper2.c */
int errno;
/**********************************************/
#define COM_BASE_ADDR 0x10100
static void usage(void)
{
printf("qruncom version 0.1 (c) 2003 Fabrice Bellard\n"
"usage: qruncom file.com\n"
"user mode libqemu demo: run simple .com DOS executables\n");
exit(1);
}
static inline uint8_t *seg_to_linear(unsigned int seg, unsigned int reg)
{
return (uint8_t *)((seg << 4) + (reg & 0xffff));
}
static inline void pushw(CPUState *env, int val)
{
env->regs[R_ESP] = (env->regs[R_ESP] & ~0xffff) | ((env->regs[R_ESP] - 2) & 0xffff);
*(uint16_t *)seg_to_linear(env->segs[R_SS].selector, env->regs[R_ESP]) = val;
}
static void host_segv_handler(int host_signum, siginfo_t *info,
void *puc)
{
if (cpu_signal_handler(host_signum, info, puc)) {
return;
}
abort();
}
int main(int argc, char **argv)
{
uint8_t *vm86_mem;
const char *filename;
int fd, ret, seg;
CPUState *env;
if (argc != 2)
usage();
filename = argv[1];
vm86_mem = mmap((void *)0x00000000, 0x110000,
PROT_WRITE | PROT_READ | PROT_EXEC,
MAP_FIXED | MAP_ANON | MAP_PRIVATE, -1, 0);
if (vm86_mem == MAP_FAILED) {
perror("mmap");
exit(1);
}
/* load the MSDOS .com executable */
fd = open(filename, O_RDONLY);
if (fd < 0) {
perror(filename);
exit(1);
}
ret = read(fd, vm86_mem + COM_BASE_ADDR, 65536 - 256);
if (ret < 0) {
perror("read");
exit(1);
}
close(fd);
/* install exception handler for CPU emulator */
{
struct sigaction act;
sigfillset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
// act.sa_flags |= SA_ONSTACK;
act.sa_sigaction = host_segv_handler;
sigaction(SIGSEGV, &act, NULL);
sigaction(SIGBUS, &act, NULL);
}
// cpu_set_log(CPU_LOG_TB_IN_ASM | CPU_LOG_TB_OUT_ASM | CPU_LOG_EXEC);
env = cpu_init("qemu32");
cpu_x86_set_cpl(env, 3);
env->cr[0] = CR0_PG_MASK | CR0_WP_MASK | CR0_PE_MASK;
/* NOTE: hflags duplicates some of the virtual CPU state */
env->hflags |= HF_PE_MASK | VM_MASK;
/* flags setup : we activate the IRQs by default as in user
mode. We also activate the VM86 flag to run DOS code */
env->eflags |= IF_MASK | VM_MASK;
/* init basic registers */
env->eip = 0x100;
env->regs[R_ESP] = 0xfffe;
seg = (COM_BASE_ADDR - 0x100) >> 4;
cpu_x86_load_seg_cache(env, R_CS, seg,
(seg << 4), 0xffff, 0);
cpu_x86_load_seg_cache(env, R_SS, seg,
(seg << 4), 0xffff, 0);
cpu_x86_load_seg_cache(env, R_DS, seg,
(seg << 4), 0xffff, 0);
cpu_x86_load_seg_cache(env, R_ES, seg,
(seg << 4), 0xffff, 0);
cpu_x86_load_seg_cache(env, R_FS, seg,
(seg << 4), 0xffff, 0);
cpu_x86_load_seg_cache(env, R_GS, seg,
(seg << 4), 0xffff, 0);
/* exception support */
env->idt.base = (unsigned long)idt_table;
env->idt.limit = sizeof(idt_table) - 1;
set_idt(0, 0);
set_idt(1, 0);
set_idt(2, 0);
set_idt(3, 3);
set_idt(4, 3);
set_idt(5, 3);
set_idt(6, 0);
set_idt(7, 0);
set_idt(8, 0);
set_idt(9, 0);
set_idt(10, 0);
set_idt(11, 0);
set_idt(12, 0);
set_idt(13, 0);
set_idt(14, 0);
set_idt(15, 0);
set_idt(16, 0);
set_idt(17, 0);
set_idt(18, 0);
set_idt(19, 0);
/* put return code */
*seg_to_linear(env->segs[R_CS].selector, 0) = 0xb4; /* mov ah, $0 */
*seg_to_linear(env->segs[R_CS].selector, 1) = 0x00;
*seg_to_linear(env->segs[R_CS].selector, 2) = 0xcd; /* int $0x21 */
*seg_to_linear(env->segs[R_CS].selector, 3) = 0x21;
pushw(env, 0x0000);
/* the value of these registers seem to be assumed by pi_10.com */
env->regs[R_ESI] = 0x100;
env->regs[R_ECX] = 0xff;
env->regs[R_EBP] = 0x0900;
env->regs[R_EDI] = 0xfffe;
/* inform the emulator of the mmaped memory */
page_set_flags(0x00000000, 0x110000,
PAGE_WRITE | PAGE_READ | PAGE_EXEC | PAGE_VALID);
for(;;) {
ret = cpu_x86_exec(env);
switch(ret) {
case EXCP0D_GPF:
{
int int_num, ah;
int_num = *(uint8_t *)(env->segs[R_CS].base + env->eip + 1);
if (int_num != 0x21)
goto unknown_int;
ah = (env->regs[R_EAX] >> 8) & 0xff;
switch(ah) {
case 0x00: /* exit */
exit(0);
case 0x02: /* write char */
{
uint8_t c = env->regs[R_EDX];
write(1, &c, 1);
}
break;
case 0x09: /* write string */
{
uint8_t c;
for(;;) {
c = *seg_to_linear(env->segs[R_DS].selector, env->regs[R_EAX]);
if (c == '$')
break;
write(1, &c, 1);
}
env->regs[R_EAX] = (env->regs[R_EAX] & ~0xff) | '$';
}
break;
default:
unknown_int:
fprintf(stderr, "unsupported int 0x%02x\n", int_num);
cpu_dump_state(env, stderr, fprintf, 0);
// exit(1);
}
env->eip += 2;
}
break;
default:
fprintf(stderr, "unhandled cpu_exec return code (0x%x)\n", ret);
cpu_dump_state(env, stderr, fprintf, 0);
exit(1);
}
}
}

View File

@ -9,7 +9,7 @@
* *
* THE 'ZYWRLE' VNC CODEC SOURCE CODE IS (C) COPYRIGHT 2006 *
* BY Hitachi Systems & Services, Ltd. *
* (Noriaki Yamazaki, Research & Developement Center) *
* (Noriaki Yamazaki, Research & Development Center) *
* *
* *
********************************************************************

View File

@ -8,7 +8,7 @@
* *
* THE 'ZYWRLE' VNC CODEC SOURCE CODE IS (C) COPYRIGHT 2006 *
* BY Hitachi Systems & Services, Ltd. *
* (Noriaki Yamazaki, Research & Developement Center) *
* (Noriaki Yamazaki, Research & Development Center) *
* *
* *
********************************************************************

View File

@ -2183,7 +2183,7 @@ static int protocol_client_auth(VncState *vs, uint8_t *data, size_t len)
#ifdef CONFIG_VNC_TLS
case VNC_AUTH_VENCRYPT:
VNC_DEBUG("Accept VeNCrypt auth\n");;
VNC_DEBUG("Accept VeNCrypt auth\n");
start_auth_vencrypt(vs);
break;
#endif /* CONFIG_VNC_TLS */

View File

@ -542,9 +542,9 @@ static int usbredir_handle_data(USBDevice *udev, USBPacket *p)
case USB_ENDPOINT_XFER_ISOC:
return usbredir_handle_iso_data(dev, p, ep);
case USB_ENDPOINT_XFER_BULK:
return usbredir_handle_bulk_data(dev, p, ep);;
return usbredir_handle_bulk_data(dev, p, ep);
case USB_ENDPOINT_XFER_INT:
return usbredir_handle_interrupt_data(dev, p, ep);;
return usbredir_handle_interrupt_data(dev, p, ep);
default:
ERROR("handle_data ep %02X has unknown type %d\n", ep,
dev->endpoint[EP2I(ep)].type);