Commit 226c91327d1eebf9a70b670830c181a46c6c454b
1 parent
b8bf3e3a
fixed from 2.4.20 kernel
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@154 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
0 deletions
linux-user/vm86.c
| ... | ... | @@ -141,6 +141,11 @@ static inline void clear_TF(CPUX86State *env) |
| 141 | 141 | env->eflags &= ~TF_MASK; |
| 142 | 142 | } |
| 143 | 143 | |
| 144 | +static inline void clear_AC(CPUX86State *env) | |
| 145 | +{ | |
| 146 | + env->eflags &= ~AC_MASK; | |
| 147 | +} | |
| 148 | + | |
| 144 | 149 | static inline int set_vflags_long(unsigned long eflags, CPUX86State *env) |
| 145 | 150 | { |
| 146 | 151 | TaskState *ts = env->opaque; |
| ... | ... | @@ -149,6 +154,8 @@ static inline int set_vflags_long(unsigned long eflags, CPUX86State *env) |
| 149 | 154 | set_flags(env->eflags, eflags, SAFE_MASK); |
| 150 | 155 | if (eflags & IF_MASK) |
| 151 | 156 | return set_IF(env); |
| 157 | + else | |
| 158 | + clear_IF(env); | |
| 152 | 159 | return 0; |
| 153 | 160 | } |
| 154 | 161 | |
| ... | ... | @@ -160,6 +167,8 @@ static inline int set_vflags_short(unsigned short flags, CPUX86State *env) |
| 160 | 167 | set_flags(env->eflags, flags, SAFE_MASK); |
| 161 | 168 | if (flags & IF_MASK) |
| 162 | 169 | return set_IF(env); |
| 170 | + else | |
| 171 | + clear_IF(env); | |
| 163 | 172 | return 0; |
| 164 | 173 | } |
| 165 | 174 | |
| ... | ... | @@ -217,6 +226,7 @@ static void do_int(CPUX86State *env, int intno) |
| 217 | 226 | cpu_x86_load_seg(env, R_CS, segoffs >> 16); |
| 218 | 227 | clear_TF(env); |
| 219 | 228 | clear_IF(env); |
| 229 | + clear_AC(env); | |
| 220 | 230 | return; |
| 221 | 231 | cannot_handle: |
| 222 | 232 | #if defined(DEBUG_VM86) | ... | ... |