From 6a3f3a62452670380827f9e39dd28c5092741099 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Wed, 21 Feb 2018 17:45:44 +0100 Subject: Hook for MPPA_K1c (generates Risc-V code for now) --- cparser/Machine.ml | 5 +++++ cparser/Machine.mli | 1 + 2 files changed, 6 insertions(+) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index 4d1e7588..7d5a7f77 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -224,6 +224,11 @@ let rv64 = struct_passing_style = SP_ref_callee; (* Wrong *) struct_return_style = SR_ref } (* to check *) +let mppa_k1c = + { ilp32ll64 with name = "k1c"; + char_signed = true; + supports_unaligned_accesses = true } + (* Add GCC extensions re: sizeof and alignof *) let gcc_extensions c = diff --git a/cparser/Machine.mli b/cparser/Machine.mli index 53c13b52..32f9a4de 100644 --- a/cparser/Machine.mli +++ b/cparser/Machine.mli @@ -82,6 +82,7 @@ val arm_littleendian : t val arm_bigendian : t val rv32 : t val rv64 : t +val mppa_k1c : t val gcc_extensions : t -> t val compcert_interpreter : t -> t -- cgit From fd0562ffa499e57eff1243b5d9defe94a3f91d3c Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Thu, 26 Apr 2018 11:34:08 +0200 Subject: MPPA - Fixed wrong DWARF informations --- cparser/Machine.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index 7d5a7f77..bd524cf8 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -225,7 +225,8 @@ let rv64 = struct_return_style = SR_ref } (* to check *) let mppa_k1c = - { ilp32ll64 with name = "k1c"; + { ilp32ll64 with sizeof_ptr = 8; + name = "k1c"; char_signed = true; supports_unaligned_accesses = true } -- cgit From 916cdf939e6f76c2729f123c40c0a10bb63bcd60 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Wed, 30 Jan 2019 14:48:04 +0100 Subject: long types are 8 bytes now --- cparser/Machine.ml | 1 + 1 file changed, 1 insertion(+) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index 28c6f8a6..087e0308 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -239,6 +239,7 @@ let rv64 = let mppa_k1c = { ilp32ll64 with sizeof_ptr = 8; + sizeof_long = 8; name = "k1c"; char_signed = true; supports_unaligned_accesses = true } -- cgit From 2fa58b2f496c9aa8c0310c4f9f1683d106e8975d Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Thu, 19 Sep 2019 17:59:58 +0200 Subject: Fixing machine description (error in wchar signedness + trying different value for passing structs) --- cparser/Machine.ml | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index 087e0308..658cf0f4 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -238,11 +238,38 @@ let rv64 = struct_return_style = SR_ref } (* to check *) let mppa_k1c = - { ilp32ll64 with sizeof_ptr = 8; - sizeof_long = 8; - name = "k1c"; - char_signed = true; - supports_unaligned_accesses = true } + { name = "k1c"; + char_signed = true; + wchar_signed = true; + sizeof_ptr = 8; + sizeof_short = 2; + sizeof_int = 4; + sizeof_long = 8; + sizeof_longlong = 8; + sizeof_float = 4; + sizeof_double = 8; + sizeof_longdouble = 8; + sizeof_void = None; (* What is this for ? *) + sizeof_fun = None; (* What is this for ? *) + sizeof_wchar = 4; + sizeof_size_t = 8; + sizeof_ptrdiff_t = 8; + sizeof_intreg = 4; (* What is this for ? *) + alignof_ptr = 8; + alignof_short = 2; + alignof_int = 4; + alignof_long = 8; + alignof_longlong = 8; + alignof_float = 4; + alignof_double = 8; + alignof_longdouble = 8; + alignof_void = None; (* what is this for ? *) + alignof_fun = None; (* what is this for ? *) + bigendian = false; + bitfields_msb_first = false; (* TO CHECK *) + supports_unaligned_accesses = true; + struct_passing_style = SP_split_args; + struct_return_style = SR_int1248 } (* Add GCC extensions re: sizeof and alignof *) -- cgit From 1801685f8352b7a120d87d5b529d290728129529 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Fri, 20 Sep 2019 14:32:33 +0200 Subject: __builtin_bswap16, 32 and 64 --- cparser/Machine.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index 658cf0f4..ac34fa5f 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -254,7 +254,7 @@ let mppa_k1c = sizeof_wchar = 4; sizeof_size_t = 8; sizeof_ptrdiff_t = 8; - sizeof_intreg = 4; (* What is this for ? *) + sizeof_intreg = 8; (* What is this for ? *) alignof_ptr = 8; alignof_short = 2; alignof_int = 4; -- cgit From c59a26be1b4ae5c0ecf963d0ff2436dc73e72123 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Mon, 14 Oct 2019 10:50:34 +0200 Subject: Explicitly naming SP_split_args for easier grepping --- cparser/StructPassing.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cparser') diff --git a/cparser/StructPassing.ml b/cparser/StructPassing.ml index 5c6454f0..060a4848 100644 --- a/cparser/StructPassing.ml +++ b/cparser/StructPassing.ml @@ -68,7 +68,7 @@ let classify_param env ty = match !struct_passing_style with | SP_ref_callee -> Param_unchanged | SP_ref_caller -> Param_ref_caller - | _ -> + | SP_split_args -> match sizeof env ty, alignof env ty with | Some sz, Some al -> Param_flattened ((sz + 3) / 4, sz, al) -- cgit From 64a80f81297fb20c4f952d4b36cd0ae5d5da8f1e Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Mon, 14 Oct 2019 11:17:45 +0200 Subject: Tackling struct passing by value for the future K1C ABI --- cparser/Machine.ml | 5 +++-- cparser/Machine.mli | 1 + cparser/StructPassing.ml | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) (limited to 'cparser') diff --git a/cparser/Machine.ml b/cparser/Machine.ml index ac34fa5f..4999f0ac 100644 --- a/cparser/Machine.ml +++ b/cparser/Machine.ml @@ -18,6 +18,7 @@ type struct_passing_style = | SP_ref_callee (* by reference, callee takes copy *) | SP_ref_caller (* by reference, caller takes copy *) + | SP_value32_ref_callee (* by value if <= 32 bits, by ref_callee otherwise *) | SP_split_args (* by value, as a sequence of ints *) type struct_return_style = @@ -268,8 +269,8 @@ let mppa_k1c = bigendian = false; bitfields_msb_first = false; (* TO CHECK *) supports_unaligned_accesses = true; - struct_passing_style = SP_split_args; - struct_return_style = SR_int1248 } + struct_passing_style = SP_value32_ref_callee; + struct_return_style = SR_int1to4 } (* Add GCC extensions re: sizeof and alignof *) diff --git a/cparser/Machine.mli b/cparser/Machine.mli index 56d8d0b9..24d36e6c 100644 --- a/cparser/Machine.mli +++ b/cparser/Machine.mli @@ -17,6 +17,7 @@ type struct_passing_style = | SP_ref_callee (* by reference, callee takes copy *) | SP_ref_caller (* by reference, caller takes copy *) + | SP_value32_ref_callee (* by value if <= 32 bits, by ref_callee otherwise *) | SP_split_args (* by value, as a sequence of ints *) type struct_return_style = diff --git a/cparser/StructPassing.ml b/cparser/StructPassing.ml index 060a4848..7bd72808 100644 --- a/cparser/StructPassing.ml +++ b/cparser/StructPassing.ml @@ -68,6 +68,14 @@ let classify_param env ty = match !struct_passing_style with | SP_ref_callee -> Param_unchanged | SP_ref_caller -> Param_ref_caller + | SP_value32_ref_callee -> + (match sizeof env ty, alignof env ty with + | Some sz, Some al -> + if (sz <= 4) then + Param_flattened ((sz+3)/4, sz, al) (* FIXME - why (sz+3)/4 ? *) + else + Param_unchanged + | _, _ -> failwith "StructPassing.classify_param SP_split_args32_ref_callee") | SP_split_args -> match sizeof env ty, alignof env ty with | Some sz, Some al -> -- cgit From ccfd145a139c2ac6af522b2c259cbfbf60573740 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Mon, 14 Oct 2019 15:49:35 +0200 Subject: Fix for test/regression/struct2.c --- cparser/StructPassing.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cparser') diff --git a/cparser/StructPassing.ml b/cparser/StructPassing.ml index 7bd72808..3aff090e 100644 --- a/cparser/StructPassing.ml +++ b/cparser/StructPassing.ml @@ -75,7 +75,8 @@ let classify_param env ty = Param_flattened ((sz+3)/4, sz, al) (* FIXME - why (sz+3)/4 ? *) else Param_unchanged - | _, _ -> failwith "StructPassing.classify_param SP_split_args32_ref_callee") + | _, _ -> Param_unchanged (* when parsing prototype with incomplete structure definition *) + ) | SP_split_args -> match sizeof env ty, alignof env ty with | Some sz, Some al -> -- cgit