From patchwork Sun May 19 05:47:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sanjay Lal X-Patchwork-Id: 2589811 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 107453FDBC for ; Sun, 19 May 2013 05:48:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751916Ab3ESFsD (ORCPT ); Sun, 19 May 2013 01:48:03 -0400 Received: from kymasys.com ([64.62.140.43]:52670 "HELO kymasys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751371Ab3ESFsC (ORCPT ); Sun, 19 May 2013 01:48:02 -0400 Received: from agni.kymasys.com ([75.40.23.192]) by kymasys.com for ; Sat, 18 May 2013 22:47:59 -0700 Received: by agni.kymasys.com (Postfix, from userid 500) id 2B58E630053; Sat, 18 May 2013 22:47:43 -0700 (PDT) From: Sanjay Lal To: kvm@vger.kernel.org Cc: linux-mips@linux-mips.org, Ralf Baechle , Gleb Natapov , Marcelo Tosatti , Sanjay Lal Subject: [PATCH 05/18] KVM/MIPS32-VZ: VZ-ASE assembler wrapper functions to set GuestIDs Date: Sat, 18 May 2013 22:47:27 -0700 Message-Id: <1368942460-15577-6-git-send-email-sanjayl@kymasys.com> X-Mailer: git-send-email 1.7.11.3 In-Reply-To: <1368942460-15577-1-git-send-email-sanjayl@kymasys.com> References: <1368942460-15577-1-git-send-email-sanjayl@kymasys.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Signed-off-by: Sanjay Lal --- 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 + */ + +#include +#include +#include +#include +#include +#include + +#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 + nop # BD Slot + .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 + .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 + .set pop +END(MIPSX(SetGuestRIDtoGuestID))