[PATCH] powerpc: Extends HCALL interface for InfiniBand usage
This extends the HCALL interface for InfiniBand usage. I've made the patch against the linux-2.6 git tree and Segher's patch: [PATCH] Change H_StudlyCaps to H_SHOUTING_CAPS We moved this into the common powerpc code based on comments we got after posting the first eHCA InfiniBand device driver patch. Signed-off-by: Heiko j Schick <schickhj@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:

committed by
Paul Mackerras

parent
706c8c93ba
commit
b13a96cfb0
@@ -127,3 +127,103 @@ _GLOBAL(plpar_hcall_4out)
|
||||
|
||||
mtcrf 0xff,r0
|
||||
blr /* return r3 = status */
|
||||
|
||||
/* plpar_hcall_7arg_7ret(unsigned long opcode, R3
|
||||
unsigned long arg1, R4
|
||||
unsigned long arg2, R5
|
||||
unsigned long arg3, R6
|
||||
unsigned long arg4, R7
|
||||
unsigned long arg5, R8
|
||||
unsigned long arg6, R9
|
||||
unsigned long arg7, R10
|
||||
unsigned long *out1, 112(R1)
|
||||
unsigned long *out2, 110(R1)
|
||||
unsigned long *out3, 108(R1)
|
||||
unsigned long *out4, 106(R1)
|
||||
unsigned long *out5, 104(R1)
|
||||
unsigned long *out6, 102(R1)
|
||||
unsigned long *out7); 100(R1)
|
||||
*/
|
||||
_GLOBAL(plpar_hcall_7arg_7ret)
|
||||
HMT_MEDIUM
|
||||
|
||||
mfcr r0
|
||||
stw r0,8(r1)
|
||||
|
||||
HVSC /* invoke the hypervisor */
|
||||
|
||||
lwz r0,8(r1)
|
||||
|
||||
ld r11,STK_PARM(r11)(r1) /* Fetch r4 ret arg */
|
||||
std r4,0(r11)
|
||||
ld r11,STK_PARM(r12)(r1) /* Fetch r5 ret arg */
|
||||
std r5,0(r11)
|
||||
ld r11,STK_PARM(r13)(r1) /* Fetch r6 ret arg */
|
||||
std r6,0(r11)
|
||||
ld r11,STK_PARM(r14)(r1) /* Fetch r7 ret arg */
|
||||
std r7,0(r11)
|
||||
ld r11,STK_PARM(r15)(r1) /* Fetch r8 ret arg */
|
||||
std r8,0(r11)
|
||||
ld r11,STK_PARM(r16)(r1) /* Fetch r9 ret arg */
|
||||
std r9,0(r11)
|
||||
ld r11,STK_PARM(r17)(r1) /* Fetch r10 ret arg */
|
||||
std r10,0(r11)
|
||||
|
||||
mtcrf 0xff,r0
|
||||
|
||||
blr /* return r3 = status */
|
||||
|
||||
/* plpar_hcall_9arg_9ret(unsigned long opcode, R3
|
||||
unsigned long arg1, R4
|
||||
unsigned long arg2, R5
|
||||
unsigned long arg3, R6
|
||||
unsigned long arg4, R7
|
||||
unsigned long arg5, R8
|
||||
unsigned long arg6, R9
|
||||
unsigned long arg7, R10
|
||||
unsigned long arg8, 112(R1)
|
||||
unsigned long arg9, 110(R1)
|
||||
unsigned long *out1, 108(R1)
|
||||
unsigned long *out2, 106(R1)
|
||||
unsigned long *out3, 104(R1)
|
||||
unsigned long *out4, 102(R1)
|
||||
unsigned long *out5, 100(R1)
|
||||
unsigned long *out6, 98(R1)
|
||||
unsigned long *out7); 96(R1)
|
||||
unsigned long *out8, 94(R1)
|
||||
unsigned long *out9, 92(R1)
|
||||
*/
|
||||
_GLOBAL(plpar_hcall_9arg_9ret)
|
||||
HMT_MEDIUM
|
||||
|
||||
mfcr r0
|
||||
stw r0,8(r1)
|
||||
|
||||
ld r11,STK_PARM(r11)(r1) /* put arg8 in R11 */
|
||||
ld r12,STK_PARM(r12)(r1) /* put arg9 in R12 */
|
||||
|
||||
HVSC /* invoke the hypervisor */
|
||||
|
||||
ld r0,STK_PARM(r13)(r1) /* Fetch r4 ret arg */
|
||||
stdx r4,r0,r0
|
||||
ld r0,STK_PARM(r14)(r1) /* Fetch r5 ret arg */
|
||||
stdx r5,r0,r0
|
||||
ld r0,STK_PARM(r15)(r1) /* Fetch r6 ret arg */
|
||||
stdx r6,r0,r0
|
||||
ld r0,STK_PARM(r16)(r1) /* Fetch r7 ret arg */
|
||||
stdx r7,r0,r0
|
||||
ld r0,STK_PARM(r17)(r1) /* Fetch r8 ret arg */
|
||||
stdx r8,r0,r0
|
||||
ld r0,STK_PARM(r18)(r1) /* Fetch r9 ret arg */
|
||||
stdx r9,r0,r0
|
||||
ld r0,STK_PARM(r19)(r1) /* Fetch r10 ret arg */
|
||||
stdx r10,r0,r0
|
||||
ld r0,STK_PARM(r20)(r1) /* Fetch r11 ret arg */
|
||||
stdx r11,r0,r0
|
||||
ld r0,STK_PARM(r21)(r1) /* Fetch r12 ret arg */
|
||||
stdx r12,r0,r0
|
||||
|
||||
lwz r0,8(r1)
|
||||
mtcrf 0xff,r0
|
||||
|
||||
blr /* return r3 = status */
|
||||
|
@@ -54,7 +54,8 @@ EXPORT_SYMBOL(plpar_hcall);
|
||||
EXPORT_SYMBOL(plpar_hcall_4out);
|
||||
EXPORT_SYMBOL(plpar_hcall_norets);
|
||||
EXPORT_SYMBOL(plpar_hcall_8arg_2ret);
|
||||
|
||||
EXPORT_SYMBOL(plpar_hcall_7arg_7ret);
|
||||
EXPORT_SYMBOL(plpar_hcall_9arg_9ret);
|
||||
extern void pSeries_find_serial_port(void);
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user