1*f5095aa3SPeter Maydell /* 2*f5095aa3SPeter Maydell * "Unimplemented" device 3*f5095aa3SPeter Maydell * 4*f5095aa3SPeter Maydell * Copyright Linaro Limited, 2017 5*f5095aa3SPeter Maydell * Written by Peter Maydell 6*f5095aa3SPeter Maydell */ 7*f5095aa3SPeter Maydell 8*f5095aa3SPeter Maydell #ifndef HW_MISC_UNIMP_H 9*f5095aa3SPeter Maydell #define HW_MISC_UNIMP_H 10*f5095aa3SPeter Maydell 11*f5095aa3SPeter Maydell #define TYPE_UNIMPLEMENTED_DEVICE "unimplemented-device" 12*f5095aa3SPeter Maydell 13*f5095aa3SPeter Maydell /** 14*f5095aa3SPeter Maydell * create_unimplemented_device: create and map a dummy device 15*f5095aa3SPeter Maydell * @name: name of the device for debug logging 16*f5095aa3SPeter Maydell * @base: base address of the device's MMIO region 17*f5095aa3SPeter Maydell * @size: size of the device's MMIO region 18*f5095aa3SPeter Maydell * 19*f5095aa3SPeter Maydell * This utility function creates and maps an instance of unimplemented-device, 20*f5095aa3SPeter Maydell * which is a dummy device which simply logs all guest accesses to 21*f5095aa3SPeter Maydell * it via the qemu_log LOG_UNIMP debug log. 22*f5095aa3SPeter Maydell * The device is mapped at priority -1000, which means that you can 23*f5095aa3SPeter Maydell * use it to cover a large region and then map other devices on top of it 24*f5095aa3SPeter Maydell * if necessary. 25*f5095aa3SPeter Maydell */ 26*f5095aa3SPeter Maydell static inline void create_unimplemented_device(const char *name, 27*f5095aa3SPeter Maydell hwaddr base, 28*f5095aa3SPeter Maydell hwaddr size) 29*f5095aa3SPeter Maydell { 30*f5095aa3SPeter Maydell DeviceState *dev = qdev_create(NULL, TYPE_UNIMPLEMENTED_DEVICE); 31*f5095aa3SPeter Maydell 32*f5095aa3SPeter Maydell qdev_prop_set_string(dev, "name", name); 33*f5095aa3SPeter Maydell qdev_prop_set_uint64(dev, "size", size); 34*f5095aa3SPeter Maydell qdev_init_nofail(dev); 35*f5095aa3SPeter Maydell 36*f5095aa3SPeter Maydell sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, base, -1000); 37*f5095aa3SPeter Maydell } 38*f5095aa3SPeter Maydell 39*f5095aa3SPeter Maydell #endif 40