summaryrefslogtreecommitdiffstats
path: root/qemu/tests/qemu-iotests/104
blob: 726d46705272a01a71358af2b64a80143da566cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
#
# Test image creation with aligned and unaligned sizes
#
# Copyright (C) 2014 Fujitsu.
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# creator
owner=hutao@cn.fujitsu.com

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
status=1	# failure is the default!

trap "exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

_supported_fmt raw qcow qcow2 qed vdi vmdk vhdx
_supported_proto generic
_supported_os Linux

echo "=== Check qemu-img info output ==="
echo
image_sizes="1024 1234"

for s in $image_sizes; do
    _make_test_img $s
    _img_info | _filter_img_info
    _cleanup_test_img
done

# success, all done
echo "*** done"
rm -f $seq.full
status=0
IO_SIZE 0x1000 #define MPC8544_GUTS_RSTCR_RESET 0x02 #define MPC8544_GUTS_ADDR_PORPLLSR 0x00 #define MPC8544_GUTS_ADDR_PORBMSR 0x04 #define MPC8544_GUTS_ADDR_PORIMPSCR 0x08 #define MPC8544_GUTS_ADDR_PORDEVSR 0x0C #define MPC8544_GUTS_ADDR_PORDBGMSR 0x10 #define MPC8544_GUTS_ADDR_PORDEVSR2 0x14 #define MPC8544_GUTS_ADDR_GPPORCR 0x20 #define MPC8544_GUTS_ADDR_GPIOCR 0x30 #define MPC8544_GUTS_ADDR_GPOUTDR 0x40 #define MPC8544_GUTS_ADDR_GPINDR 0x50 #define MPC8544_GUTS_ADDR_PMUXCR 0x60 #define MPC8544_GUTS_ADDR_DEVDISR 0x70 #define MPC8544_GUTS_ADDR_POWMGTCSR 0x80 #define MPC8544_GUTS_ADDR_MCPSUMR 0x90 #define MPC8544_GUTS_ADDR_RSTRSCR 0x94 #define MPC8544_GUTS_ADDR_PVR 0xA0 #define MPC8544_GUTS_ADDR_SVR 0xA4 #define MPC8544_GUTS_ADDR_RSTCR 0xB0 #define MPC8544_GUTS_ADDR_IOVSELSR 0xC0 #define MPC8544_GUTS_ADDR_DDRCSR 0xB20 #define MPC8544_GUTS_ADDR_DDRCDR 0xB24 #define MPC8544_GUTS_ADDR_DDRCLKDR 0xB28 #define MPC8544_GUTS_ADDR_CLKOCR 0xE00 #define MPC8544_GUTS_ADDR_SRDS1CR1 0xF04 #define MPC8544_GUTS_ADDR_SRDS2CR1 0xF10 #define MPC8544_GUTS_ADDR_SRDS2CR3 0xF18 #define TYPE_MPC8544_GUTS "mpc8544-guts" #define MPC8544_GUTS(obj) OBJECT_CHECK(GutsState, (obj), TYPE_MPC8544_GUTS) struct GutsState { /*< private >*/ SysBusDevice parent_obj; /*< public >*/ MemoryRegion iomem; }; typedef struct GutsState GutsState; static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr, unsigned size) { uint32_t value = 0; PowerPCCPU *cpu = POWERPC_CPU(current_cpu); CPUPPCState *env = &cpu->env; addr &= MPC8544_GUTS_MMIO_SIZE - 1; switch (addr) { case MPC8544_GUTS_ADDR_PVR: value = env->spr[SPR_PVR]; break; case MPC8544_GUTS_ADDR_SVR: value = env->spr[SPR_E500_SVR]; break; default: fprintf(stderr, "guts: Unknown register read: %x\n", (int)addr); break; } return value; } static void mpc8544_guts_write(void *opaque, hwaddr addr, uint64_t value, unsigned size) { addr &= MPC8544_GUTS_MMIO_SIZE - 1; switch (addr) { case MPC8544_GUTS_ADDR_RSTCR: if (value & MPC8544_GUTS_RSTCR_RESET) { qemu_system_reset_request(); } break; default: fprintf(stderr, "guts: Unknown register write: %x = %x\n", (int)addr, (unsigned)value); break; } } static const MemoryRegionOps mpc8544_guts_ops = { .read = mpc8544_guts_read, .write = mpc8544_guts_write, .endianness = DEVICE_BIG_ENDIAN, .valid = { .min_access_size = 4, .max_access_size = 4, }, }; static void mpc8544_guts_initfn(Object *obj) { SysBusDevice *d = SYS_BUS_DEVICE(obj); GutsState *s = MPC8544_GUTS(obj); memory_region_init_io(&s->iomem, OBJECT(s), &mpc8544_guts_ops, s, "mpc8544.guts", MPC8544_GUTS_MMIO_SIZE); sysbus_init_mmio(d, &s->iomem); } static const TypeInfo mpc8544_guts_info = { .name = TYPE_MPC8544_GUTS, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(GutsState), .instance_init = mpc8544_guts_initfn, }; static void mpc8544_guts_register_types(void) { type_register_static(&mpc8544_guts_info); } type_init(mpc8544_guts_register_types)