All of lore.kernel.org
 help / color / mirror / Atom feed
* Emulating lwarx and stwcx instructions in PowerPc BOOKE e500
@ 2012-03-05 20:37 Aashish Mittal
  2012-03-05 21:51 ` Scott Wood
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Aashish Mittal @ 2012-03-05 20:37 UTC (permalink / raw)
  To: kvm-ppc

Hi
I'm working on powerpc booke architecture and my project requires me to remove
read and write privileges on some pages. Due to this any instruction accessing
these pages traps and i'm trying to emulate the behavior of these instructions.

I've emulated lwarx and stwcx instruction but i think stwcx is not working
correctly. The emulation i've written is written below

case OP_31_XOP_LWARX:
{
  ulong ret;
  ulong addr;
  int eh = inst & 0x00000001 ;
  kvm_gva_to_hva(vcpu,ea,&addr);
  /*lwarx RT RA RB EH*/
  if(eh = 0)
      __asm__ __volatile__("lwarx %0,0,%1,0; isync":"=r" (ret) :"r" (addr));
  else
     __asm__ __volatile__("lwarx %0,0,%1,1; isync":"=r" (ret) :"r" (addr));
	      
  kvmppc_set_gpr(vcpu,rt,ret);
}

case OP_31_XOP_STWCX:
{
  ulong tmp;
  ulong addr;
  ulong data;
  kvm_gva_to_hva(vcpu,ea,&addr);
  kvmppc_read_guest(vcpu,ea,&data,sizeof(data));
  __asm__ __volatile__("stwcx. %1,0,%2; isync"
  :"=r" (tmp):"r" (data),"r" (addr):"memory");

} 

Here kvm_gva_to_hva function convrets a guest effective address to host virtual
address .

void kvm_gva_to_hva(struct kvm_vcpu *vcpu, ulong ea,ulong* hva)
{
  gfn_t gfn;
  gpa_t gpa ;
  int gtlb_index;
  int offset;
  ulong addr;
  struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
	
  gtlb_index = kvmppc_mmu_itlb_index(vcpu, ea);
  gpa = kvmppc_mmu_xlate(vcpu,gtlb_index, ea);
  gfn = gpa >> PAGE_SHIFT;
  addr = (ulong)gfn_to_hva(vcpu_e500->vcpu.kvm, gfn);
  offset = offset_in_page(gpa);
  
  *hva = addr + offset;
  return;
}

The guest just hangs once it encounters a stwcx instruction. Does anybody have
any idea why this is not working and what's wrong about the emulation code.

Also i'm working on linux-3.0-rc4 kernel .

Thanks in advance



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-03-06 20:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-05 20:37 Emulating lwarx and stwcx instructions in PowerPc BOOKE e500 Aashish Mittal
2012-03-05 21:51 ` Scott Wood
2012-03-06 14:46 ` Sethi Varun-B16395
2012-03-06 20:42 ` Aashish Mittal
2012-03-06 20:45 ` Scott Wood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.