diff --git a/asm-tests/i386-pc.S b/asm-tests/i386-pc.S new file mode 100644 index 000000000..97cd32ae8 --- /dev/null +++ b/asm-tests/i386-pc.S @@ -0,0 +1,10 @@ +/* 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 diff --git a/asm-tests/i386.S b/asm-tests/i386.S index 97cd32ae8..30adc4fe2 100644 --- a/asm-tests/i386.S +++ b/asm-tests/i386.S @@ -1,10 +1,4 @@ -/* 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 diff --git a/configure.ac b/configure.ac index 8ddb5d3cc..8b94d346e 100644 --- a/configure.ac +++ b/configure.ac @@ -562,14 +562,17 @@ AC_COMPILE_IFELSE( 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