[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