mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
target/ppc: Implement ISA 3.00 tlbie[l]
This initial version supports the invalidation of one or all TLB entries. Flush by PID/LPID, or based in process/partition scope is not supported, because it would make using the generic QEMU TLB implementation hard. In these cases, all entries are flushed. Signed-off-by: Leandro Lupori <leandro.lupori@eldorado.org.br> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20220712193741.59134-3-leandro.lupori@eldorado.org.br> [danielhb: moved 'set' declaration to TLBIE_RIC_PWC block] Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
016b6e1d9c
commit
e7beaea55b
4 changed files with 188 additions and 0 deletions
|
@ -50,6 +50,21 @@ struct prtb_entry {
|
|||
|
||||
#ifdef TARGET_PPC64
|
||||
|
||||
/*
|
||||
* tlbie[l] helper flags
|
||||
*
|
||||
* RIC, PRS, R and local are passed as flags in the last argument.
|
||||
*/
|
||||
#define TLBIE_F_RIC_SHIFT 0
|
||||
#define TLBIE_F_PRS_SHIFT 2
|
||||
#define TLBIE_F_R_SHIFT 3
|
||||
#define TLBIE_F_LOCAL_SHIFT 4
|
||||
|
||||
#define TLBIE_F_RIC_MASK (3 << TLBIE_F_RIC_SHIFT)
|
||||
#define TLBIE_F_PRS (1 << TLBIE_F_PRS_SHIFT)
|
||||
#define TLBIE_F_R (1 << TLBIE_F_R_SHIFT)
|
||||
#define TLBIE_F_LOCAL (1 << TLBIE_F_LOCAL_SHIFT)
|
||||
|
||||
static inline bool ppc64_use_proc_tbl(PowerPCCPU *cpu)
|
||||
{
|
||||
return !!(cpu->env.spr[SPR_LPCR] & LPCR_UPRT);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue