[Vm-dev] VM Maker: Cog-eem.366.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Nov 20 20:02:58 UTC 2019
Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.366.mcz
==================== Summary ====================
Name: Cog-eem.366
Author: eem
Time: 20 November 2019, 12:02:56.315619 pm
UUID: 0fba899e-be71-42c3-a2f3-0b81930bdcad
Ancestors: Cog-eem.365
Move error codes up to the abstract superclass in the CogProcessorAlien hierarchy.
=============== Diff against Cog-eem.365 ===============
Item was changed:
CogProcessorAlien variableByteSubclass: #BochsIA32Alien
instanceVariableNames: ''
+ classVariableNames: 'ExtendedOpcodeExceptionMap OpcodeExceptionMap'
- classVariableNames: 'ExtendedOpcodeExceptionMap OpcodeExceptionMap PostBuildStackDelta'
poolDictionaries: ''
category: 'Cog-Processors'!
!BochsIA32Alien commentStamp: '<historical>' prior: 0!
I am a wrapper around the Bochs C++ IA32 CPU emulator. Note that currently I provide no access to the x87/mmx FPU state, only providing access to the SSE/xmm registers.
Here is the configure script for the configuration this code assumes. Offsets of fields will change with different configurations so they must agree.
----8<---- conf.COG ----8<----
#!!/bin/sh
# this sets up the compile for Cog. Disable as much inessential stuff
# as possible leaving only the cpu/fpu & memory interface
set echo
# CFLAGS="-pipe -O3 -fomit-frame-pointer -finline-functions -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-labels=16 -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -fprefetch-loop-arrays $CFLAGS"
CFLAGS="-m32 $CFLAGS"
CFLAGS="-Dlongjmp=_longjmp -Dsetjmp=_setjmp $CFLAGS"
CFLAGS="-pipe -O3 -fomit-frame-pointer -finline-functions $CFLAGS"
CFLAGS="-g $CFLAGS"
CPATH="/sw/include"
CPPFLAGS=""
CXXFLAGS="$CFLAGS"
LDFLAGS="-L/sw/lib"
export CFLAGS
export CPATH
export CPPFLAGS
export CXXFLAGS
export LDFLAGS
./configure --enable-Cog \
--enable-cpu-level=6 \
--enable-sse=2 \
--enable-assert-checks \
--with-nogui \
--disable-x86-64 \
--disable-pae \
--disable-large-pages \
--disable-global-pages \
--disable-mtrr \
--disable-sb16 \
--disable-ne2000 \
--disable-pci \
--disable-acpi \
--disable-apic \
--disable-clgd54xx \
--disable-usb \
--disable-plugins \
${CONFIGURE_ARGS}
# apic == Advanced programmable Interrupt Controller
# acpi == Advanced Configuration and Power Interface
# pci == Peripheral Component Interconnect local bus
# clgd54xx == Cirrus Logic GD54xx video card
----8<---- conf.COG ----8<----!
Item was changed:
CogProcessorAlien variableByteSubclass: #BochsX64Alien
instanceVariableNames: ''
+ classVariableNames: 'ExtendedOpcodeExceptionMap OpcodeExceptionMap'
- classVariableNames: 'ExtendedOpcodeExceptionMap OpcodeExceptionMap PostBuildStackDelta'
poolDictionaries: ''
category: 'Cog-Processors'!
!BochsX64Alien commentStamp: 'eem 12/5/2017 14:27' prior: 0!
I am a wrapper around the Bochs C++ x86_64 CPU emulator.!
Item was changed:
Alien variableByteSubclass: #CogProcessorAlien
instanceVariableNames: ''
+ classVariableNames: 'BadCPUInstance ExecutionError InstructionPrefetchError MemoryBoundsError NoError PanicError PostBuildStackDelta PrintCodeBytes PrintTempNames ReceiverResultRegDereference SavedState SomethingLoggedError UnsupportedOperationError'
- classVariableNames: 'PrintCodeBytes PrintTempNames ReceiverResultRegDereference SavedState'
poolDictionaries: ''
category: 'Cog-Processors'!
!CogProcessorAlien commentStamp: 'lw 8/23/2012 19:15' prior: 0!
I am the superclass for the Simulation CPU instance wrappers. I ensure that methods used in both/all of them need not be copied.!
Item was changed:
----- Method: CogProcessorAlien class>>initialize (in category 'class initialization') -----
initialize
PrintCodeBytes ifNil: [PrintCodeBytes := true]. "Does disassembly include code bytes?"
PrintTempNames ifNil: [PrintTempNames := false]. "Does disassembly include temp names?"
SavedState := WeakIdentityKeyDictionary new.
Smalltalk
addToStartUpList: self;
+ addToShutDownList: self.
+
+ PostBuildStackDelta := 0.
+
+ "Plugin primitive error codes."
+ NoError := 0.
+ ExecutionError := 1.
+ BadCPUInstance := 2.
+ MemoryBoundsError := 3.
+ PanicError := 4.
+ UnsupportedOperationError := 5.
+ SomethingLoggedError := 6.
+ InstructionPrefetchError := 7!
- addToShutDownList: self!
Item was changed:
CogProcessorAlien variableByteSubclass: #GdbARMAlien
instanceVariableNames: ''
+ classVariableNames: 'LongConstReg LongConstStep LongConstValue'
- classVariableNames: 'BadCPUInstance ExecutionError InstructionPrefetchError LongConstReg LongConstStep LongConstValue MemoryLoadBoundsError MemoryWriteBoundsError NoError PanicError PostBuildStackDelta SomethingLoggedError UnsupportedOperationError'
poolDictionaries: ''
category: 'Cog-Processors'!
!GdbARMAlien commentStamp: 'eem 12/15/2018 14:31' prior: 0!
I am a wrapper around the ARMulator CPU instance and emulator routines and I give access to disassembling using libopcodes. My C-part must be compiled with -DMODET, because otherwise my offsets are wrong by one field.!
Item was removed:
- ----- Method: GdbARMAlien class>>initialize (in category 'class initialization') -----
- initialize
- "GdbARMAlien initialize"
-
- PostBuildStackDelta := 0.
-
- "Return errors from GdbARMPlugin.h"
- NoError := 0.
- ExecutionError := 1.
- BadCPUInstance := 2.
- MemoryLoadBoundsError := 3.
- MemoryWriteBoundsError := 4.
- InstructionPrefetchError := 5.
- PanicError := 6.
- UnsupportedOperationError := 7.
- SomethingLoggedError := 8!
Item was changed:
CogProcessorAlien variableByteSubclass: #GdbARMv8Alien
instanceVariableNames: ''
+ classVariableNames: ''
- classVariableNames: 'BadCPUInstance ExecutionError InstructionPrefetchError MemorBoundsError NoError PanicError SomethingLoggedError UnsupportedOperationError'
poolDictionaries: ''
category: 'Cog-Processors'!
!GdbARMv8Alien commentStamp: 'eem 11/19/2019 15:39' prior: 0!
I am a wrapper around the struct sim aarch64 CPU instance and emulator routines and I give access to disassembling using libopcodes.!
Item was removed:
- ----- Method: GdbARMv8Alien class>>initialize (in category 'class initialization') -----
- initialize
- "GdbARMv8Alien initialize"
-
- "Return errors from GdbARMv8Plugin.h"
- NoError := 0.
- ExecutionError := 1.
- BadCPUInstance := 2.
- MemorBoundsError := 3.
- "MemoryWriteBoundsError := 4."
- InstructionPrefetchError := 5.
- PanicError := 6.
- UnsupportedOperationError := 7.
- SomethingLoggedError := 8!
More information about the Vm-dev
mailing list