[Vm-dev] VM Maker: Cog-eem.255.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Mar 28 20:30:29 UTC 2015


Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.255.mcz

==================== Summary ====================

Name: Cog-eem.255
Author: eem
Time: 28 March 2015, 1:30:14.558 pm
UUID: 87ca5f19-8aeb-4c97-b111-3d67ea88e11a
Ancestors: Cog-eem.254

Include the offset in the relevant addressing modes
in load and store exceptions in the ARM alien.

=============== Diff against Cog-eem.254 ===============

Item was changed:
  ----- Method: GdbARMAlien>>handleFailingLoadStore:at: (in category 'error handling') -----
  handleFailingLoadStore: instr at: pc
+ 	| baseReg destReg srcReg offset |
- 	| baseReg destReg srcReg |
  	baseReg := self registerStateGetters at: (instr >> 16 bitAnd: 15)+ 1.
  	destReg := self registerStateSetters at: (instr >> 12 bitAnd: 15) + 1.
  	srcReg := self registerStateGetters at: (instr >> 12 bitAnd: 15) + 1.
+ 	"See e.g. A5.2.2/A5-20 ARM ARM v6"
+ 	offset := (instr >> 21 bitAnd: 2r1111001) = 2r0101000
+ 				ifTrue:
+ 					[(instr >> 23 anyMask: 1) "U bit"
+ 						ifTrue: [instr bitAnd: 16rFFF]
+ 						ifFalse: [(instr bitAnd: 16rFFF) negated]]
+ 				ifFalse:
+ 					[0].
  	(self instructionIsLDR: instr) ifTrue:
  		[^(ProcessorSimulationTrap
  				pc: pc
  				nextpc: pc + 4 
+ 				address: (self perform: baseReg) + offset
- 				address: (self perform: baseReg)
  				type: #read
  				accessor: destReg)
  			signal].
  	(self instructionIsSTR: instr) ifTrue:
  		[^(ProcessorSimulationTrap
  				pc: pc
  				nextpc: pc + 4 
+ 				address: (self perform: baseReg) + offset
- 				address: (self perform: baseReg)
  				type: #write
  				accessor: srcReg)
  			signal].
  	"Lars handled byte read/write failures.  i don't think we need to"
  	"(self instructionIsLDRB: instr) ifTrue:
  		[??].
  	(self instructionIsSTRB: instr) ifTrue:
  		[??]."
  	self error: 'handleFailingLoadStore:at: invoked for non-load/store?'!



More information about the Vm-dev mailing list