[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] arm: mmio handlers
# HG changeset patch # User Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> # Date 1328787210 0 # Node ID e267c40ab2782dec0dc7cf2b1e822ac1b27d37a9 # Parent f770f641498bbdb2aca90bf6a0db7a2eaf0247a0 arm: mmio handlers Basic infrastructure to emulate mmio reads and writes. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx> Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- diff -r f770f641498b -r e267c40ab278 xen/arch/arm/io.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/arch/arm/io.c Thu Feb 09 11:33:30 2012 +0000 @@ -0,0 +1,50 @@ +/* + * xen/arch/arm/io.h + * + * ARM I/O handlers + * + * Copyright (c) 2011 Citrix Systems. + * + * 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. + */ + +#include <xen/config.h> +#include <xen/lib.h> +#include <asm/current.h> + +#include "io.h" + +static const struct mmio_handler *const mmio_handlers[] = +{ +}; +#define MMIO_HANDLER_NR ARRAY_SIZE(mmio_handlers) + +int handle_mmio(mmio_info_t *info) +{ + struct vcpu *v = current; + int i; + + for ( i = 0; i < MMIO_HANDLER_NR; i++ ) + if ( mmio_handlers[i]->check_handler(v, info->gpa) ) + return info->dabt.write ? + mmio_handlers[i]->write_handler(v, info) : + mmio_handlers[i]->read_handler(v, info); + + return 0; +} +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ diff -r f770f641498b -r e267c40ab278 xen/arch/arm/io.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/arch/arm/io.h Thu Feb 09 11:33:30 2012 +0000 @@ -0,0 +1,53 @@ +/* + * xen/arch/arm/io.h + * + * ARM I/O handlers + * + * Copyright (c) 2011 Citrix Systems. + * + * 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. + */ + +#ifndef __ARCH_ARM_IO_H__ +#define __ARCH_ARM_IO_H__ + +#include <xen/lib.h> +#include <asm/processor.h> + +typedef struct +{ + struct hsr_dabt dabt; + uint32_t gva; + paddr_t gpa; +} mmio_info_t; + +typedef int (*mmio_read_t)(struct vcpu *v, mmio_info_t *info); +typedef int (*mmio_write_t)(struct vcpu *v, mmio_info_t *info); +typedef int (*mmio_check_t)(struct vcpu *v, paddr_t addr); + +struct mmio_handler { + mmio_check_t check_handler; + mmio_read_t read_handler; + mmio_write_t write_handler; +}; + +extern int handle_mmio(mmio_info_t *info); + +#endif + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |