diff options
author | Tiago Vignatti <tiago.vignatti@nokia.com> | 2010-01-04 18:48:14 +0200 |
---|---|---|
committer | Tiago Vignatti <tiago.vignatti@nokia.com> | 2010-01-04 18:48:14 +0200 |
commit | bb157876c98c1ff17574a930de71b69b09b78a3e (patch) | |
tree | 809a7f0e3d83a3c17043632438e377fa5e9d54b8 | |
parent | 93b6cf19212891267fd61d825ddde42ac75fdc52 (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.c | 49 |
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; |