[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 04/19] xen/arm: its: Move ITS command encode helper functions
From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> ITS command encode functions are moved to header file gits-its.h and made as inline functions. This will be useful later in virtual its driver Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> --- xen/arch/arm/gic-v3-its.c | 71 +--------------------------- xen/include/asm-arm/gic-its.h | 104 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 70 deletions(-) diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c index cde0ec0..53850fe 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -39,6 +39,7 @@ #include <asm/device.h> #include <asm/gic.h> #include <asm/gic_v3_defs.h> +#include <asm/gic-its.h> #define its_print(lvl, fmt, ...) \ printk(lvl "GIC-ITS:" fmt, ## __VA_ARGS__) @@ -162,82 +163,12 @@ struct its_cmd_desc { }; }; -/* - * The ITS command block, which is what the ITS actually parses. - */ -struct its_cmd_block { - u64 raw_cmd[4]; -}; - #define ITS_CMD_QUEUE_SZ SZ_64K #define ITS_CMD_QUEUE_NR_ENTRIES (ITS_CMD_QUEUE_SZ / sizeof(struct its_cmd_block)) typedef struct its_collection *(*its_cmd_builder_t)(struct its_cmd_block *, struct its_cmd_desc *); -static void its_encode_cmd(struct its_cmd_block *cmd, u8 cmd_nr) -{ - cmd->raw_cmd[0] &= ~0xffULL; - cmd->raw_cmd[0] |= cmd_nr; -} - -static void its_encode_devid(struct its_cmd_block *cmd, u32 devid) -{ - cmd->raw_cmd[0] &= 0xffffffffULL; - cmd->raw_cmd[0] |= ((u64)devid) << 32; -} - -static void its_encode_event_id(struct its_cmd_block *cmd, u32 id) -{ - cmd->raw_cmd[1] &= ~0xffffffffULL; - cmd->raw_cmd[1] |= id; -} - -static void its_encode_phys_id(struct its_cmd_block *cmd, u32 phys_id) -{ - cmd->raw_cmd[1] &= 0xffffffffULL; - cmd->raw_cmd[1] |= ((u64)phys_id) << 32; -} - -static void its_encode_size(struct its_cmd_block *cmd, u8 size) -{ - cmd->raw_cmd[1] &= ~0xffULL; - cmd->raw_cmd[1] |= size; -} - -static void its_encode_itt(struct its_cmd_block *cmd, u64 itt_addr) -{ - cmd->raw_cmd[2] &= ~0xffffffffffffULL; - cmd->raw_cmd[2] |= itt_addr & 0xffffffffff00ULL; -} - -static void its_encode_valid(struct its_cmd_block *cmd, int valid) -{ - cmd->raw_cmd[2] &= ~(1ULL << 63); - cmd->raw_cmd[2] |= ((u64)!!valid) << 63; -} - -static void its_encode_target(struct its_cmd_block *cmd, u64 target_addr) -{ - cmd->raw_cmd[2] &= ~(0xffffffffULL << 16); - cmd->raw_cmd[2] |= (target_addr & (0xffffffffULL << 16)); -} - -static void its_encode_collection(struct its_cmd_block *cmd, u16 col) -{ - cmd->raw_cmd[2] &= ~0xffffULL; - cmd->raw_cmd[2] |= col; -} - -static inline void its_fixup_cmd(struct its_cmd_block *cmd) -{ - /* Let's fixup BE commands */ - cmd->raw_cmd[0] = cpu_to_le64(cmd->raw_cmd[0]); - cmd->raw_cmd[1] = cpu_to_le64(cmd->raw_cmd[1]); - cmd->raw_cmd[2] = cpu_to_le64(cmd->raw_cmd[2]); - cmd->raw_cmd[3] = cpu_to_le64(cmd->raw_cmd[3]); -} - static struct its_collection *its_build_mapd_cmd(struct its_cmd_block *cmd, struct its_cmd_desc *desc) { diff --git a/xen/include/asm-arm/gic-its.h b/xen/include/asm-arm/gic-its.h new file mode 100644 index 0000000..099ed9c --- /dev/null +++ b/xen/include/asm-arm/gic-its.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2013, 2014 ARM Limited, All Rights Reserved. + * Author: Marc Zyngier <marc.zyngier@xxxxxxx> + * + * Xen changes: + * Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> + * Copyright (C) 2014, 2015 Cavium Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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/>. + */ + +#ifndef __ASM_ARM_GIC_ITS_H__ +#define __ASM_ARM_GIC_ITS_H__ + +/* + * The ITS command block, which is what the ITS actually parses. + */ +struct its_cmd_block { + u64 raw_cmd[4]; +}; + +static inline void its_encode_cmd(struct its_cmd_block *cmd, u8 cmd_nr) +{ + cmd->raw_cmd[0] &= ~0xffULL; + cmd->raw_cmd[0] |= cmd_nr; +} + +static inline void its_encode_devid(struct its_cmd_block *cmd, u32 devid) +{ + cmd->raw_cmd[0] &= 0xffffffffULL; + cmd->raw_cmd[0] |= ((u64)devid) << 32; +} + +static inline void its_encode_event_id(struct its_cmd_block *cmd, u32 id) +{ + cmd->raw_cmd[1] &= ~0xffffffffULL; + cmd->raw_cmd[1] |= id; +} + +static inline void its_encode_phys_id(struct its_cmd_block *cmd, u32 phys_id) +{ + cmd->raw_cmd[1] &= 0xffffffffULL; + cmd->raw_cmd[1] |= ((u64)phys_id) << 32; +} + +static inline void its_encode_size(struct its_cmd_block *cmd, u8 size) +{ + cmd->raw_cmd[1] &= ~0xffULL; + cmd->raw_cmd[1] |= size; +} + +static inline void its_encode_itt(struct its_cmd_block *cmd, u64 itt_addr) +{ + cmd->raw_cmd[2] &= ~0xffffffffffffULL; + cmd->raw_cmd[2] |= itt_addr & 0xffffffffff00ULL; +} + +static inline void its_encode_valid(struct its_cmd_block *cmd, int valid) +{ + cmd->raw_cmd[2] &= ~(1ULL << 63); + cmd->raw_cmd[2] |= ((u64)!!valid) << 63; +} + +static inline void its_encode_target(struct its_cmd_block *cmd, u64 target_addr) +{ + cmd->raw_cmd[2] &= ~(0xffffffffULL << 16); + cmd->raw_cmd[2] |= (target_addr & (0xffffffffULL << 16)); +} + +static inline void its_encode_collection(struct its_cmd_block *cmd, u16 col) +{ + cmd->raw_cmd[2] &= ~0xffffULL; + cmd->raw_cmd[2] |= col; +} + +static inline void its_fixup_cmd(struct its_cmd_block *cmd) +{ + /* Let's fixup BE commands */ + cmd->raw_cmd[0] = cpu_to_le64(cmd->raw_cmd[0]); + cmd->raw_cmd[1] = cpu_to_le64(cmd->raw_cmd[1]); + cmd->raw_cmd[2] = cpu_to_le64(cmd->raw_cmd[2]); + cmd->raw_cmd[3] = cpu_to_le64(cmd->raw_cmd[3]); +} + +#endif /* __ASM_ARM_GIC_ITS_H__ */ + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ -- 1.7.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |