1881dc979c443212bf91478a1799b23a43d8666fvboxsync/* $Id$ */
1881dc979c443212bf91478a1799b23a43d8666fvboxsync/** @file
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * PDM - Internal header file containing the inlined functions.
1881dc979c443212bf91478a1799b23a43d8666fvboxsync */
1881dc979c443212bf91478a1799b23a43d8666fvboxsync
1881dc979c443212bf91478a1799b23a43d8666fvboxsync/*
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * Copyright (C) 2012 Oracle Corporation
1881dc979c443212bf91478a1799b23a43d8666fvboxsync *
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * available from http://www.virtualbox.org. This file is free software;
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * you can redistribute it and/or modify it under the terms of the GNU
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * General Public License (GPL) as published by the Free Software
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1881dc979c443212bf91478a1799b23a43d8666fvboxsync */
1881dc979c443212bf91478a1799b23a43d8666fvboxsync
1881dc979c443212bf91478a1799b23a43d8666fvboxsync
1881dc979c443212bf91478a1799b23a43d8666fvboxsync
1881dc979c443212bf91478a1799b23a43d8666fvboxsync
1881dc979c443212bf91478a1799b23a43d8666fvboxsync/**
e7ccd35615043cd27d4f259c8e8b89f519d786devboxsync * Calculates the next IRQ tag.
e7ccd35615043cd27d4f259c8e8b89f519d786devboxsync *
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * @returns IRQ tag.
4bfa7b58e362a1bca0628643c352c137900bf01avboxsync * @param pVM Pointer to the VM.
1881dc979c443212bf91478a1799b23a43d8666fvboxsync * @param idTracer The ID of the source device.
1881dc979c443212bf91478a1799b23a43d8666fvboxsync */
1881dc979c443212bf91478a1799b23a43d8666fvboxsyncDECLINLINE(uint32_t) pdmCalcIrqTag(PVM pVM, uint32_t idTracer)
1881dc979c443212bf91478a1799b23a43d8666fvboxsync{
1881dc979c443212bf91478a1799b23a43d8666fvboxsync uint32_t uTag = (pVM->pdm.s.uIrqTag + 1) & 0x3ff; /* {0..1023} */
1881dc979c443212bf91478a1799b23a43d8666fvboxsync if (!uTag)
1881dc979c443212bf91478a1799b23a43d8666fvboxsync uTag++;
e7ccd35615043cd27d4f259c8e8b89f519d786devboxsync pVM->pdm.s.uIrqTag = uTag |= (idTracer << 16);
1881dc979c443212bf91478a1799b23a43d8666fvboxsync return uTag;
1881dc979c443212bf91478a1799b23a43d8666fvboxsync}
1881dc979c443212bf91478a1799b23a43d8666fvboxsync