|
|
|
@@ -234,10 +234,10 @@ static void call (Capability target, Message *msg, Capability r0, Capability r1,
|
|
|
|
Capability t = cap_copy (target);
|
|
|
|
Capability t = cap_copy (target);
|
|
|
|
__asm__ volatile ("lw $v0, %0\n"
|
|
|
|
__asm__ volatile ("lw $v0, %0\n"
|
|
|
|
"\tlw $v1, %1\n"
|
|
|
|
"\tlw $v1, %1\n"
|
|
|
|
"\tlw $t4, %1\n"
|
|
|
|
"\tlw $t4, %2\n"
|
|
|
|
"\tlw $t5, %2\n"
|
|
|
|
"\tlw $t5, %3\n"
|
|
|
|
"\tlw $t6, %3\n"
|
|
|
|
"\tlw $t6, %4\n"
|
|
|
|
"\tlw $t7, %4\n"
|
|
|
|
"\tlw $t7, %5\n"
|
|
|
|
"\tlw $t0, 0($v1)\n"
|
|
|
|
"\tlw $t0, 0($v1)\n"
|
|
|
|
"\tlw $t1, 4($v1)\n"
|
|
|
|
"\tlw $t1, 4($v1)\n"
|
|
|
|
"\tlw $t2, 8($v1)\n"
|
|
|
|
"\tlw $t2, 8($v1)\n"
|
|
|
|
@@ -265,10 +265,10 @@ static void invoke_00 (Capability t)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[0] = 0;
|
|
|
|
msg.cap[0] = CAPABILITY_NONE;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -279,10 +279,10 @@ static void invoke_01 (Capability t, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[0] = 0;
|
|
|
|
msg.cap[0] = CAPABILITY_NONE;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -293,10 +293,10 @@ static void invoke_02 (Capability t, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[0] = 0;
|
|
|
|
msg.cap[0] = CAPABILITY_NONE;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -307,10 +307,10 @@ static void invoke_03 (Capability t, unsigned d0, unsigned d1, unsigned d2)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[0] = 0;
|
|
|
|
msg.cap[0] = CAPABILITY_NONE;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -321,10 +321,10 @@ static void invoke_04 (Capability t, unsigned d0, unsigned d1, unsigned d2, unsi
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.cap[0] = 0;
|
|
|
|
msg.cap[0] = CAPABILITY_NONE;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -336,9 +336,9 @@ static void invoke_10 (Capability t, Capability c)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -350,9 +350,9 @@ static void invoke_11 (Capability t, Capability c, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -364,9 +364,9 @@ static void invoke_12 (Capability t, Capability c, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -378,9 +378,9 @@ static void invoke_13 (Capability t, Capability c, unsigned d0, unsigned d1, uns
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -392,9 +392,9 @@ static void invoke_14 (Capability t, Capability c, unsigned d0, unsigned d1, uns
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -407,8 +407,8 @@ static void invoke_20 (Capability t, Capability c0, Capability c1)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -421,8 +421,8 @@ static void invoke_21 (Capability t, Capability c0, Capability c1, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -436,7 +436,7 @@ static void invoke_31 (Capability t, Capability c0, Capability c1, Capability c2
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
invoke (t, &msg);
|
|
|
|
invoke (t, &msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -462,9 +462,9 @@ static void call_00 (Capability c)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -476,9 +476,9 @@ static unsigned call_n00 (Capability c)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -491,9 +491,9 @@ static void call_c00 (Capability c, Capability target)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -505,9 +505,9 @@ static void call_c01 (Capability c, Capability target, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -519,9 +519,9 @@ static unsigned long long call_l01 (Capability c, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -534,9 +534,9 @@ static void call_c02 (Capability c, Capability target, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -548,9 +548,9 @@ static unsigned long long call_l02 (Capability c, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -563,9 +563,9 @@ static void call_c03 (Capability c, Capability target, unsigned d0, unsigned d1,
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -577,9 +577,9 @@ static unsigned long long call_l04 (Capability c, unsigned d0, unsigned d1, unsi
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
return (unsigned long long)msg.data[0] | ((unsigned long long)msg.data[1] << 32);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -593,8 +593,8 @@ static void call_c12 (Capability c, Capability target, Capability c1, unsigned d
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -607,8 +607,8 @@ static void call_c13 (Capability c, Capability target, Capability c1, unsigned d
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -620,9 +620,9 @@ static unsigned call_n01 (Capability c, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -636,8 +636,8 @@ static unsigned call_n11 (Capability c, Capability c1, unsigned d)
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -651,8 +651,8 @@ static unsigned call_n12 (Capability c, Capability c1, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -666,8 +666,8 @@ static unsigned call_n14 (Capability c, Capability c1, unsigned d0, unsigned d1,
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -680,9 +680,9 @@ static unsigned call_n02 (Capability c, unsigned d0, unsigned d1)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -695,9 +695,9 @@ static Capability call_p02 (Capability c, unsigned d0, unsigned d1, unsigned *ba
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
*base_return = msg.data[0];
|
|
|
|
*base_return = msg.data[0];
|
|
|
|
return msg.cap[0];
|
|
|
|
return msg.cap[0];
|
|
|
|
@@ -711,9 +711,9 @@ static unsigned call_n03 (Capability c, unsigned d0, unsigned d1, unsigned d2)
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -727,9 +727,9 @@ static unsigned call_n04 (Capability c, unsigned d0, unsigned d1, unsigned d2, u
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = d3;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[1] = 0;
|
|
|
|
msg.cap[1] = CAPABILITY_NONE;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -743,8 +743,8 @@ static void call_c11 (Capability target, Capability c, Capability c1, unsigned d
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[1] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[2] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, target, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -757,8 +757,8 @@ static unsigned call_n13 (Capability c, Capability c1, unsigned d0, unsigned d1,
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[1] = d1;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[2] = d2;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.data[3] = 0;
|
|
|
|
msg.cap[2] = 0;
|
|
|
|
msg.cap[2] = CAPABILITY_NONE;
|
|
|
|
msg.cap[3] = 0;
|
|
|
|
msg.cap[3] = CAPABILITY_NONE;
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
call (__my_call, &msg, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE, CAPABILITY_NONE);
|
|
|
|
return msg.data[0];
|
|
|
|
return msg.data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -879,7 +879,7 @@ static void receiver_create_async_call_capability (Capability target, Capability
|
|
|
|
return call_c02 (receiver, target, CAP_RECEIVER_CREATE_CALL_CAPABILITY, 1);
|
|
|
|
return call_c02 (receiver, target, CAP_RECEIVER_CREATE_CALL_CAPABILITY, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void memory_create (Capability target, Capability memory, unsigned type)
|
|
|
|
static void memory_create (Capability memory, Capability target, unsigned type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return call_c02 (memory, target, CAP_MEMORY_CREATE, type);
|
|
|
|
return call_c02 (memory, target, CAP_MEMORY_CREATE, type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -998,7 +998,7 @@ static void caps_set (Capability caps, Capability cap, unsigned index)
|
|
|
|
invoke_12 (caps, cap, CAP_CAPS_SET, index);
|
|
|
|
invoke_12 (caps, cap, CAP_CAPS_SET, index);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
#if 1
|
|
|
|
/* Use a define instead of an inline function, because this is better visible in disassembly, even when not optimizing. */
|
|
|
|
/* Use a define instead of an inline function, because this is better visible in disassembly, even when not optimizing. */
|
|
|
|
#define kdebug_char(c) do { unsigned d = (c); __asm__ volatile ("move $a0, $zero\nlw $a1, %0\nbreak" :: "m"(d) : "a0", "a1", "memory"); } while (0)
|
|
|
|
#define kdebug_char(c) do { unsigned d = (c); __asm__ volatile ("move $a0, $zero\nlw $a1, %0\nbreak" :: "m"(d) : "a0", "a1", "memory"); } while (0)
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
|