v86/lib/jor1k.js
2014-12-13 01:08:49 +01:00

113 lines
2.7 KiB
JavaScript

"use strict";
// jor1k compatibility
var VIRTIO_MAGIC_REG = 0x0;
var VIRTIO_VERSION_REG = 0x4;
var VIRTIO_DEVICE_REG = 0x8;
var VIRTIO_VENDOR_REG = 0xc;
var VIRTIO_HOSTFEATURES_REG = 0x10;
var VIRTIO_HOSTFEATURESSEL_REG = 0x14;
var VIRTIO_GUESTFEATURES_REG = 0x20;
var VIRTIO_GUESTFEATURESSEL_REG = 0x24;
var VIRTIO_GUEST_PAGE_SIZE_REG = 0x28;
var VIRTIO_QUEUESEL_REG = 0x30;
var VIRTIO_QUEUENUMMAX_REG = 0x34;
var VIRTIO_QUEUENUM_REG = 0x38;
var VIRTIO_QUEUEALIGN_REG = 0x3C;
var VIRTIO_QUEUEPFN_REG = 0x40;
var VIRTIO_QUEUENOTIFY_REG = 0x50;
var VIRTIO_INTERRUPTSTATUS_REG = 0x60;
var VIRTIO_INTERRUPTACK_REG = 0x64;
var VIRTIO_STATUS_REG = 0x70;
/** @const */
var VRING_DESC_F_NEXT = 1; /* This marks a buffer as continuing via the next field. */
/** @const */
var VRING_DESC_F_WRITE = 2; /* This marks a buffer as write-only (otherwise read-only). */
/** @const */
var VRING_DESC_F_INDIRECT = 4; /* This means the buffer contains a list of buffer descriptors. */
function Swap16(x)
{
// OR1K is big endian, therefore no conversion needed for us
return x;
}
function Swap32(x)
{
return x;
}
function abort()
{
if(DEBUG)
{
throw "abort";
}
}
function hex8(n)
{
return h(n);
}
/** @param {...string} log */
function DebugMessage(log)
{
if(DEBUG)
{
console.log.apply(console, arguments);
}
}
function LoadXMLResource(url, OnSuccess, OnError) {
var req = new XMLHttpRequest();
req.open('GET', url, true);
//req.overrideMimeType('text/xml');
req.onreadystatechange = function () {
if (req.readyState != 4) {
return;
}
if ((req.status != 200) && (req.status != 0)) {
OnError("Error: Could not load XML file " + url);
return;
}
OnSuccess(req.responseText);
};
req.send(null);
}
function LoadBinaryResource(url, OnSuccess, OnError) {
var req = new XMLHttpRequest();
req.open('GET', url, true);
req.responseType = "arraybuffer";
req.onreadystatechange = function () {
if (req.readyState != 4) {
return;
}
if ((req.status != 200) && (req.status != 0)) {
OnError("Error: Could not load file " + url);
return;
}
var arrayBuffer = req.response;
if (arrayBuffer) {
OnSuccess(arrayBuffer);
} else {
OnError("Error: No data received from: " + url);
}
};
/*
req.onload = function(e)
{
var arrayBuffer = req.response;
if (arrayBuffer) {
OnLoadFunction(arrayBuffer);
}
};
*/
req.send(null);
}