x86: 0.998 architecture: 0.974 assembly: 0.897 device: 0.854 i386: 0.835 graphic: 0.701 vnc: 0.674 socket: 0.609 kernel: 0.586 ppc: 0.577 performance: 0.549 debug: 0.535 peripherals: 0.533 permissions: 0.525 risc-v: 0.525 network: 0.505 boot: 0.489 semantic: 0.444 arm: 0.434 register: 0.394 PID: 0.269 files: 0.263 KVM: 0.243 VMM: 0.227 hypervisor: 0.207 TCG: 0.194 mistranslation: 0.191 virtual: 0.155 user-level: 0.143 -------------------- x86: 1.000 i386: 0.973 assembly: 0.954 debug: 0.615 semantic: 0.359 register: 0.334 performance: 0.090 TCG: 0.078 architecture: 0.053 kernel: 0.052 virtual: 0.045 files: 0.044 user-level: 0.020 hypervisor: 0.014 device: 0.011 PID: 0.010 boot: 0.009 peripherals: 0.008 network: 0.008 risc-v: 0.004 permissions: 0.003 graphic: 0.002 socket: 0.002 ppc: 0.001 VMM: 0.001 vnc: 0.001 mistranslation: 0.000 KVM: 0.000 arm: 0.000 x86 LSL and LAR fault Description of problem: From the description of LSL and LAR instructions in manual, `If the segment descriptor cannot be accessed or is an invalid type for the instruction, the ZF flag is cleared and no value is loaded in the destination operand.`. When it happens at the CPU, it seems they do nothing (nop). However, in QEMU, it crashes. Steps to reproduce: 1. Compile this code ``` void main() { asm("mov rax, 0xa02e698e741f5a6a"); asm("mov rbx, 0x20959ddd7a0aef"); asm("lsl ax, bx"); } ``` 2. Execute. QEMU crashes but CPU does not. This problem happens with LAR, too. Additional information: This bug is discovered by research conducted by KAIST SoftSec.