mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
ppc/xive: Export PQ get/set routines
These will be shared with the XIVE2 router. Reviewed-by: Greg Kurz <groug@kaod.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20210809134547.689560-8-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
379090306c
commit
fb8dc327f4
3 changed files with 11 additions and 7 deletions
|
@ -297,7 +297,7 @@ static uint8_t xive_esb_read(XiveSource *xsrc, int srcno, uint32_t offset)
|
||||||
return xive_esb_rw(xsrc, srcno, offset, 0, 0) & 0x3;
|
return xive_esb_rw(xsrc, srcno, offset, 0, 0) & 0x3;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xive_esb_trigger(XiveSource *xsrc, int srcno)
|
static void kvmppc_xive_esb_trigger(XiveSource *xsrc, int srcno)
|
||||||
{
|
{
|
||||||
uint64_t *addr = xsrc->esb_mmap + xive_source_esb_page(xsrc, srcno);
|
uint64_t *addr = xsrc->esb_mmap + xive_source_esb_page(xsrc, srcno);
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ uint64_t kvmppc_xive_esb_rw(XiveSource *xsrc, int srcno, uint32_t offset,
|
||||||
offset == XIVE_ESB_LOAD_EOI) {
|
offset == XIVE_ESB_LOAD_EOI) {
|
||||||
xive_esb_read(xsrc, srcno, XIVE_ESB_SET_PQ_00);
|
xive_esb_read(xsrc, srcno, XIVE_ESB_SET_PQ_00);
|
||||||
if (xsrc->status[srcno] & XIVE_STATUS_ASSERTED) {
|
if (xsrc->status[srcno] & XIVE_STATUS_ASSERTED) {
|
||||||
xive_esb_trigger(xsrc, srcno);
|
kvmppc_xive_esb_trigger(xsrc, srcno);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -366,7 +366,7 @@ void kvmppc_xive_source_set_irq(void *opaque, int srcno, int val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xive_esb_trigger(xsrc, srcno);
|
kvmppc_xive_esb_trigger(xsrc, srcno);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -533,7 +533,7 @@ static void kvmppc_xive_change_state_handler(void *opaque, bool running,
|
||||||
* generate a trigger.
|
* generate a trigger.
|
||||||
*/
|
*/
|
||||||
if (pq == XIVE_ESB_RESET && old_pq == XIVE_ESB_QUEUED) {
|
if (pq == XIVE_ESB_RESET && old_pq == XIVE_ESB_QUEUED) {
|
||||||
xive_esb_trigger(xsrc, i);
|
kvmppc_xive_esb_trigger(xsrc, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -816,7 +816,7 @@ void xive_tctx_destroy(XiveTCTX *tctx)
|
||||||
* XIVE ESB helpers
|
* XIVE ESB helpers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static uint8_t xive_esb_set(uint8_t *pq, uint8_t value)
|
uint8_t xive_esb_set(uint8_t *pq, uint8_t value)
|
||||||
{
|
{
|
||||||
uint8_t old_pq = *pq & 0x3;
|
uint8_t old_pq = *pq & 0x3;
|
||||||
|
|
||||||
|
@ -826,7 +826,7 @@ static uint8_t xive_esb_set(uint8_t *pq, uint8_t value)
|
||||||
return old_pq;
|
return old_pq;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool xive_esb_trigger(uint8_t *pq)
|
bool xive_esb_trigger(uint8_t *pq)
|
||||||
{
|
{
|
||||||
uint8_t old_pq = *pq & 0x3;
|
uint8_t old_pq = *pq & 0x3;
|
||||||
|
|
||||||
|
@ -846,7 +846,7 @@ static bool xive_esb_trigger(uint8_t *pq)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool xive_esb_eoi(uint8_t *pq)
|
bool xive_esb_eoi(uint8_t *pq)
|
||||||
{
|
{
|
||||||
uint8_t old_pq = *pq & 0x3;
|
uint8_t old_pq = *pq & 0x3;
|
||||||
|
|
||||||
|
|
|
@ -261,6 +261,10 @@ static inline hwaddr xive_source_esb_mgmt(XiveSource *xsrc, int srcno)
|
||||||
#define XIVE_ESB_QUEUED (XIVE_ESB_VAL_P | XIVE_ESB_VAL_Q)
|
#define XIVE_ESB_QUEUED (XIVE_ESB_VAL_P | XIVE_ESB_VAL_Q)
|
||||||
#define XIVE_ESB_OFF XIVE_ESB_VAL_Q
|
#define XIVE_ESB_OFF XIVE_ESB_VAL_Q
|
||||||
|
|
||||||
|
bool xive_esb_trigger(uint8_t *pq);
|
||||||
|
bool xive_esb_eoi(uint8_t *pq);
|
||||||
|
uint8_t xive_esb_set(uint8_t *pq, uint8_t value);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "magic" Event State Buffer (ESB) MMIO offsets.
|
* "magic" Event State Buffer (ESB) MMIO offsets.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue