Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
9edc7d05
Commit
9edc7d05
authored
Sep 18, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Misc cleanups.
parent
45b2c868
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
49 deletions
+46
-49
dbgmain.c
debugger/dbgmain.c
+0
-1
module.c
debugger/module.c
+0
-1
instr.c
memory/instr.c
+42
-41
interrupts.c
msdos/interrupts.c
+4
-6
No files found.
debugger/dbgmain.c
View file @
9edc7d05
...
...
@@ -9,7 +9,6 @@
#include "ldt.h"
#include "windows.h"
#include "toolhelp.h"
#include "module.h"
#include "debugger.h"
#include "win.h"
...
...
debugger/module.c
View file @
9edc7d05
...
...
@@ -10,7 +10,6 @@
#include <stdio.h>
#include <string.h>
#include "neexe.h"
#include "module.h"
#include "file.h"
#include "debugger.h"
#include "toolhelp.h"
...
...
memory/instr.c
View file @
9edc7d05
...
...
@@ -10,7 +10,6 @@
#include "ldt.h"
#include "global.h"
#include "module.h"
#include "dosexe.h"
#include "miscemu.h"
#include "selectors.h"
#include "debugtools.h"
...
...
@@ -20,28 +19,32 @@ DECLARE_DEBUG_CHANNEL(io);
#ifdef __i386__
#define IS_SEL_32(context,seg) \
(ISV86(context) ? FALSE : IS_SELECTOR_32BIT(seg))
#define STACK_reg(context) \
(IS_SEL_32(context,SS_reg(context)) ? ESP_reg(context) : (DWORD)LOWORD(ESP_reg(context)))
#define ADD_STACK_reg(context,offset) \
do { if (IS_SEL_32(context,SS_reg(context))) ESP_reg(context) += (offset); \
else ADD_LOWORD(ESP_reg(context),(offset)); } while(0)
#define MAKE_PTR(seg,off) \
(IS_SELECTOR_SYSTEM(seg) ? (void *)(off) : PTR_SEG_OFF_TO_LIN(seg,off))
inline
static
void
add_stack
(
CONTEXT86
*
context
,
int
offset
)
{
if
(
ISV86
(
context
)
||
!
IS_SELECTOR_32BIT
(
context
->
SegSs
))
ADD_LOWORD
(
context
->
Esp
,
offset
);
else
context
->
Esp
+=
offset
;
}
#define MK_PTR(context,seg,off) \
(ISV86(context) ? DOSMEM_MapRealToLinear(MAKELONG(off,seg)) \
: MAKE_PTR(seg,off))
inline
static
void
*
make_ptr
(
CONTEXT86
*
context
,
DWORD
seg
,
DWORD
off
,
int
long_addr
)
{
if
(
ISV86
(
context
))
return
DOSMEM_MemoryBase
()
+
(
seg
<<
4
)
+
LOWORD
(
off
);
if
(
IS_SELECTOR_SYSTEM
(
seg
))
return
(
void
*
)
off
;
if
(
!
long_addr
)
off
=
LOWORD
(
off
);
return
PTR_SEG_OFF_TO_LIN
(
seg
,
off
);
}
#define STACK_PTR(context) \
(ISV86(context) ? \
DOSMEM_MapRealToLinear(MAKELONG(LOWORD(ESP_reg(context)),SS_reg(context))) : \
(IS_SELECTOR_SYSTEM(SS_reg(context)) ? (void *)ESP_reg(context) : \
(PTR_SEG_OFF_TO_LIN(SS_reg(context),STACK_reg(context)))))
inline
static
void
*
get_stack
(
CONTEXT86
*
context
)
{
if
(
ISV86
(
context
))
return
DOSMEM_MemoryBase
()
+
(
context
->
SegSs
<<
4
)
+
LOWORD
(
context
->
Esp
);
if
(
IS_SELECTOR_SYSTEM
(
context
->
SegSs
))
return
(
void
*
)
context
->
Esp
;
if
(
IS_SELECTOR_32BIT
(
context
->
SegSs
))
return
PTR_SEG_OFF_TO_LIN
(
context
->
SegSs
,
context
->
Esp
);
return
PTR_SEG_OFF_TO_LIN
(
context
->
SegSs
,
LOWORD
(
context
->
Esp
)
);
}
/***********************************************************************
* INSTR_ReplaceSelector
...
...
@@ -387,8 +390,8 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
SEGPTR
gpHandler
;
BYTE
*
instr
;
long_op
=
long_addr
=
IS_SEL_32
(
context
,
CS_reg
(
context
));
instr
=
(
BYTE
*
)
MK_PTR
(
context
,
CS_reg
(
context
),
EIP_reg
(
context
)
);
long_op
=
long_addr
=
(
!
ISV86
(
context
)
&&
IS_SELECTOR_32BIT
(
context
->
SegCs
));
instr
=
make_ptr
(
context
,
context
->
SegCs
,
context
->
Eip
,
TRUE
);
if
(
!
instr
)
return
FALSE
;
/* First handle any possible prefix */
...
...
@@ -452,7 +455,7 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
case
0x17
:
/* pop ss */
case
0x1f
:
/* pop ds */
{
WORD
seg
=
*
(
WORD
*
)
STACK_PTR
(
context
);
WORD
seg
=
*
(
WORD
*
)
get_stack
(
context
);
if
(
INSTR_ReplaceSelector
(
context
,
&
seg
))
{
switch
(
*
instr
)
...
...
@@ -461,7 +464,7 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
case
0x17
:
SS_reg
(
context
)
=
seg
;
break
;
case
0x1f
:
DS_reg
(
context
)
=
seg
;
break
;
}
ADD_STACK_reg
(
context
,
long_op
?
4
:
2
);
add_stack
(
context
,
long_op
?
4
:
2
);
EIP_reg
(
context
)
+=
prefixlen
+
1
;
return
TRUE
;
}
...
...
@@ -512,11 +515,11 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
break
;
case
0xa1
:
/* pop fs */
{
WORD
seg
=
*
(
WORD
*
)
STACK_PTR
(
context
);
WORD
seg
=
*
(
WORD
*
)
get_stack
(
context
);
if
(
INSTR_ReplaceSelector
(
context
,
&
seg
))
{
FS_reg
(
context
)
=
seg
;
ADD_STACK_reg
(
context
,
long_op
?
4
:
2
);
add_stack
(
context
,
long_op
?
4
:
2
);
EIP_reg
(
context
)
+=
prefixlen
+
2
;
return
TRUE
;
}
...
...
@@ -524,11 +527,11 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
break
;
case
0xa9
:
/* pop gs */
{
WORD
seg
=
*
(
WORD
*
)
STACK_PTR
(
context
);
WORD
seg
=
*
(
WORD
*
)
get_stack
(
context
);
if
(
INSTR_ReplaceSelector
(
context
,
&
seg
))
{
GS_reg
(
context
)
=
seg
;
ADD_STACK_reg
(
context
,
long_op
?
4
:
2
);
add_stack
(
context
,
long_op
?
4
:
2
);
EIP_reg
(
context
)
+=
prefixlen
+
2
;
return
TRUE
;
}
...
...
@@ -579,15 +582,13 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
WORD
dx
=
LOWORD
(
EDX_reg
(
context
));
if
(
outp
)
{
data
=
MK_PTR
(
context
,
seg
,
long_addr
?
ESI_reg
(
context
)
:
LOWORD
(
ESI_reg
(
context
)));
data
=
make_ptr
(
context
,
seg
,
context
->
Esi
,
long_addr
);
if
(
long_addr
)
ESI_reg
(
context
)
+=
step
;
else
ADD_LOWORD
(
ESI_reg
(
context
),
step
);
}
else
{
data
=
MK_PTR
(
context
,
seg
,
long_addr
?
EDI_reg
(
context
)
:
LOWORD
(
EDI_reg
(
context
)));
data
=
make_ptr
(
context
,
seg
,
context
->
Edi
,
long_addr
);
if
(
long_addr
)
EDI_reg
(
context
)
+=
step
;
else
ADD_LOWORD
(
EDI_reg
(
context
),
step
);
}
...
...
@@ -679,7 +680,7 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
else
{
FARPROC16
addr
=
INT_GetPMHandler
(
instr
[
1
]
);
WORD
*
stack
=
(
WORD
*
)
STACK_PTR
(
context
);
WORD
*
stack
=
get_stack
(
context
);
if
(
!
addr
)
{
FIXME
(
"no handler for interrupt %02x, ignoring it
\n
"
,
instr
[
1
]);
...
...
@@ -690,7 +691,7 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
*
(
--
stack
)
=
LOWORD
(
EFL_reg
(
context
));
*
(
--
stack
)
=
CS_reg
(
context
);
*
(
--
stack
)
=
LOWORD
(
EIP_reg
(
context
))
+
prefixlen
+
2
;
ADD_STACK_reg
(
context
,
-
3
*
sizeof
(
WORD
));
add_stack
(
context
,
-
3
*
sizeof
(
WORD
));
/* Jump to the interrupt handler */
CS_reg
(
context
)
=
HIWORD
(
addr
);
EIP_reg
(
context
)
=
LOWORD
(
addr
);
...
...
@@ -700,19 +701,19 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
case
0xcf
:
/* iret */
if
(
long_op
)
{
DWORD
*
stack
=
(
DWORD
*
)
STACK_PTR
(
context
);
DWORD
*
stack
=
get_stack
(
context
);
EIP_reg
(
context
)
=
*
stack
++
;
CS_reg
(
context
)
=
*
stack
++
;
EFL_reg
(
context
)
=
*
stack
;
ADD_STACK_reg
(
context
,
3
*
sizeof
(
DWORD
));
/* Pop the return address and flags */
add_stack
(
context
,
3
*
sizeof
(
DWORD
));
/* Pop the return address and flags */
}
else
{
WORD
*
stack
=
(
WORD
*
)
STACK_PTR
(
context
);
WORD
*
stack
=
get_stack
(
context
);
EIP_reg
(
context
)
=
*
stack
++
;
CS_reg
(
context
)
=
*
stack
++
;
SET_LOWORD
(
EFL_reg
(
context
),
*
stack
);
ADD_STACK_reg
(
context
,
3
*
sizeof
(
WORD
));
/* Pop the return address and flags */
add_stack
(
context
,
3
*
sizeof
(
WORD
));
/* Pop the return address and flags */
}
return
TRUE
;
...
...
@@ -783,10 +784,10 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
EIP_reg
(
context
)
)
);
if
(
gpHandler
)
{
WORD
*
stack
=
(
WORD
*
)
STACK_PTR
(
context
);
WORD
*
stack
=
get_stack
(
context
);
*--
stack
=
CS_reg
(
context
);
*--
stack
=
EIP_reg
(
context
);
ADD_STACK_reg
(
context
,
-
2
*
sizeof
(
WORD
));
add_stack
(
context
,
-
2
*
sizeof
(
WORD
));
CS_reg
(
context
)
=
SELECTOROF
(
gpHandler
);
EIP_reg
(
context
)
=
OFFSETOF
(
gpHandler
);
...
...
msdos/interrupts.c
View file @
9edc7d05
...
...
@@ -89,7 +89,7 @@ void INT_SetRMHandler( BYTE intnum, FARPROC16 handler )
FARPROC16
INT_CtxGetHandler
(
CONTEXT86
*
context
,
BYTE
intnum
)
{
if
(
ISV86
(
context
))
return
((
FARPROC16
*
)
V86BASE
(
context
))[
intnum
]
;
return
INT_GetRMHandler
(
intnum
)
;
else
return
INT_GetPMHandler
(
intnum
);
}
...
...
@@ -102,11 +102,9 @@ FARPROC16 INT_CtxGetHandler( CONTEXT86 *context, BYTE intnum )
*/
void
INT_CtxSetHandler
(
CONTEXT86
*
context
,
BYTE
intnum
,
FARPROC16
handler
)
{
if
(
ISV86
(
context
))
{
TRACE
(
"Set real mode interrupt vector %02x <- %04x:%04x
\n
"
,
intnum
,
HIWORD
(
handler
),
LOWORD
(
handler
)
);
((
FARPROC16
*
)
V86BASE
(
context
))[
intnum
]
=
handler
;
}
else
if
(
ISV86
(
context
))
INT_SetRMHandler
(
intnum
,
handler
);
else
INT_SetPMHandler
(
intnum
,
handler
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment