diff options
author | Tiago Vignatti <tiago.vignatti@nokia.com> | 2009-12-23 16:55:02 +0200 |
---|---|---|
committer | Tiago Vignatti <tiago.vignatti@nokia.com> | 2009-12-23 16:55:02 +0200 |
commit | 7b368bbe39b6aa759717c74a4752d1942b02cc39 (patch) | |
tree | 4de2423dbae8d131bb83605c650827d6eb98d381 | |
parent | d79952377b609ba75f4c2d2cf1ab19629a0c2976 (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.h | 6 | ||||
-rw-r--r-- | src/lrmi/backend-x86emu.c | 72 |
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) |