[Vm-dev] [commit][3442] Get the BochsX64Plugin'
s processor into 64-bit mode in resetCPU
commits at squeakvm.org
commits at squeakvm.org
Mon Sep 21 17:49:53 UTC 2015
Revision: 3442
Author: eliot
Date: 2015-09-21 10:49:53 -0700 (Mon, 21 Sep 2015)
Log Message:
-----------
Get the BochsX64Plugin's processor into 64-bit mode in resetCPU
Modified Paths:
--------------
trunk/platforms/Cross/plugins/BochsX64Plugin/BochsX64Plugin.h
trunk/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp
Property Changed:
----------------
trunk/platforms/Cross/plugins/sqPluginsSCCSVersion.h
Modified: trunk/platforms/Cross/plugins/BochsX64Plugin/BochsX64Plugin.h
===================================================================
--- trunk/platforms/Cross/plugins/BochsX64Plugin/BochsX64Plugin.h 2015-09-21 17:48:54 UTC (rev 3441)
+++ trunk/platforms/Cross/plugins/BochsX64Plugin/BochsX64Plugin.h 2015-09-21 17:49:53 UTC (rev 3442)
@@ -8,6 +8,7 @@
#define PanicError 4
#define UnsupportedOperationError 5
#define SomethingLoggedError 6
+#define InitializationError 7
#if !defined(ulong)
typedef unsigned long ulong;
Modified: trunk/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp
===================================================================
--- trunk/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp 2015-09-21 17:48:54 UTC (rev 3441)
+++ trunk/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp 2015-09-21 17:49:53 UTC (rev 3442)
@@ -61,7 +61,6 @@
blidx = 0;
#define RESET_FROM_COG BX_RESET_HARDWARE + 1
bx_cpu.reset(RESET_FROM_COG);
- bx_cpu.SetCR0(0x80000001); // Enter protected mode
// Origin the code, data & stack segments at 0
bx_cpu.parse_selector(0x0000,&bx_cpu.sregs[BX_SEG_REG_CS].selector);
bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.base = 0;
@@ -99,7 +98,11 @@
bx_cpu.gen_reg[BX_64BIT_REG_R14].dword.erx = 0;
bx_cpu.gen_reg[BX_64BIT_REG_R15].dword.erx = 0;
bx_cpu.gen_reg[BX_64BIT_REG_RIP].dword.erx = 0;
- return 0;
+ bx_cpu.efer.set_LMA(1); /* Hack. The old version we use have doesn't support set_EFER */
+ bx_cpu.SetCR0(0x80000101); // Enter protected mode
+ return bx_cpu.cpu_mode == BX_MODE_LONG_64
+ ? 0
+ : InitializationError;
}
int
Property changes on: trunk/platforms/Cross/plugins/sqPluginsSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Thu Sep 17 17:27:20 PDT 2015
+ Mon Sep 21 10:49:22 PDT 2015
More information about the Vm-dev
mailing list