Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
wine
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Yoann Laissus
wine
Commits
9edc7d05
Commit
9edc7d05
authored
24 years ago
by
Alexandre Julliard
Browse files
Options
Downloads
Patches
Plain Diff
Misc cleanups.
parent
45b2c868
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
debugger/dbgmain.c
+0
-1
0 additions, 1 deletion
debugger/dbgmain.c
debugger/module.c
+0
-1
0 additions, 1 deletion
debugger/module.c
memory/instr.c
+42
-41
42 additions, 41 deletions
memory/instr.c
msdos/interrupts.c
+4
-6
4 additions, 6 deletions
msdos/interrupts.c
with
46 additions
and
49 deletions
debugger/dbgmain.c
+
0
−
1
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"
...
...
This diff is collapsed.
Click to expand it.
debugger/module.c
+
0
−
1
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"
...
...
This diff is collapsed.
Click to expand it.
memory/instr.c
+
42
−
41
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
);
...
...
This diff is collapsed.
Click to expand it.
msdos/interrupts.c
+
4
−
6
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
);
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment