947 |
EDX = val >> 32; |
EDX = val >> 32; |
948 |
} |
} |
949 |
|
|
950 |
|
void helper_wrmsr(void) |
951 |
|
{ |
952 |
|
switch(ECX) { |
953 |
|
case MSR_IA32_SYSENTER_CS: |
954 |
|
env->sysenter_cs = EAX & 0xffff; |
955 |
|
break; |
956 |
|
case MSR_IA32_SYSENTER_ESP: |
957 |
|
env->sysenter_esp = EAX; |
958 |
|
break; |
959 |
|
case MSR_IA32_SYSENTER_EIP: |
960 |
|
env->sysenter_eip = EAX; |
961 |
|
break; |
962 |
|
default: |
963 |
|
/* XXX: exception ? */ |
964 |
|
break; |
965 |
|
} |
966 |
|
} |
967 |
|
|
968 |
|
void helper_rdmsr(void) |
969 |
|
{ |
970 |
|
switch(ECX) { |
971 |
|
case MSR_IA32_SYSENTER_CS: |
972 |
|
EAX = env->sysenter_cs; |
973 |
|
EDX = 0; |
974 |
|
break; |
975 |
|
case MSR_IA32_SYSENTER_ESP: |
976 |
|
EAX = env->sysenter_esp; |
977 |
|
EDX = 0; |
978 |
|
break; |
979 |
|
case MSR_IA32_SYSENTER_EIP: |
980 |
|
EAX = env->sysenter_eip; |
981 |
|
EDX = 0; |
982 |
|
break; |
983 |
|
default: |
984 |
|
/* XXX: exception ? */ |
985 |
|
break; |
986 |
|
} |
987 |
|
} |
988 |
|
|
989 |
void helper_lsl(void) |
void helper_lsl(void) |
990 |
{ |
{ |
991 |
unsigned int selector, limit; |
unsigned int selector, limit; |