linux-mips
[Top] [All Lists]

Re: [PATCH 05/18] KVM/MIPS32-VZ: VZ-ASE assembler wrapper functions to s

To: Sanjay Lal <sanjayl@kymasys.com>
Subject: Re: [PATCH 05/18] KVM/MIPS32-VZ: VZ-ASE assembler wrapper functions to set GuestIDs
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date: Sun, 19 May 2013 17:36:33 +0400
Cc: kvm@vger.kernel.org, linux-mips@linux-mips.org, Ralf Baechle <ralf@linux-mips.org>, Gleb Natapov <gleb@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
In-reply-to: <1368942460-15577-6-git-send-email-sanjayl@kymasys.com>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <n> <1368942460-15577-1-git-send-email-sanjayl@kymasys.com> <1368942460-15577-6-git-send-email-sanjayl@kymasys.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6
Hello.

On 19-05-2013 9:47, Sanjay Lal wrote:

Signed-off-by: Sanjay Lal <sanjayl@kymasys.com>
---
  arch/mips/kvm/kvm_vz_locore.S | 74 +++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 74 insertions(+)
  create mode 100644 arch/mips/kvm/kvm_vz_locore.S

diff --git a/arch/mips/kvm/kvm_vz_locore.S b/arch/mips/kvm/kvm_vz_locore.S
new file mode 100644
index 0000000..6d037d7
--- /dev/null
+++ b/arch/mips/kvm/kvm_vz_locore.S
@@ -0,0 +1,74 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * KVM/MIPS: Assembler support for hardware virtualization extensions
+ *
+ * Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved.
+ * Authors: Yann Le Du <ledu@kymasys.com>
+ */
+
+#include <asm/asm.h>
+#include <asm/asmmacro.h>
+#include <asm/regdef.h>
+#include <asm/mipsregs.h>
+#include <asm/asm-offsets.h>
+#include <asm/mipsvzregs.h>
+
+#define MIPSX(name)    mips32_ ## name
+
+/*
+ * This routine sets GuestCtl1.RID to GUESTCTL1_VZ_ROOT_GUESTID
+ * Inputs: none
+ */
+LEAF(MIPSX(ClearGuestRID))
+       .set    push
+       .set    mips32r2
+       .set    noreorder
+       mfc0    t0, CP0_GUESTCTL1
+       addiu   t1, zero, GUESTCTL1_VZ_ROOT_GUESTID
+       ins     t0, t1, GUESTCTL1_RID_SHIFT, GUESTCTL1_RID_WIDTH
+       mtc0    t0, CP0_GUESTCTL1 # Set GuestCtl1.RID = 
GUESTCTL1_VZ_ROOT_GUESTID
+       ehb
+       j       ra

   Not jr?

+       nop                                     # BD Slot

   Instruction in the delay slot is usually indented by extra space.

+       .set    pop
+END(MIPSX(ClearGuestRID))
+
+
+/*
+ * This routine sets GuestCtl1.RID to a new value
+ * Inputs: a0 = new GuestRID value (right aligned)
+ */
+LEAF(MIPSX(SetGuestRID))
+       .set    push
+       .set    mips32r2
+       .set    noreorder
+       mfc0    t0, CP0_GUESTCTL1
+       ins     t0, a0, GUESTCTL1_RID_SHIFT, GUESTCTL1_RID_WIDTH
+       mtc0    t0, CP0_GUESTCTL1               # Set GuestCtl1.RID
+       ehb
+       j       ra
+       nop                                     # BD Slot

   Same here...

+       .set    pop
+END(MIPSX(SetGuestRID))
+
+
+       /*
+        * This routine sets GuestCtl1.RID to GuestCtl1.ID
+        * Inputs: none
+        */
+LEAF(MIPSX(SetGuestRIDtoGuestID))
+       .set    push
+       .set    mips32r2
+       .set    noreorder
+       mfc0    t0, CP0_GUESTCTL1               # Get current GuestID
+       ext     t1, t0, GUESTCTL1_ID_SHIFT, GUESTCTL1_ID_WIDTH
+       ins     t0, t1, GUESTCTL1_RID_SHIFT, GUESTCTL1_RID_WIDTH
+       mtc0    t0, CP0_GUESTCTL1               # Set GuestCtl1.RID = 
GuestCtl1.ID
+       ehb
+       j       ra
+       nop                                     # BD Slot

   ... and here.

+       .set    pop
+END(MIPSX(SetGuestRIDtoGuestID))

WBR, Sergei


<Prev in Thread] Current Thread [Next in Thread>