Added separate dumpers for physical and linear address space, added more information to the TSS dump, fixed breakpoint updates when the address(es) are not yet valid, fixed recursion error when an UNPAGED block is accessed, made string instructions restartable after a fault, and enabled port-trapping in V86-mode.

This commit is contained in:
Jeff Parsons 2015-07-25 16:42:39 -07:00
commit fc9a2a903f
7 changed files with 191 additions and 146 deletions

View file

@ -491,13 +491,11 @@ Memory.prototype = {
* @return {Memory}
*/
getPageBlock: function(addr, fWrite) {
var block = this.cpu.mapPageBlock(addr, fWrite);
/*
* If mapPageBlock() fails -- which can easily happen if the page is not present or has insufficient
* privileges -- then a fault will be triggered and block will be null. We still have to return a block,
* but it will be our old "unpaged" self.
* Even when mapPageBlock() fails (ie, when the page is not present or has insufficient privileges), it
* will trigger a fault (since we don't set fSuppress), but it will still return a block (ie, an empty block).
*/
return block || this;
return this.cpu.mapPageBlock(addr, fWrite);
},
/**
* setPhysBlock(blockPhys, blockPDE, offPDE, blockPTE, offPTE)