These platforms don't have a hard limit on size of resulting code16
code, so we don't care if assembly is bigger than necessarry.
--- /dev/null
+/* on x86 old clang doesn't support .code16
+ newer clang supports it but creates 6-byte jumps instead of 3-byte ones
+ which makes us go over boot sector size. */
+
+ .code16
+ jmp far
+ .org 4
+ .space 300
+far:
+ .byte 0
-/* on x86 old clang doesn't support .code16
- newer clang supports it but creates 6-byte jumps instead of 3-byte ones
- which makes us go over boot sector size. */
+/* on x86 old clang doesn't support .code16 */
.code16
- jmp far
- .org 4
- .space 300
-far:
- .byte 0
+ movb %al, %bl
AC_CACHE_CHECK([for options to compile assembly], [grub_cv_cc_target_asm_compile], [
test_program=
-case "x$target_cpu" in
- xmips | xmipsel)
+case "x$target_cpu-$platform" in
+ xmips-* | xmipsel-*)
test_program=mips
;;
- xi386 | xx86_64)
+ xi386-pc)
+ test_program=i386-pc
+ ;;
+ xi386-* | xx86_64-*)
test_program=i386
;;
- xpowerpc | xsparc64 | xarm)
+ xpowerpc-* | xsparc64-* | xarm-*)
test_program=$target_cpu
;;
esac