📄 hvcall.s
字号:
/* * arch/ppc64/kernel/hvCall.S * * * This file contains the code to perform calls to the * iSeries LPAR hypervisor * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */#include "ppc_asm.h"#include <asm/processor.h>#include <linux/config.h> .text/* * Hypervisor call * * Invoke the iSeries hypervisor via the System Call instruction * Parameters are passed to this routine in registers r3 - r10 * * r3 contains the HV function to be called * r4-r10 contain the operands to the hypervisor function * */_GLOBAL(HvCall)_GLOBAL(HvCall0)_GLOBAL(HvCall1)_GLOBAL(HvCall2)_GLOBAL(HvCall3)_GLOBAL(HvCall4)_GLOBAL(HvCall5)_GLOBAL(HvCall6)_GLOBAL(HvCall7) mfcr r0 std r0,-8(r1) stdu r1,-(STACK_FRAME_OVERHEAD+16)(r1) /* r0 = 0xffffffffffffffff indicates a hypervisor call */ li r0,-1 /* Invoke the hypervisor */ sc ld r1,0(r1) ld r0,-8(r1) mtcrf 0xff,r0 /* return to caller, return value in r3 */ blr_GLOBAL(HvCall0Ret16)_GLOBAL(HvCall1Ret16)_GLOBAL(HvCall2Ret16)_GLOBAL(HvCall3Ret16)_GLOBAL(HvCall4Ret16)_GLOBAL(HvCall5Ret16)_GLOBAL(HvCall6Ret16)_GLOBAL(HvCall7Ret16) mfcr r0 std r0,-8(r1) std r31,-16(r1) stdu r1,-(STACK_FRAME_OVERHEAD+32)(r1) mr r31,r4 li r0,-1 mr r4,r5 mr r5,r6 mr r6,r7 mr r7,r8 mr r8,r9 mr r9,r10 sc std r3,0(r31) std r4,8(r31) mr r3,r5 ld r1,0(r1) ld r0,-8(r1) mtcrf 0xff,r0 ld r31,-16(r1) blr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -