summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn van Groningen2007-06-27 11:57:19 +0000
committerJohn van Groningen2007-06-27 11:57:19 +0000
commited0bcfda0c539ff27a3924216111507e3f556a5d (patch)
tree26df4f245c645b8a6eab4033cfb8d62a51207aa4
parentmove code for saving and restoring registers to new functions (diff)
fix passing floating point arguments in centry for win64
-rw-r--r--cginstructions.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/cginstructions.c b/cginstructions.c
index 4a0a304..8e9e606 100644
--- a/cginstructions.c
+++ b/cginstructions.c
@@ -3828,10 +3828,9 @@ void code_ccall (char *c_function_name,char *s,int length)
break;
case 'R':
b_o-=8;
- if (c_fp_parameter_n<8){
- i_fmove_id_fr (b_o+c_offset_before_pushing_arguments,REGISTER_RBP,c_fp_parameter_n);
- ++c_fp_parameter_n;
- } else {
+ if (--c_parameter_n<4)
+ i_fmove_id_fr (b_o+c_offset_before_pushing_arguments,REGISTER_RBP,c_parameter_n);
+ else {
i_move_id_r (b_o+c_offset_before_pushing_arguments,REGISTER_RBP,REGISTER_A0);
i_move_r_pd (REGISTER_A0,B_STACK_POINTER);
c_offset+=8;