Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.319.mcz
==================== Summary ====================
Name: Cog-eem.319 Author: eem Time: 10 May 2016, 11:53:43.273329 am UUID: 763f34da-8118-4645-9095-8decbcd3605a Ancestors: Cog-eem.318
Add VPF register state accessors to the GdbARMAlien; advance after a multiply, and fix printing.
=============== Diff against Cog-eem.318 ===============
Item was changed: ----- Method: GdbARMAlien class>>dataSize (in category 'instance creation') ----- dataSize + ^1788! - - ^1536!
Item was added: + ----- Method: GdbARMAlien>>d0 (in category 'accessing') ----- + d0 + ^self unsignedLongLongAt: 1529!
Item was added: + ----- Method: GdbARMAlien>>d0: (in category 'accessing') ----- + d0: anUnsignedInteger + ^self unsignedLongLongAt: 1529 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d1 (in category 'accessing') ----- + d1 + ^self unsignedLongLongAt: 1537!
Item was added: + ----- Method: GdbARMAlien>>d10 (in category 'accessing') ----- + d10 + ^self unsignedLongLongAt: 1609!
Item was added: + ----- Method: GdbARMAlien>>d10: (in category 'accessing') ----- + d10: anUnsignedInteger + ^self unsignedLongLongAt: 1609 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d11 (in category 'accessing') ----- + d11 + ^self unsignedLongLongAt: 1617!
Item was added: + ----- Method: GdbARMAlien>>d11: (in category 'accessing') ----- + d11: anUnsignedInteger + ^self unsignedLongLongAt: 1617 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d12 (in category 'accessing') ----- + d12 + ^self unsignedLongLongAt: 1625!
Item was added: + ----- Method: GdbARMAlien>>d12: (in category 'accessing') ----- + d12: anUnsignedInteger + ^self unsignedLongLongAt: 1625 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d13 (in category 'accessing') ----- + d13 + ^self unsignedLongLongAt: 1633!
Item was added: + ----- Method: GdbARMAlien>>d13: (in category 'accessing') ----- + d13: anUnsignedInteger + ^self unsignedLongLongAt: 1633 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d14 (in category 'accessing') ----- + d14 + ^self unsignedLongLongAt: 1641!
Item was added: + ----- Method: GdbARMAlien>>d14: (in category 'accessing') ----- + d14: anUnsignedInteger + ^self unsignedLongLongAt: 1641 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d15 (in category 'accessing') ----- + d15 + ^self unsignedLongLongAt: 1649!
Item was added: + ----- Method: GdbARMAlien>>d15: (in category 'accessing') ----- + d15: anUnsignedInteger + ^self unsignedLongLongAt: 1649 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d16 (in category 'accessing') ----- + d16 + ^self unsignedLongLongAt: 1657!
Item was added: + ----- Method: GdbARMAlien>>d16: (in category 'accessing') ----- + d16: anUnsignedInteger + ^self unsignedLongLongAt: 1657 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d17 (in category 'accessing') ----- + d17 + ^self unsignedLongLongAt: 1665!
Item was added: + ----- Method: GdbARMAlien>>d17: (in category 'accessing') ----- + d17: anUnsignedInteger + ^self unsignedLongLongAt: 1665 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d18 (in category 'accessing') ----- + d18 + ^self unsignedLongLongAt: 1673!
Item was added: + ----- Method: GdbARMAlien>>d18: (in category 'accessing') ----- + d18: anUnsignedInteger + ^self unsignedLongLongAt: 1673 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d19 (in category 'accessing') ----- + d19 + ^self unsignedLongLongAt: 1681!
Item was added: + ----- Method: GdbARMAlien>>d19: (in category 'accessing') ----- + d19: anUnsignedInteger + ^self unsignedLongLongAt: 1681 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d1: (in category 'accessing') ----- + d1: anUnsignedInteger + ^self unsignedLongLongAt: 1537 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d2 (in category 'accessing') ----- + d2 + ^self unsignedLongLongAt: 1545!
Item was added: + ----- Method: GdbARMAlien>>d20 (in category 'accessing') ----- + d20 + ^self unsignedLongLongAt: 1689!
Item was added: + ----- Method: GdbARMAlien>>d20: (in category 'accessing') ----- + d20: anUnsignedInteger + ^self unsignedLongLongAt: 1689 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d21 (in category 'accessing') ----- + d21 + ^self unsignedLongLongAt: 1697!
Item was added: + ----- Method: GdbARMAlien>>d21: (in category 'accessing') ----- + d21: anUnsignedInteger + ^self unsignedLongLongAt: 1697 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d22 (in category 'accessing') ----- + d22 + ^self unsignedLongLongAt: 1705!
Item was added: + ----- Method: GdbARMAlien>>d22: (in category 'accessing') ----- + d22: anUnsignedInteger + ^self unsignedLongLongAt: 1705 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d23 (in category 'accessing') ----- + d23 + ^self unsignedLongLongAt: 1713!
Item was added: + ----- Method: GdbARMAlien>>d23: (in category 'accessing') ----- + d23: anUnsignedInteger + ^self unsignedLongLongAt: 1713 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d24 (in category 'accessing') ----- + d24 + ^self unsignedLongLongAt: 1721!
Item was added: + ----- Method: GdbARMAlien>>d24: (in category 'accessing') ----- + d24: anUnsignedInteger + ^self unsignedLongLongAt: 1721 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d25 (in category 'accessing') ----- + d25 + ^self unsignedLongLongAt: 1729!
Item was added: + ----- Method: GdbARMAlien>>d25: (in category 'accessing') ----- + d25: anUnsignedInteger + ^self unsignedLongLongAt: 1729 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d26 (in category 'accessing') ----- + d26 + ^self unsignedLongLongAt: 1737!
Item was added: + ----- Method: GdbARMAlien>>d26: (in category 'accessing') ----- + d26: anUnsignedInteger + ^self unsignedLongLongAt: 1737 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d27 (in category 'accessing') ----- + d27 + ^self unsignedLongLongAt: 1745!
Item was added: + ----- Method: GdbARMAlien>>d27: (in category 'accessing') ----- + d27: anUnsignedInteger + ^self unsignedLongLongAt: 1745 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d28 (in category 'accessing') ----- + d28 + ^self unsignedLongLongAt: 1753!
Item was added: + ----- Method: GdbARMAlien>>d28: (in category 'accessing') ----- + d28: anUnsignedInteger + ^self unsignedLongLongAt: 1753 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d29 (in category 'accessing') ----- + d29 + ^self unsignedLongLongAt: 1761!
Item was added: + ----- Method: GdbARMAlien>>d29: (in category 'accessing') ----- + d29: anUnsignedInteger + ^self unsignedLongLongAt: 1761 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d2: (in category 'accessing') ----- + d2: anUnsignedInteger + ^self unsignedLongLongAt: 1545 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d3 (in category 'accessing') ----- + d3 + ^self unsignedLongLongAt: 1553!
Item was added: + ----- Method: GdbARMAlien>>d30 (in category 'accessing') ----- + d30 + ^self unsignedLongLongAt: 1769!
Item was added: + ----- Method: GdbARMAlien>>d30: (in category 'accessing') ----- + d30: anUnsignedInteger + ^self unsignedLongLongAt: 1769 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d31 (in category 'accessing') ----- + d31 + ^self unsignedLongLongAt: 1777!
Item was added: + ----- Method: GdbARMAlien>>d31: (in category 'accessing') ----- + d31: anUnsignedInteger + ^self unsignedLongLongAt: 1777 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d3: (in category 'accessing') ----- + d3: anUnsignedInteger + ^self unsignedLongLongAt: 1553 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d4 (in category 'accessing') ----- + d4 + ^self unsignedLongLongAt: 1561!
Item was added: + ----- Method: GdbARMAlien>>d4: (in category 'accessing') ----- + d4: anUnsignedInteger + ^self unsignedLongLongAt: 1561 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d5 (in category 'accessing') ----- + d5 + ^self unsignedLongLongAt: 1569!
Item was added: + ----- Method: GdbARMAlien>>d5: (in category 'accessing') ----- + d5: anUnsignedInteger + ^self unsignedLongLongAt: 1569 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d6 (in category 'accessing') ----- + d6 + ^self unsignedLongLongAt: 1577!
Item was added: + ----- Method: GdbARMAlien>>d6: (in category 'accessing') ----- + d6: anUnsignedInteger + ^self unsignedLongLongAt: 1577 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d7 (in category 'accessing') ----- + d7 + ^self unsignedLongLongAt: 1585!
Item was added: + ----- Method: GdbARMAlien>>d7: (in category 'accessing') ----- + d7: anUnsignedInteger + ^self unsignedLongLongAt: 1585 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d8 (in category 'accessing') ----- + d8 + ^self unsignedLongLongAt: 1593!
Item was added: + ----- Method: GdbARMAlien>>d8: (in category 'accessing') ----- + d8: anUnsignedInteger + ^self unsignedLongLongAt: 1593 put: anUnsignedInteger!
Item was added: + ----- Method: GdbARMAlien>>d9 (in category 'accessing') ----- + d9 + ^self unsignedLongLongAt: 1601!
Item was added: + ----- Method: GdbARMAlien>>d9: (in category 'accessing') ----- + d9: anUnsignedInteger + ^self unsignedLongLongAt: 1601 put: anUnsignedInteger!
Item was changed: ----- Method: GdbARMAlien>>handleOneRegTransferDoubleArithmetic:at: (in category 'floating-point emulation') ----- handleOneRegTransferDoubleArithmetic: instr at: pc "Emulate a one-register transfer VFP instruction." | rn rd rm vn vm | rn := instr >> 16 bitAnd: 15. rd := instr >> 12 bitAnd: 15. rm := instr bitAnd: 15. vn := Float fromIEEE64BitWord: (self perform: (self registerStateGetters at: rn + 18)). "Assume accesses fp regs" vm := Float fromIEEE64BitWord: (self perform: (self registerStateGetters at: rm + 18)). "Assume accesses fp regs" (instr >> 18 bitAnd: 31) caseOf: { [8 "FMULD"] -> [| r | r := vn * vm. self perform: (self registerStateSetters at: rd + 18) with: r asIEEE64BitWord]. [12"FADDD/FSUBD"] -> [self shouldBeImplemented]. [32"FDIVD"] -> [self shouldBeImplemented]. [45"FCMPD"] -> [self shouldBeImplemented]. } + otherwise: [self reportPrimitiveFailure]. + self pc: pc + 4! - otherwise: [self reportPrimitiveFailure]!
Item was changed: ----- Method: GdbARMAlien>>printOn: (in category 'printing') ----- printOn: aStream + | first | + first := true. + aStream nextPutAll: 'an ARMAlien ('. + self registerState with: self registerStateGetters do: [ :state :getter | + first + ifTrue: [first := false] + ifFalse: [aStream << ', ']. + getter first = $d + ifTrue: + [aStream + << getter << ': ' + << (Float fromIEEE64BitWord: state)] + ifFalse: + [getter == #eflags + ifTrue: + [aStream + << 'NZCVIF: ' + << (state printStringBase: 2 length: 6 padded: true)] + ifFalse: + [aStream + << getter << ': ' + << (state printStringBase: 16)]]]! - aStream nextPutAll: 'an ARMAlien('. - self registerState allButLast with: self registerStateGetters allButLast do: [ :state :i | - aStream - << i << ': ' - << (state abs > 15 ifTrue: [state hex] ifFalse: [state asString]) - << ', ']. - aStream << 'NZCVIF: ' - << (self registerState last printStringBase: 2 length: 6 padded: true) << ')'.!
Item was changed: ----- Method: GdbARMAlien>>registerState (in category 'accessing-abstract') ----- registerState ^{ self r0. self r1. self r2. self r3. self r4. self r5. self r6. self r7. + self r8. self r9. self sl. self fp. self r12. self sp. self lr. self pc. self eflags. + self d0. self d1. self d2. self d3. self d4. self d5. self d6. self d7. + self d8. self d9. self d10. self d11. self d12. self d13. self d14. self d15 }! - self r8. self r9. self sl. self fp. self r12. self sp. self lr. self pc. self eflags }!
vm-dev@lists.squeakfoundation.org