提交 666eb032 编写于 作者: A Anthony Liguori

Merge remote-tracking branch 'mjt/trivial-patches' into staging

* mjt/trivial-patches:
  acpi unit-test: Remove temporary disk after test
  mainstone: Fix duplicate array values for key 'space'
  pxa27x: Add 'const' attribute to keyboard maps
  pxa27x: Reduce size of keyboard matrix mapping
  doc: Mention chardev:id in available devices for -serial
  configure: Python tests must be done before help message
  configure: Rewrite code for help message
  fix -boot strict regressed in commit 6ef4716c
  vl: make boot_strict variable static (not used outside vl.c)
  x86: only allow real mode to access 32bit without LMA
  linux-user: Use macro TARGET_NSIG_WORDS where possible
  exynos4210: Use macro ARRAY_SIZE where possible
  ui/cocoa: Use macro ARRAY_SIZE where possible
  misc: Use macro ARRAY_SIZE where possible
  openrisc: Fix spelling in comment (transaltion -> translation)
  hw/arm/highbank: Simplify code (memory region in device state)

Message-id: 1388182050-10270-1-git-send-email-mjt@msgid.tls.msk.ru
Signed-off-by: NAnthony Liguori <aliguori@amazon.com>
此差异已折叠。
...@@ -126,7 +126,7 @@ typedef struct { ...@@ -126,7 +126,7 @@ typedef struct {
SysBusDevice parent_obj; SysBusDevice parent_obj;
/*< public >*/ /*< public >*/
MemoryRegion *iomem; MemoryRegion iomem;
uint32_t regs[NUM_REGS]; uint32_t regs[NUM_REGS];
} HighbankRegsState; } HighbankRegsState;
...@@ -155,10 +155,9 @@ static int highbank_regs_init(SysBusDevice *dev) ...@@ -155,10 +155,9 @@ static int highbank_regs_init(SysBusDevice *dev)
{ {
HighbankRegsState *s = HIGHBANK_REGISTERS(dev); HighbankRegsState *s = HIGHBANK_REGISTERS(dev);
s->iomem = g_new(MemoryRegion, 1); memory_region_init_io(&s->iomem, OBJECT(s), &hb_mem_ops, s->regs,
memory_region_init_io(s->iomem, OBJECT(s), &hb_mem_ops, s->regs,
"highbank_regs", 0x1000); "highbank_regs", 0x1000);
sysbus_init_mmio(dev, s->iomem); sysbus_init_mmio(dev, &s->iomem);
return 0; return 0;
} }
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
#define S1_STSCHG_IRQ 14 #define S1_STSCHG_IRQ 14
#define S1_IRQ 15 #define S1_IRQ 15
static struct keymap map[0xE0] = { static const struct keymap map[0xE0] = {
[0 ... 0xDF] = { -1, -1 }, [0 ... 0xDF] = { -1, -1 },
[0x1e] = {0,0}, /* a */ [0x1e] = {0,0}, /* a */
[0x30] = {0,1}, /* b */ [0x30] = {0,1}, /* b */
...@@ -75,9 +75,18 @@ static struct keymap map[0xE0] = { ...@@ -75,9 +75,18 @@ static struct keymap map[0xE0] = {
[0x2c] = {4,3}, /* z */ [0x2c] = {4,3}, /* z */
[0xc7] = {5,0}, /* Home */ [0xc7] = {5,0}, /* Home */
[0x2a] = {5,1}, /* shift */ [0x2a] = {5,1}, /* shift */
[0x39] = {5,2}, /* space */ /*
* There are two matrix positions which map to space,
* but QEMU can only use one of them for the reverse
* mapping, so simply use the second one.
*/
/* [0x39] = {5,2}, space */
[0x39] = {5,3}, /* space */ [0x39] = {5,3}, /* space */
[0x1c] = {5,5}, /* enter */ /*
* Matrix position {5,4} and other keys are missing here.
* TODO: Compare with Linux code and test real hardware.
*/
[0x1c] = {5,5}, /* enter (TODO: might be wrong) */
[0xc8] = {6,0}, /* up */ [0xc8] = {6,0}, /* up */
[0xd0] = {6,1}, /* down */ [0xd0] = {6,1}, /* down */
[0xcb] = {6,2}, /* left */ [0xcb] = {6,2}, /* left */
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#define DPRINTF(fmt, ...) #define DPRINTF(fmt, ...)
#endif #endif
static struct keymap map[0x100] = { static const struct keymap map[0x100] = {
[0 ... 0xff] = { -1, -1 }, [0 ... 0xff] = { -1, -1 },
[0x3b] = {0, 0}, /* Option = F1 */ [0x3b] = {0, 0}, /* Option = F1 */
[0xc8] = {0, 1}, /* Up */ [0xc8] = {0, 1}, /* Up */
......
...@@ -900,7 +900,7 @@ static const IntelHDAReg *intel_hda_reg_find(IntelHDAState *d, hwaddr addr) ...@@ -900,7 +900,7 @@ static const IntelHDAReg *intel_hda_reg_find(IntelHDAState *d, hwaddr addr)
{ {
const IntelHDAReg *reg; const IntelHDAReg *reg;
if (addr >= sizeof(regtab)/sizeof(regtab[0])) { if (addr >= ARRAY_SIZE(regtab)) {
goto noreg; goto noreg;
} }
reg = regtab+addr; reg = regtab+addr;
...@@ -1025,7 +1025,7 @@ static void intel_hda_regs_reset(IntelHDAState *d) ...@@ -1025,7 +1025,7 @@ static void intel_hda_regs_reset(IntelHDAState *d)
uint32_t *addr; uint32_t *addr;
int i; int i;
for (i = 0; i < sizeof(regtab)/sizeof(regtab[0]); i++) { for (i = 0; i < ARRAY_SIZE(regtab); i++) {
if (regtab[i].name == NULL) { if (regtab[i].name == NULL) {
continue; continue;
} }
......
...@@ -192,10 +192,9 @@ typedef struct Exynos4210UartState { ...@@ -192,10 +192,9 @@ typedef struct Exynos4210UartState {
static const char *exynos4210_uart_regname(hwaddr offset) static const char *exynos4210_uart_regname(hwaddr offset)
{ {
int regs_number = sizeof(exynos4210_uart_regs) / sizeof(Exynos4210UartReg);
int i; int i;
for (i = 0; i < regs_number; i++) { for (i = 0; i < ARRAY_SIZE(exynos4210_uart_regs); i++) {
if (offset == exynos4210_uart_regs[i].offset) { if (offset == exynos4210_uart_regs[i].offset) {
return exynos4210_uart_regs[i].name; return exynos4210_uart_regs[i].name;
} }
...@@ -544,10 +543,9 @@ static void exynos4210_uart_event(void *opaque, int event) ...@@ -544,10 +543,9 @@ static void exynos4210_uart_event(void *opaque, int event)
static void exynos4210_uart_reset(DeviceState *dev) static void exynos4210_uart_reset(DeviceState *dev)
{ {
Exynos4210UartState *s = EXYNOS4210_UART(dev); Exynos4210UartState *s = EXYNOS4210_UART(dev);
int regs_number = sizeof(exynos4210_uart_regs)/sizeof(Exynos4210UartReg);
int i; int i;
for (i = 0; i < regs_number; i++) { for (i = 0; i < ARRAY_SIZE(exynos4210_uart_regs); i++) {
s->reg[I_(exynos4210_uart_regs[i].offset)] = s->reg[I_(exynos4210_uart_regs[i].offset)] =
exynos4210_uart_regs[i].reset_value; exynos4210_uart_regs[i].reset_value;
} }
......
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
struct PXA2xxKeyPadState { struct PXA2xxKeyPadState {
MemoryRegion iomem; MemoryRegion iomem;
qemu_irq irq; qemu_irq irq;
struct keymap *map; const struct keymap *map;
int pressed_cnt; int pressed_cnt;
int alt_code; int alt_code;
...@@ -322,8 +322,8 @@ PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem, ...@@ -322,8 +322,8 @@ PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem,
return s; return s;
} }
void pxa27x_register_keypad(PXA2xxKeyPadState *kp, struct keymap *map, void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
int size) const struct keymap *map, int size)
{ {
if(!map || size < 0x80) { if(!map || size < 0x80) {
fprintf(stderr, "%s - No PXA keypad map defined\n", __FUNCTION__); fprintf(stderr, "%s - No PXA keypad map defined\n", __FUNCTION__);
......
...@@ -383,8 +383,7 @@ static const Exynos4210PmuReg exynos4210_pmu_regs[] = { ...@@ -383,8 +383,7 @@ static const Exynos4210PmuReg exynos4210_pmu_regs[] = {
{"GPS_ALIVE_OPTION", GPS_ALIVE_OPTION, 0x00000001}, {"GPS_ALIVE_OPTION", GPS_ALIVE_OPTION, 0x00000001},
}; };
#define PMU_NUM_OF_REGISTERS \ #define PMU_NUM_OF_REGISTERS ARRAY_SIZE(exynos4210_pmu_regs)
(sizeof(exynos4210_pmu_regs) / sizeof(Exynos4210PmuReg))
#define TYPE_EXYNOS4210_PMU "exynos4210.pmu" #define TYPE_EXYNOS4210_PMU "exynos4210.pmu"
#define EXYNOS4210_PMU(obj) \ #define EXYNOS4210_PMU(obj) \
......
...@@ -102,15 +102,15 @@ void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq); ...@@ -102,15 +102,15 @@ void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq);
/* pxa2xx_keypad.c */ /* pxa2xx_keypad.c */
struct keymap { struct keymap {
int column; int8_t column;
int row; int8_t row;
}; };
typedef struct PXA2xxKeyPadState PXA2xxKeyPadState; typedef struct PXA2xxKeyPadState PXA2xxKeyPadState;
PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem, PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem,
hwaddr base, hwaddr base,
qemu_irq irq); qemu_irq irq);
void pxa27x_register_keypad(PXA2xxKeyPadState *kp, struct keymap *map, void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
int size); const struct keymap *map, int size);
/* pxa2xx.c */ /* pxa2xx.c */
typedef struct PXA2xxI2CState PXA2xxI2CState; typedef struct PXA2xxI2CState PXA2xxI2CState;
......
...@@ -2543,9 +2543,9 @@ void sparc64_set_context(CPUSPARCState *env) ...@@ -2543,9 +2543,9 @@ void sparc64_set_context(CPUSPARCState *env)
abi_ulong *src, *dst; abi_ulong *src, *dst;
src = ucp->tuc_sigmask.sig; src = ucp->tuc_sigmask.sig;
dst = target_set.sig; dst = target_set.sig;
for (i = 0; i < sizeof(target_sigset_t) / sizeof(abi_ulong); for (i = 0; i < TARGET_NSIG_WORDS; i++, dst++, src++) {
i++, dst++, src++)
err |= __get_user(*dst, src); err |= __get_user(*dst, src);
}
if (err) if (err)
goto do_sigsegv; goto do_sigsegv;
} }
...@@ -2648,9 +2648,9 @@ void sparc64_get_context(CPUSPARCState *env) ...@@ -2648,9 +2648,9 @@ void sparc64_get_context(CPUSPARCState *env)
abi_ulong *src, *dst; abi_ulong *src, *dst;
src = target_set.sig; src = target_set.sig;
dst = ucp->tuc_sigmask.sig; dst = ucp->tuc_sigmask.sig;
for (i = 0; i < sizeof(target_sigset_t) / sizeof(abi_ulong); for (i = 0; i < TARGET_NSIG_WORDS; i++, dst++, src++) {
i++, dst++, src++)
err |= __put_user(*src, dst); err |= __put_user(*src, dst);
}
if (err) if (err)
goto do_sigsegv; goto do_sigsegv;
} }
......
...@@ -856,7 +856,7 @@ static int net_host_check_device(const char *device) ...@@ -856,7 +856,7 @@ static int net_host_check_device(const char *device)
,"vde" ,"vde"
#endif #endif
}; };
for (i = 0; i < sizeof(valid_param_list) / sizeof(char *); i++) { for (i = 0; i < ARRAY_SIZE(valid_param_list); i++) {
if (!strncmp(valid_param_list[i], device, if (!strncmp(valid_param_list[i], device,
strlen(valid_param_list[i]))) strlen(valid_param_list[i])))
return 1; return 1;
......
...@@ -1975,8 +1975,7 @@ static void win_stdio_wait_func(void *opaque) ...@@ -1975,8 +1975,7 @@ static void win_stdio_wait_func(void *opaque)
DWORD dwSize; DWORD dwSize;
int i; int i;
ret = ReadConsoleInput(stdio->hStdIn, buf, sizeof(buf) / sizeof(*buf), ret = ReadConsoleInput(stdio->hStdIn, buf, ARRAY_SIZE(buf), &dwSize);
&dwSize);
if (!ret) { if (!ret) {
/* Avoid error storm */ /* Avoid error storm */
......
...@@ -2419,6 +2419,8 @@ vc:80Cx24C ...@@ -2419,6 +2419,8 @@ vc:80Cx24C
No device is allocated. No device is allocated.
@item null @item null
void device void device
@item chardev:@var{id}
Use a named character device defined with the @code{-chardev} option.
@item /dev/XXX @item /dev/XXX
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port [Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
parameters are set according to the emulated ones. parameters are set according to the emulated ones.
......
...@@ -531,6 +531,12 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, target_ulong addr, ...@@ -531,6 +531,12 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, target_ulong addr,
if (!(env->cr[0] & CR0_PG_MASK)) { if (!(env->cr[0] & CR0_PG_MASK)) {
pte = addr; pte = addr;
#ifdef TARGET_X86_64
if (!(env->hflags & HF_LMA_MASK)) {
/* Without long mode we can only address 32bits in real mode */
pte = (uint32_t)pte;
}
#endif
virt_addr = addr & TARGET_PAGE_MASK; virt_addr = addr & TARGET_PAGE_MASK;
prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC; prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
page_size = 4096; page_size = 4096;
......
...@@ -112,7 +112,7 @@ void openrisc_translate_init(void) ...@@ -112,7 +112,7 @@ void openrisc_translate_init(void)
} }
} }
/* Writeback SR_F transaltion-space to execution-space. */ /* Writeback SR_F translation space to execution space. */
static inline void wb_SR_F(void) static inline void wb_SR_F(void)
{ {
int label; int label;
......
...@@ -382,6 +382,7 @@ int main(int argc, char *argv[]) ...@@ -382,6 +382,7 @@ int main(int argc, char *argv[])
{ {
const char *arch = qtest_get_arch(); const char *arch = qtest_get_arch();
FILE *f = fopen(disk, "w"); FILE *f = fopen(disk, "w");
int ret;
fwrite(boot_sector, 1, sizeof boot_sector, f); fwrite(boot_sector, 1, sizeof boot_sector, f);
fclose(f); fclose(f);
...@@ -390,5 +391,7 @@ int main(int argc, char *argv[]) ...@@ -390,5 +391,7 @@ int main(int argc, char *argv[])
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
qtest_add_func("acpi/tcg", test_acpi_tcg); qtest_add_func("acpi/tcg", test_acpi_tcg);
} }
return g_test_run(); ret = g_test_run();
unlink(disk);
return ret;
} }
...@@ -240,9 +240,8 @@ int keymap[] = ...@@ -240,9 +240,8 @@ int keymap[] =
static int cocoa_keycode_to_qemu(int keycode) static int cocoa_keycode_to_qemu(int keycode)
{ {
if((sizeof(keymap)/sizeof(int)) <= keycode) if (ARRAY_SIZE(keymap) <= keycode) {
{ printf("(cocoa) warning unknown keycode 0x%x\n", keycode);
printf("(cocoa) warning unknow keycode 0x%x\n", keycode);
return 0; return 0;
} }
return keymap[keycode]; return keymap[keycode];
......
...@@ -230,7 +230,7 @@ int ctrl_grab = 0; ...@@ -230,7 +230,7 @@ int ctrl_grab = 0;
unsigned int nb_prom_envs = 0; unsigned int nb_prom_envs = 0;
const char *prom_envs[MAX_PROM_ENVS]; const char *prom_envs[MAX_PROM_ENVS];
int boot_menu; int boot_menu;
bool boot_strict; static bool boot_strict;
uint8_t *boot_splash_filedata; uint8_t *boot_splash_filedata;
size_t boot_splash_filedata_size; size_t boot_splash_filedata_size;
uint8_t qemu_extra_params_fw[2]; uint8_t qemu_extra_params_fw[2];
...@@ -461,7 +461,7 @@ static QemuOptsList qemu_boot_opts = { ...@@ -461,7 +461,7 @@ static QemuOptsList qemu_boot_opts = {
.type = QEMU_OPT_STRING, .type = QEMU_OPT_STRING,
}, { }, {
.name = "strict", .name = "strict",
.type = QEMU_OPT_STRING, .type = QEMU_OPT_BOOL,
}, },
{ /*End of list */ } { /*End of list */ }
}, },
...@@ -4081,6 +4081,7 @@ int main(int argc, char **argv, char **envp) ...@@ -4081,6 +4081,7 @@ int main(int argc, char **argv, char **envp)
} }
boot_menu = qemu_opt_get_bool(opts, "menu", boot_menu); boot_menu = qemu_opt_get_bool(opts, "menu", boot_menu);
boot_strict = qemu_opt_get_bool(opts, "strict", false);
} }
if (!kernel_cmdline) { if (!kernel_cmdline) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册