From 0257b4a572fae0d7275b06932854f1d52479420b Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sat, 12 Apr 2008 09:03:34 -0400 Subject: [PATCH] Fix asm dependencies on segment based writes. The variable was marked as an input instead of an output. This could cause gcc bugs - it also forced the asm to be volatile. --- src/farptr.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/farptr.h b/src/farptr.h index 6a37460..56219d2 100644 --- a/src/farptr.h +++ b/src/farptr.h @@ -29,14 +29,14 @@ extern u16 __segment_ES, __segment_CS, __segment_DS, __segment_SS; : "m"(var), "m"(__segment_ ## SEG)); \ __value; }) #define WRITE8_SEG(SEG, var, value) \ - __asm__("movb %b0, %%" #SEG ":%1" : \ - : "Q"(value), "m"(var), "m"(__segment_ ## SEG)) + __asm__("movb %b1, %%" #SEG ":%0" : "=m"(var) \ + : "Q"(value), "m"(__segment_ ## SEG)) #define WRITE16_SEG(SEG, var, value) \ - __asm__("movw %w0, %%" #SEG ":%1" : \ - : "r"(value), "m"(var), "m"(__segment_ ## SEG)) + __asm__("movw %w1, %%" #SEG ":%0" : "=m"(var) \ + : "r"(value), "m"(__segment_ ## SEG)) #define WRITE32_SEG(SEG, var, value) \ - __asm__("movl %0, %%" #SEG ":%1" : \ - : "r"(value), "m"(var), "m"(__segment_ ## SEG)) + __asm__("movl %1, %%" #SEG ":%0" : "=m"(var) \ + : "r"(value), "m"(__segment_ ## SEG)) // Low level macros for getting/setting a segment register. #define __SET_SEG(SEG, value) \ -- 2.25.1