tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [2/2 ABI and toolchain part] Support Raspberry Pi [0-3] in big-endian mode



On 2020/11/16 6:28, matthew green wrote:
nice work.  i agree with your proposed changes in general.

Thank you!

Therefore,
(1) configure GCC not to emit unaligned access for earmv6{,hf}eb.

http://www.netbsd.org/~rin/rpi_eb_gcc_20201115.patch

this part doesn't seem right:

-                         && arm_arch6 && (arm_arch_notm || arm_arch7));
+          && arm_arch6 && ((arm_arch_notm && !BYTES_BIG_ENDIAN) || arm_arch7));

i would have expected "&& !BYTES_BIG_ENDIAN" to have been
added to the "arm_arch6", not the "arm_arch_notm" section.

This is not wrong;

	arm_arch6 && ((arm_arch_notm && !BYTES_BIG_ENDIAN) || arm_arch7)

is equivalent to

	(arm_arch6 && arm_arch_notm && !BYTE_BIG_ENDIAN) || arm_arch7

This is confusing, but I prioritized the original form.

since this is really a hardware issue, and this is a bug
all GCC arm, not netbsd target, it would be nice if you
attempted merging this upstream as well :)

Unaligned access is possible for ARMv6 in BE8 big-endian mode, which
seems to be used for OSes other than NetBSD. While it is not possible
in BE32 big-endian mode for us.

Hmm, I started thinking that the fix should be restricted to NetBSD
target. But I don't know how to deal with this...

FreeBSD uses SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. But, at the moment
when SUBTARGET_OVERRIDE_INTERNAL_OPTIONS is called,
opts_set->x_unaligned_access is already modified by
arm_option_override_internal().

Any ideas? Define new macro, e.g.,
SUBTARGET_OVERRIDE_UNALIGNED_ACCESS_OPTIONS in netbsd-eabi.h?

Thanks,
rin


Home | Main Index | Thread Index | Old Index