Message ID | 1350539437-535-14-git-send-email-david@gibson.dropbear.id.au |
---|---|
State | New |
Headers | show |
On Thu, Oct 18, 2012 at 08:37:20AM +0200, Alexander Graf wrote: > > > On 18.10.2012, at 07:50, David Gibson <david@gibson.dropbear.id.au> wrote: > > > Currently the ppcemb_tlb_t struct, used on a number of embedded ppc models > > to represent a TLB entry contains a target_phys_addr_t. That works > > reasonably for now, but is troublesome for saving the state, which we'll > > want to do in future. target_phys_addr_t is a large enough type to contain > > a physical address for any supported machine - and can thus, in theory at > > least, vary depending on what machines are enabled other than the one > > we're actually using right now. This makes it unsuitable for describing > > in vmstate. > > Target_phys_addr_t is actually 64bit for all ppc targets today since > some 32 bit boards support more than 32 bit address space ;). Yes, I know. In fact since recently it's 64bit always on everything. > The change still is fine though, as it makes that bit explicit. Yes. What this is leading to is the new savevm code - there are no vmstate helpers for target_phys_addr_t and my attempt to add them met with at least semi-convincing arguments against.
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index cde6da0..f30e0c7 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -355,7 +355,7 @@ struct ppc6xx_tlb_t { typedef struct ppcemb_tlb_t ppcemb_tlb_t; struct ppcemb_tlb_t { - target_phys_addr_t RPN; + uint64_t RPN; target_ulong EPN; target_ulong PID; target_ulong size;
Currently the ppcemb_tlb_t struct, used on a number of embedded ppc models to represent a TLB entry contains a target_phys_addr_t. That works reasonably for now, but is troublesome for saving the state, which we'll want to do in future. target_phys_addr_t is a large enough type to contain a physical address for any supported machine - and can thus, in theory at least, vary depending on what machines are enabled other than the one we're actually using right now. This makes it unsuitable for describing in vmstate. This patch therefore changes ppcemb_tlb_t to use a fixed 64-bit integer which we know is sufficient for all the machines which use this structure. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> --- target-ppc/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)