summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Vignatti <tiago.vignatti@nokia.com>2009-12-23 16:55:02 +0200
committerTiago Vignatti <tiago.vignatti@nokia.com>2009-12-23 16:55:02 +0200
commit7b368bbe39b6aa759717c74a4752d1942b02cc39 (patch)
tree4de2423dbae8d131bb83605c650827d6eb98d381
parentd79952377b609ba75f4c2d2cf1ab19629a0c2976 (diff)
lrmi: hide emulator setup functions inside one single call
namely hide LRMI_{setup, finish}_int, putting in LRMI_int Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
-rw-r--r--include/libx86.h6
-rw-r--r--src/lrmi/backend-x86emu.c72
2 files changed, 38 insertions, 40 deletions
diff --git a/include/libx86.h b/include/libx86.h
index f0a4b02..71468ed 100644
--- a/include/libx86.h
+++ b/include/libx86.h
@@ -100,12 +100,6 @@ LRMI_init(void);
void
LRMI_fini(xf86Int10InfoPtr pInt);
-void
-LRMI_setup_int(xf86Int10InfoPtr pInt);
-
-void
-LRMI_finish_int(xf86Int10InfoPtr pInt);
-
#define LRMI_setup LRMI_MAKENAME(setup)
void
LRMI_setup(xf86Int10InfoPtr pInt);
diff --git a/src/lrmi/backend-x86emu.c b/src/lrmi/backend-x86emu.c
index f67e737..cb231fa 100644
--- a/src/lrmi/backend-x86emu.c
+++ b/src/lrmi/backend-x86emu.c
@@ -345,12 +345,48 @@ intE6_handler(xf86Int10InfoPtr pInt)
return 1;
}
+static void
+pre_int(xf86Int10InfoPtr pInt)
+{
+ Int10Current = pInt;
+ X86_EAX = (CARD32) pInt->ax;
+ X86_EBX = (CARD32) pInt->bx;
+ X86_ECX = (CARD32) pInt->cx;
+ X86_EDX = (CARD32) pInt->dx;
+ X86_ESI = (CARD32) pInt->si;
+ X86_EDI = (CARD32) pInt->di;
+ X86_EBP = (CARD32) pInt->bp;
+ X86_ESP = 0x1000; X86_SS = pInt->stackseg >> 4;
+ X86_EIP = 0x0600; X86_CS = 0x0; /* address of 'hlt' */
+ X86_DS = 0x40; /* standard pc ds */
+ X86_ES = pInt->es;
+ X86_FS = 0;
+ X86_GS = 0;
+ X86_EFLAGS = X86_IF_MASK | X86_IOPL_MASK;
+}
+
+static void
+pos_int(xf86Int10InfoPtr pInt)
+{
+ pInt->ax = (CARD32) X86_EAX;
+ pInt->bx = (CARD32) X86_EBX;
+ pInt->cx = (CARD32) X86_ECX;
+ pInt->dx = (CARD32) X86_EDX;
+ pInt->si = (CARD32) X86_ESI;
+ pInt->di = (CARD32) X86_EDI;
+ pInt->es = (CARD16) X86_ES;
+ pInt->bp = (CARD32) X86_EBP;
+ pInt->flags = (CARD32) X86_FLAGS;
+}
+
void
LRMI_int(xf86Int10InfoPtr pInt)
{
int num = pInt->num;
int ret = 0;
+ pre_int(pInt);
+
switch (num) {
case 0xe6:
ret = intE6_handler(pInt);
@@ -367,6 +403,8 @@ LRMI_int(xf86Int10InfoPtr pInt)
}
X86EMU_exec();
+
+ pos_int(pInt);
}
void
@@ -440,40 +478,6 @@ int LRMI_init() {
}
void
-LRMI_setup_int(xf86Int10InfoPtr pInt)
-{
- Int10Current = pInt;
- X86_EAX = (CARD32) pInt->ax;
- X86_EBX = (CARD32) pInt->bx;
- X86_ECX = (CARD32) pInt->cx;
- X86_EDX = (CARD32) pInt->dx;
- X86_ESI = (CARD32) pInt->si;
- X86_EDI = (CARD32) pInt->di;
- X86_EBP = (CARD32) pInt->bp;
- X86_ESP = 0x1000; X86_SS = pInt->stackseg >> 4;
- X86_EIP = 0x0600; X86_CS = 0x0; /* address of 'hlt' */
- X86_DS = 0x40; /* standard pc ds */
- X86_ES = pInt->es;
- X86_FS = 0;
- X86_GS = 0;
- X86_EFLAGS = X86_IF_MASK | X86_IOPL_MASK;
-}
-
-void
-LRMI_finish_int(xf86Int10InfoPtr pInt)
-{
- pInt->ax = (CARD32) X86_EAX;
- pInt->bx = (CARD32) X86_EBX;
- pInt->cx = (CARD32) X86_ECX;
- pInt->dx = (CARD32) X86_EDX;
- pInt->si = (CARD32) X86_ESI;
- pInt->di = (CARD32) X86_EDI;
- pInt->es = (CARD16) X86_ES;
- pInt->bp = (CARD32) X86_EBP;
- pInt->flags = (CARD32) X86_FLAGS;
-}
-
-void
LRMI_fini(xf86Int10InfoPtr pInt)
{
if (Int10Current == pInt)