* [PATCH 1/8] riscv64: Support riscv_align relocations
@ 2024-09-11 9:41 Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 2/8] compiler-rt: Add __multi3 Vladimir Serbinenko
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
They are purely for optimization, so no need to do anything.
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
grub-core/kern/riscv/dl.c | 1 +
util/grub-mkimagexx.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/grub-core/kern/riscv/dl.c b/grub-core/kern/riscv/dl.c
index 896653bb4..c47db6959 100644
--- a/grub-core/kern/riscv/dl.c
+++ b/grub-core/kern/riscv/dl.c
@@ -329,6 +329,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
break;
case R_RISCV_RELAX:
+ case R_RISCV_ALIGN:
break;
default:
{
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
index e50b29533..f9158edda 100644
--- a/util/grub-mkimagexx.c
+++ b/util/grub-mkimagexx.c
@@ -1477,6 +1477,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
}
break;
case R_RISCV_RELAX:
+ case R_RISCV_ALIGN:
break;
default:
grub_util_error (_("relocation 0x%x is not implemented yet"),
@@ -1891,6 +1892,7 @@ translate_relocation_pe (struct translate_context *ctx,
}
break;
case R_RISCV_RELAX:
+ case R_RISCV_ALIGN:
break;
default:
grub_util_error (_("relocation 0x%x is not implemented yet"),
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/8] compiler-rt: Add __multi3
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 3/8] Support clang integrated-as sparc64 Vladimir Serbinenko
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
It's necessary for clang sparc64 support
---
grub-core/kern/compiler-rt.c | 58 ++++++++++++++++++++++++++++++++++++
include/grub/compiler-rt.h | 7 +++++
2 files changed, 65 insertions(+)
diff --git a/grub-core/kern/compiler-rt.c b/grub-core/kern/compiler-rt.c
index eda689a0c..2902ed03d 100644
--- a/grub-core/kern/compiler-rt.c
+++ b/grub-core/kern/compiler-rt.c
@@ -452,3 +452,61 @@ __clzdi2 (grub_uint64_t val)
}
}
#endif
+
+#if defined(__sparc__) && defined(__clang__)
+/* Copied from multi3.c which is under MIT license. */
+typedef long long di_int;
+typedef unsigned long long du_int;
+
+typedef union
+{
+ grub_clang_ti_int all;
+ struct
+ {
+#ifndef GRUB_CPU_WORDS_BIGENDIAN
+ du_int low;
+ di_int high;
+#else
+ di_int high;
+ du_int low;
+#endif /* _YUGA_LITTLE_ENDIAN */
+ }s;
+} twords;
+
+static
+grub_clang_ti_int
+__mulddi3(du_int a, du_int b)
+{
+ twords r;
+ const int bits_in_dword_2 = (int)(sizeof(di_int) * 8) / 2;
+ const du_int lower_mask = (du_int)~0 >> bits_in_dword_2;
+ r.s.low = (a & lower_mask) * (b & lower_mask);
+ du_int t = r.s.low >> bits_in_dword_2;
+ r.s.low &= lower_mask;
+ t += (a >> bits_in_dword_2) * (b & lower_mask);
+ r.s.low += (t & lower_mask) << bits_in_dword_2;
+ r.s.high = t >> bits_in_dword_2;
+ t = r.s.low >> bits_in_dword_2;
+ r.s.low &= lower_mask;
+ t += (b >> bits_in_dword_2) * (a & lower_mask);
+ r.s.low += (t & lower_mask) << bits_in_dword_2;
+ r.s.high += t >> bits_in_dword_2;
+ r.s.high += (a >> bits_in_dword_2) * (b >> bits_in_dword_2);
+ return r.all;
+}
+
+/* Returns: a * b */
+
+grub_clang_ti_int
+__multi3(grub_clang_ti_int a, grub_clang_ti_int b)
+{
+ twords x;
+ x.all = a;
+ twords y;
+ y.all = b;
+ twords r;
+ r.all = __mulddi3(x.s.low, y.s.low);
+ r.s.high += x.s.high * y.s.low + x.s.low * y.s.high;
+ return r.all;
+}
+#endif
diff --git a/include/grub/compiler-rt.h b/include/grub/compiler-rt.h
index 17828b322..3637db47e 100644
--- a/include/grub/compiler-rt.h
+++ b/include/grub/compiler-rt.h
@@ -209,5 +209,12 @@ void EXPORT_FUNC (___chkstk_ms) (void);
void EXPORT_FUNC (__chkstk_ms) (void);
#endif
+#if defined(__sparc__) && defined(__clang__)
+/* Copied from multi3.c which is under MIT license. */
+typedef int grub_clang_ti_int __attribute__ ((mode (TI)));
+
+grub_clang_ti_int EXPORT_FUNC(__multi3) (grub_clang_ti_int a, grub_clang_ti_int b);
+#endif
+
#endif
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/8] Support clang integrated-as sparc64
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 2/8] compiler-rt: Add __multi3 Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 4/8] powerpc-ieee1275: Fix warnings and alignment Vladimir Serbinenko
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
---
asm-tests/sparc64.S | 2 +-
grub-core/boot/sparc64/ieee1275/boot.S | 3 +++
grub-core/boot/sparc64/ieee1275/diskboot.S | 3 +++
grub-core/kern/sparc64/ieee1275/crt0.S | 2 +-
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/asm-tests/sparc64.S b/asm-tests/sparc64.S
index 03c5fe02a..56bd9cda8 100644
--- a/asm-tests/sparc64.S
+++ b/asm-tests/sparc64.S
@@ -3,7 +3,7 @@
/* A small list of examples of what clang doesn't support. */
clr %o0
lduw [%o4 + 4], %o4
- and %o6, ~0xff, %o6
+ and %o6, 0xffffffffffffff00, %o6
stw %o5, [%o3]
bne,pt %icc, 1b
nop
diff --git a/grub-core/boot/sparc64/ieee1275/boot.S b/grub-core/boot/sparc64/ieee1275/boot.S
index ff8a79d3b..9a67bc609 100644
--- a/grub-core/boot/sparc64/ieee1275/boot.S
+++ b/grub-core/boot/sparc64/ieee1275/boot.S
@@ -93,7 +93,10 @@ prom_exit_name: .asciz "exit"
grub_name: .asciz "GRUB "
#ifdef CDBOOT
prom_close_name: .asciz "close"
+ .byte 0
+ .byte 0
#endif
+ .byte 0
#define GRUB_NAME_LEN 5
diff --git a/grub-core/boot/sparc64/ieee1275/diskboot.S b/grub-core/boot/sparc64/ieee1275/diskboot.S
index 35e02c1b6..0c8deb11f 100644
--- a/grub-core/boot/sparc64/ieee1275/diskboot.S
+++ b/grub-core/boot/sparc64/ieee1275/diskboot.S
@@ -43,6 +43,9 @@ notification_step: .asciz "."
notification_done: .asciz "\r\n"
#define NOTIFICATION_DONE_LEN 2
+ .byte 0
+ .byte 0
+
.align 4
/* %o2: message string
diff --git a/grub-core/kern/sparc64/ieee1275/crt0.S b/grub-core/kern/sparc64/ieee1275/crt0.S
index 03b916f05..92bac2142 100644
--- a/grub-core/kern/sparc64/ieee1275/crt0.S
+++ b/grub-core/kern/sparc64/ieee1275/crt0.S
@@ -56,7 +56,7 @@ codestart:
sethi %hi(GRUB_KERNEL_MACHINE_STACK_SIZE), %o5
or %o5, %lo(GRUB_KERNEL_MACHINE_STACK_SIZE), %o5
add %o3, %o5, %o6
- and %o6, ~0xff, %o6
+ and %o6, 0xffffffffffffff00, %o6
sub %o6, 2047, %o6
sub %o2, 4, %o2
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/8] powerpc-ieee1275: Fix warnings and alignment
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 2/8] compiler-rt: Add __multi3 Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 3/8] Support clang integrated-as sparc64 Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 5/8] efi/linux: Silence warning Vladimir Serbinenko
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
grub-core/kern/ieee1275/init.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
index dfbd0b899..e3abd51a8 100644
--- a/grub-core/kern/ieee1275/init.c
+++ b/grub-core/kern/ieee1275/init.c
@@ -789,7 +789,10 @@ grub_ieee1275_ibm_cas (void)
{
int rc;
grub_ieee1275_ihandle_t root;
- grub_uint8_t ibm_arch_platform_support[8];
+ union {
+ grub_uint8_t u8[8];
+ grub_uint32_t u32[2];
+ } ibm_arch_platform_support;
grub_ssize_t actual;
grub_uint8_t xive_support = 0;
grub_uint8_t mmu_support = 0;
@@ -807,23 +810,23 @@ grub_ieee1275_ibm_cas (void)
grub_ieee1275_get_integer_property (grub_ieee1275_chosen,
"ibm,arch-vec-5-platform-support",
- (grub_uint32_t *) ibm_arch_platform_support,
+ ibm_arch_platform_support.u32,
sizeof (ibm_arch_platform_support),
&actual);
- for (i = 0; i < prop_len; i++)
+ for (i = 0; i < prop_len; i += 2)
{
- switch (ibm_arch_platform_support[i])
+ switch (ibm_arch_platform_support.u8[i])
{
case XIVE_INDEX:
- if (ibm_arch_platform_support[i + 1] & MAX_SUPPORTED)
+ if (ibm_arch_platform_support.u8[i + 1] & MAX_SUPPORTED)
xive_support = XIVE_ENABLED;
else
xive_support = 0;
break;
case MMU_INDEX:
- if (ibm_arch_platform_support[i + 1] & MAX_SUPPORTED)
+ if (ibm_arch_platform_support.u8[i + 1] & MAX_SUPPORTED)
mmu_support = RADIX_ENABLED;
else
mmu_support = HASH_ENABLED;
@@ -831,7 +834,7 @@ grub_ieee1275_ibm_cas (void)
case RADIX_GTSE_INDEX:
if (mmu_support == RADIX_ENABLED)
- radix_gtse_support = ibm_arch_platform_support[i + 1] & RADIX_GTSE_ENABLED;
+ radix_gtse_support = ibm_arch_platform_support.u8[i + 1] & RADIX_GTSE_ENABLED;
else
radix_gtse_support = 0;
break;
@@ -840,8 +843,6 @@ grub_ieee1275_ibm_cas (void)
/* Ignoring the other indexes of ibm,arch-vec-5-platform-support. */
break;
}
- /* Skipping the property value. */
- i++;
}
struct cas_vector vector =
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/8] efi/linux: Silence warning
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
` (2 preceding siblings ...)
2024-09-11 9:41 ` [PATCH 4/8] powerpc-ieee1275: Fix warnings and alignment Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 6/8] btrfs: Add an explicit GRUB_PACKED Vladimir Serbinenko
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
---
grub-core/loader/efi/linux.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/grub-core/loader/efi/linux.c b/grub-core/loader/efi/linux.c
index bfbd95aee..bcb39c40a 100644
--- a/grub-core/loader/efi/linux.c
+++ b/grub-core/loader/efi/linux.c
@@ -55,6 +55,7 @@ static bool initrd_use_loadfile2 = false;
static grub_guid_t load_file2_guid = GRUB_EFI_LOAD_FILE2_PROTOCOL_GUID;
static grub_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID;
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
static initrd_media_device_path_t initrd_lf2_device_path = {
{
{
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 6/8] btrfs: Add an explicit GRUB_PACKED
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
` (3 preceding siblings ...)
2024-09-11 9:41 ` [PATCH 5/8] efi/linux: Silence warning Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 7/8] Enable __clzsi2/__clzdi2 on arm Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 8/8] configure: Try -msoft-float -mfloat-abi=soft " Vladimir Serbinenko
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
Otherwise clang on arm complains
---
grub-core/fs/btrfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
index ba0c58352..0b06bc824 100644
--- a/grub-core/fs/btrfs.c
+++ b/grub-core/fs/btrfs.c
@@ -222,7 +222,7 @@ struct grub_btrfs_extent_data
grub_uint64_t compressed_size;
grub_uint64_t offset;
grub_uint64_t filled;
- };
+ } GRUB_PACKED;
};
} GRUB_PACKED;
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 7/8] Enable __clzsi2/__clzdi2 on arm
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
` (4 preceding siblings ...)
2024-09-11 9:41 ` [PATCH 6/8] btrfs: Add an explicit GRUB_PACKED Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 8/8] configure: Try -msoft-float -mfloat-abi=soft " Vladimir Serbinenko
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
It's emitted by clang
---
grub-core/kern/compiler-rt.c | 4 +---
include/grub/compiler-rt.h | 5 +----
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/grub-core/kern/compiler-rt.c b/grub-core/kern/compiler-rt.c
index 2902ed03d..17ae435c1 100644
--- a/grub-core/kern/compiler-rt.c
+++ b/grub-core/kern/compiler-rt.c
@@ -410,7 +410,7 @@ __aeabi_llsl (grub_uint64_t u, int b)
#endif
-#if defined(__mips__) || defined(__riscv) || defined(__sparc__)
+#if defined(__mips__) || defined(__riscv) || defined(__sparc__) || defined(__arm__)
/* Based on libgcc from gcc suite. */
int
__clzsi2 (grub_uint32_t val)
@@ -436,9 +436,7 @@ __clzsi2 (grub_uint32_t val)
}
return (i - val);
}
-#endif
-#if defined(__mips__) || defined(__riscv) || defined(__sparc__)
int
__clzdi2 (grub_uint64_t val)
{
diff --git a/include/grub/compiler-rt.h b/include/grub/compiler-rt.h
index 3637db47e..26016088e 100644
--- a/include/grub/compiler-rt.h
+++ b/include/grub/compiler-rt.h
@@ -110,12 +110,9 @@ EXPORT_FUNC (__aeabi_llsr) (grub_uint64_t u, int b);
#endif
-#if defined(__mips__) || defined(__riscv) || defined(__sparc__)
+#if defined(__mips__) || defined(__riscv) || defined(__sparc__) || defined(__arm__)
int
EXPORT_FUNC (__clzsi2) (grub_uint32_t val);
-#endif
-
-#if defined(__mips__) || defined(__riscv) || defined(__sparc__)
int
EXPORT_FUNC (__clzdi2) (grub_uint64_t val);
#endif
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 8/8] configure: Try -msoft-float -mfloat-abi=soft on arm
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
` (5 preceding siblings ...)
2024-09-11 9:41 ` [PATCH 7/8] Enable __clzsi2/__clzdi2 on arm Vladimir Serbinenko
@ 2024-09-11 9:41 ` Vladimir Serbinenko
6 siblings, 0 replies; 8+ messages in thread
From: Vladimir Serbinenko @ 2024-09-11 9:41 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
configure.ac | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configure.ac b/configure.ac
index d4a14bf93..2bca8814b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -941,6 +941,11 @@ if test x"$platform" != xemu ; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
[grub_cv_target_cc_soft_float="-m4-nofpu"], [])
fi
+ if test "x$target_cpu" = xarm; then
+ CFLAGS="$TARGET_CFLAGS -msoft-float -mfloat-abi=soft -Werror"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [grub_cv_target_cc_soft_float="-msoft-float -mfloat-abi=soft"], [])
+ fi
for cand in "-msoft-float -Xclang -msoft-float -Xclang -no-implicit-float" \
"-Xclang -msoft-float -Xclang -no-implicit-float" \
"-Xclang -msoft-float" "-msoft-float"; do
--
2.39.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-09-11 9:42 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-11 9:41 [PATCH 1/8] riscv64: Support riscv_align relocations Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 2/8] compiler-rt: Add __multi3 Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 3/8] Support clang integrated-as sparc64 Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 4/8] powerpc-ieee1275: Fix warnings and alignment Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 5/8] efi/linux: Silence warning Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 6/8] btrfs: Add an explicit GRUB_PACKED Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 7/8] Enable __clzsi2/__clzdi2 on arm Vladimir Serbinenko
2024-09-11 9:41 ` [PATCH 8/8] configure: Try -msoft-float -mfloat-abi=soft " Vladimir Serbinenko
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.