summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Vignatti <tiago.vignatti@nokia.com>2010-01-04 18:48:14 +0200
committerTiago Vignatti <tiago.vignatti@nokia.com>2010-01-04 18:48:14 +0200
commitbb157876c98c1ff17574a930de71b69b09b78a3e (patch)
tree809a7f0e3d83a3c17043632438e377fa5e9d54b8
parent93b6cf19212891267fd61d825ddde42ac75fdc52 (diff)
vm86: setup mem functions inside library
they are stolen from X server. Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
-rw-r--r--src/lrmi/backend-vm86.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lrmi/backend-vm86.c b/src/lrmi/backend-vm86.c
index ec0dd21..266b1a9 100644
--- a/src/lrmi/backend-vm86.c
+++ b/src/lrmi/backend-vm86.c
@@ -28,6 +28,7 @@ OTHER DEALINGS IN THE SOFTWARE.
#include <stdio.h>
#include <string.h>
+#include <inttypes.h>
#include "libx86.h"
#include "common.h"
@@ -38,6 +39,52 @@ OTHER DEALINGS IN THE SOFTWARE.
#endif
#define DEFAULT_STACK_SIZE 0x1000
+
+static uint8_t
+read_b(xf86Int10InfoPtr pInt, int addr)
+{
+ return *((uint8_t *)addr);
+}
+
+static uint16_t
+read_w(xf86Int10InfoPtr pInt, int addr)
+{
+ return *((uint16_t *)addr);
+}
+
+static uint32_t
+read_l(xf86Int10InfoPtr pInt, int addr)
+{
+ return *((uint32_t *)addr);
+}
+
+static void
+write_b(xf86Int10InfoPtr pInt, int addr, uint8_t val)
+{
+ *((uint8_t *)addr) = val;
+}
+
+static void
+write_w(xf86Int10InfoPtr pInt, int addr, uint16_t val)
+{
+ *((uint16_t *)addr) = val;
+}
+
+static void
+write_l(xf86Int10InfoPtr pInt, int addr, uint32_t val)
+{
+ *((uint32_t *)addr) = val;
+}
+
+int10MemRec linuxMem = {
+ read_b,
+ read_w,
+ read_l,
+ write_b,
+ write_w,
+ write_l
+};
+
static inline void
set_bit(unsigned int bit, void *array)
{
@@ -50,6 +97,8 @@ void
LRMI_init(xf86Int10InfoPtr pInt)
{
xxxf86Int10ExecSetup(pInt);
+
+ pInt->mem = &linuxMem;
#if 0
void *m;