Spill variables
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from Jade require "crypto_scalarmult/curve25519/amd64/mulx/curve25519.jinc"
|
from Jade require "crypto_scalarmult/curve25519/amd64/mulx/scalarmult.jazz"
|
||||||
|
|
||||||
inline fn extract_ipc_id(reg u64 sync_mem) -> reg u64 {
|
inline fn extract_ipc_id(reg u64 sync_mem) -> reg u64 {
|
||||||
reg u64 id;
|
reg u64 id;
|
||||||
@@ -35,7 +35,11 @@ inline fn generate_key(reg u64 shared_mem sync_mem private_mem key_id) -> reg u6
|
|||||||
pkptr = (u64)[sync_mem + 24];
|
pkptr = (u64)[sync_mem + 24];
|
||||||
pkptr += shared_mem;
|
pkptr += shared_mem;
|
||||||
|
|
||||||
jade_scalarmult_curve25519_mulx_base(pkptr, private_mem);
|
() = #spill(key_id);
|
||||||
|
|
||||||
|
jade_scalarmult_curve25519_amd64_mulx_base(pkptr, private_mem);
|
||||||
|
|
||||||
|
() = #unspill(key_id);
|
||||||
|
|
||||||
return key_id;
|
return key_id;
|
||||||
}
|
}
|
||||||
@@ -43,22 +47,17 @@ inline fn generate_key(reg u64 shared_mem sync_mem private_mem key_id) -> reg u6
|
|||||||
export fn agent_start(reg u64 shared_mem sync_mem private_mem) {
|
export fn agent_start(reg u64 shared_mem sync_mem private_mem) {
|
||||||
stack u8[8] unused;
|
stack u8[8] unused;
|
||||||
reg u64 key_id;
|
reg u64 key_id;
|
||||||
stack u64 spill_sync_mem spill_shared_mem spill_private_mem;
|
|
||||||
|
|
||||||
key_id = 0;
|
key_id = 0;
|
||||||
|
|
||||||
spill_sync_mem = sync_mem;
|
() = #spill(shared_mem, sync_mem, private_mem);
|
||||||
spill_shared_mem = shared_mem;
|
|
||||||
spill_private_mem = private_mem;
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
unused = unused;
|
unused = unused;
|
||||||
sync_mem = spill_sync_mem;
|
() = #unspill(sync_mem);
|
||||||
unused = #read(unused, sync_mem);
|
unused = #read(unused, sync_mem);
|
||||||
|
|
||||||
sync_mem = spill_sync_mem;
|
() = #unspill(shared_mem, sync_mem, private_mem);
|
||||||
shared_mem = spill_shared_mem;
|
|
||||||
private_mem = spill_private_mem;
|
|
||||||
|
|
||||||
reg u64 id;
|
reg u64 id;
|
||||||
|
|
||||||
@@ -68,7 +67,7 @@ export fn agent_start(reg u64 shared_mem sync_mem private_mem) {
|
|||||||
key_id = generate_key(shared_mem, sync_mem, private_mem, key_id);
|
key_id = generate_key(shared_mem, sync_mem, private_mem, key_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
sync_mem = spill_sync_mem;
|
() = #unspill(sync_mem);
|
||||||
|
|
||||||
unused = #write(unused, sync_mem);
|
unused = #write(unused, sync_mem);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user