68 |
val mem = T.Region.memory |
val mem = T.Region.memory |
69 |
val stack = T.Region.memory |
val stack = T.Region.memory |
70 |
|
|
71 |
|
val paramAreaOffset = 68 |
72 |
|
|
73 |
fun LI i = T.LI (T.I.fromInt (32, i)) |
fun LI i = T.LI (T.I.fromInt (32, i)) |
74 |
|
|
75 |
val GP = C.GPReg |
val GP = C.GPReg |
95 |
| _ => T.ADD (32, x, T.LI d') |
| _ => T.ADD (32, x, T.LI d') |
96 |
end |
end |
97 |
|
|
98 |
fun argaddr n = addli (spreg, 68+4*n) |
fun argaddr n = addli (spreg, paramAreaOffset + 4*n) |
99 |
|
|
100 |
(* temp location for transfers through memory *) |
(* temp location for transfers through memory *) |
101 |
val tmpaddr = argaddr 1 |
val tmpaddr = argaddr 1 |
136 |
pack (0, 1, l) |
pack (0, 1, l) |
137 |
end |
end |
138 |
|
|
139 |
fun genCall { name, proto, structRet, saveRestoreDedicated, |
fun genCall { name, proto, paramAlloc, structRet, saveRestoreDedicated, |
140 |
callComment, args } = let |
callComment, args } = let |
141 |
val { conv, retTy, paramTys } = proto |
val { conv, retTy, paramTys } = proto |
142 |
val _ = case conv of |
val _ = case conv of |