forgotten file, this should have been part of the previous commit

git-svn-id: trunk@34807 -
This commit is contained in:
Károly Balogh 2016-11-06 12:44:01 +00:00
parent c7c37f66ed
commit ce5ff8ecd5

View File

@ -2056,6 +2056,7 @@ procedure pd_syscall(pd:tabstractprocdef);
system_powerpc_amiga: system_powerpc_amiga:
include(pd.procoptions,get_default_syscall); include(pd.procoptions,get_default_syscall);
system_powerpc_morphos, system_powerpc_morphos,
system_arm_aros,
system_i386_aros, system_i386_aros,
system_x86_64_aros: system_x86_64_aros:
begin begin
@ -2077,7 +2078,7 @@ procedure pd_syscall(pd:tabstractprocdef);
function po_syscall_to_varoptions: tvaroptions; function po_syscall_to_varoptions: tvaroptions;
begin begin
result:=[vo_is_syscall_lib,vo_is_hidden_para]; result:=[vo_is_syscall_lib,vo_is_hidden_para];
if ([po_syscall_legacy,po_syscall_r12base,po_syscall_sysv,po_syscall_eaxbase] * tprocdef(pd).procoptions) <> [] then if ([po_syscall_legacy,po_syscall_basereg,po_syscall_basenone] * tprocdef(pd).procoptions) <> [] then
include(result,vo_has_explicit_paraloc); include(result,vo_has_explicit_paraloc);
end; end;
@ -2085,20 +2086,23 @@ procedure pd_syscall(pd:tabstractprocdef);
begin begin
if po_syscall_legacy in tprocdef(pd).procoptions then if po_syscall_legacy in tprocdef(pd).procoptions then
result:='A6' result:='A6'
else if po_syscall_r12base in tprocdef(pd).procoptions then { let no base on MorphOS store the libbase in r12 as well, because
result:='R12' we will need the libbase anyway during the call generation }
{ let sysv store the libbase in r12 as well, because we will else if (po_syscall_basenone in tprocdef(pd).procoptions) and
need the libbase anyway during the call generation } (target_info.system = system_powerpc_morphos) then
else if po_syscall_sysv in tprocdef(pd).procoptions then result:='R12'
result:='R12' else if po_syscall_basereg in tprocdef(pd).procoptions then
else if po_syscall_eaxbase in tprocdef(pd).procoptions then
begin begin
if target_info.system = system_i386_aros then case target_info.system of
result:='EAX' system_i386_aros:
else if target_info.system = system_x86_64_aros then result:='EAX';
result:='RAX' system_x86_64_aros:
else result:='RAX';
internalerror(2016090201); system_powerpc_morphos:
result:='R12';
else
internalerror(2016090201);
end;
end end
else else
internalerror(2016090101); internalerror(2016090101);
@ -2149,7 +2153,7 @@ begin
tcpuprocdef(pd).libsym:=sym; tcpuprocdef(pd).libsym:=sym;
vo:=po_syscall_to_varoptions; vo:=po_syscall_to_varoptions;
paranr:=syscall_paranr[po_syscall_basesysv in tprocdef(pd).procoptions]; paranr:=syscall_paranr[po_syscall_basefirst in tprocdef(pd).procoptions];
vs:=cparavarsym.create('$syscalllib',paranr,vs_value,tabstractvarsym(sym).vardef,vo); vs:=cparavarsym.create('$syscalllib',paranr,vs_value,tabstractvarsym(sym).vardef,vo);
if vo_has_explicit_paraloc in vo then if vo_has_explicit_paraloc in vo then
paramanager.parseparaloc(vs,po_syscall_to_regname); paramanager.parseparaloc(vs,po_syscall_to_regname);
@ -2165,7 +2169,7 @@ begin
if (v<low(Tprocdef(pd).extnumber)) or (v>high(Tprocdef(pd).extnumber)) then if (v<low(Tprocdef(pd).extnumber)) or (v>high(Tprocdef(pd).extnumber)) then
message3(type_e_range_check_error_bounds,tostr(v),tostr(low(Tprocdef(pd).extnumber)),tostr(high(Tprocdef(pd).extnumber))) message3(type_e_range_check_error_bounds,tostr(v),tostr(low(Tprocdef(pd).extnumber)),tostr(high(Tprocdef(pd).extnumber)))
else else
if target_info.system in [system_i386_aros,system_x86_64_aros] then if target_info.system in [system_arm_aros,system_i386_aros,system_x86_64_aros] then
Tprocdef(pd).extnumber:=v.uvalue * sizeof(pint) Tprocdef(pd).extnumber:=v.uvalue * sizeof(pint)
else else
Tprocdef(pd).extnumber:=v.uvalue; Tprocdef(pd).extnumber:=v.uvalue;