From 9c226c9a9fd0424f406ded8d5e8b4a2bec2bdd0b Mon Sep 17 00:00:00 2001 From: "geding.lq" Date: Sat, 20 Jul 2019 03:17:58 +0000 Subject: [PATCH] Fix a bug in cpuid, which mistakenly use %rax where %eax is actually needed --- src/libos/src/exceptions.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libos/src/exceptions.c b/src/libos/src/exceptions.c index 3efc8564..62df2e82 100644 --- a/src/libos/src/exceptions.c +++ b/src/libos/src/exceptions.c @@ -48,8 +48,8 @@ void setup_cpuid_info() { int handle_cpuid_exception(sgx_exception_info_t *info) { uint16_t ip_opcode = *(uint16_t *)(info->cpu_context.rip); - uint64_t leaf; - uint64_t subleaf; + uint32_t leaf; + uint32_t subleaf; if (info->exception_vector != SGX_EXCEPTION_VECTOR_UD || info->exception_type != SGX_EXCEPTION_HARDWARE || @@ -57,8 +57,8 @@ int handle_cpuid_exception(sgx_exception_info_t *info) { return EXCEPTION_CONTINUE_SEARCH; } - leaf = info->cpu_context.rax; - subleaf = info->cpu_context.rcx; + leaf = (uint32_t)info->cpu_context.rax; + subleaf = (uint32_t)info->cpu_context.rcx; for (int i = 0; i < SUPPORTED_CPUID_LEAF_NUM; i++) { for (int j = 0; j < SUPPORTED_CPUID_SUBLEAF_NUM; j++) {