Don't overwrite the masked flags in IRET.
svn path=/trunk/; revision=67533
State->Cpl = GET_SEGMENT_RPL(CodeSel);
/* Set the new flags */
- if (Size) State->Flags.Long = NewFlags.Long & PROT_MODE_FLAGS_MASK;
- else State->Flags.LowWord = NewFlags.LowWord & PROT_MODE_FLAGS_MASK;
+ if (Size)
+ {
+ State->Flags.Long = (State->Flags.Long & ~PROT_MODE_FLAGS_MASK)
+ | (NewFlags.Long & PROT_MODE_FLAGS_MASK);
+ }
+ else
+ {
+ State->Flags.LowWord = (State->Flags.LowWord & ~PROT_MODE_FLAGS_MASK)
+ | (NewFlags.LowWord & PROT_MODE_FLAGS_MASK);
+ }
State->Flags.AlwaysSet = TRUE;
/* Set additional flags */