Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
83655771
Commit
83655771
authored
Oct 08, 2003
by
Mike McCormack
Committed by
Alexandre Julliard
Oct 08, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Don't share some protected mode interrupts in winedos.
parent
7b7efbe0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
9 deletions
+75
-9
interrupts.c
dlls/winedos/interrupts.c
+68
-2
task.h
include/task.h
+7
-7
No files found.
dlls/winedos/interrupts.c
View file @
83655771
...
...
@@ -25,6 +25,7 @@
#include "wine/winbase16.h"
#include "thread.h"
#include "task.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
int
);
WINE_DECLARE_DEBUG_CHANNEL
(
relay
);
...
...
@@ -562,9 +563,42 @@ void DOSVM_SetRMHandler( BYTE intnum, FARPROC16 handler )
*/
FARPROC16
DOSVM_GetPMHandler16
(
BYTE
intnum
)
{
TDB
*
pTask
;
FARPROC16
proc
=
0
;
pTask
=
GlobalLock16
(
GetCurrentTask
());
if
(
pTask
)
{
switch
(
intnum
)
{
case
0x00
:
proc
=
pTask
->
int0
;
break
;
case
0x02
:
proc
=
pTask
->
int2
;
break
;
case
0x04
:
proc
=
pTask
->
int4
;
break
;
case
0x06
:
proc
=
pTask
->
int6
;
break
;
case
0x07
:
proc
=
pTask
->
int7
;
break
;
case
0x3e
:
proc
=
pTask
->
int3e
;
break
;
case
0x75
:
proc
=
pTask
->
int75
;
break
;
}
if
(
proc
)
return
proc
;
}
if
(
!
DOSVM_Vectors16
[
intnum
])
{
FARPROC16
proc
=
(
FARPROC16
)
MAKESEGPTR
(
DOSVM_dpmi_segments
->
int16_sel
,
proc
=
(
FARPROC16
)
MAKESEGPTR
(
DOSVM_dpmi_segments
->
int16_sel
,
DOSVM_STUB_PM16
*
intnum
);
DOSVM_Vectors16
[
intnum
]
=
proc
;
}
...
...
@@ -579,9 +613,41 @@ FARPROC16 DOSVM_GetPMHandler16( BYTE intnum )
*/
void
DOSVM_SetPMHandler16
(
BYTE
intnum
,
FARPROC16
handler
)
{
TDB
*
pTask
;
TRACE
(
"Set protected mode interrupt vector %02x <- %04x:%04x
\n
"
,
intnum
,
HIWORD
(
handler
),
LOWORD
(
handler
)
);
DOSVM_Vectors16
[
intnum
]
=
handler
;
pTask
=
GlobalLock16
(
GetCurrentTask
());
if
(
!
pTask
)
return
;
switch
(
intnum
)
{
case
0x00
:
pTask
->
int0
=
handler
;
break
;
case
0x02
:
pTask
->
int2
=
handler
;
break
;
case
0x04
:
pTask
->
int4
=
handler
;
break
;
case
0x06
:
pTask
->
int6
=
handler
;
break
;
case
0x07
:
pTask
->
int7
=
handler
;
break
;
case
0x3e
:
pTask
->
int3e
=
handler
;
break
;
case
0x75
:
pTask
->
int75
=
handler
;
break
;
default:
DOSVM_Vectors16
[
intnum
]
=
handler
;
break
;
}
}
...
...
include/task.h
View file @
83655771
...
...
@@ -98,13 +98,13 @@ typedef struct _TDB
FARPROC16
sighandler
WINE_PACKED
;
/* 26 Signal handler */
FARPROC16
userhandler
WINE_PACKED
;
/* 2a USER signal handler */
FARPROC16
discardhandler
WINE_PACKED
;
/* 2e Handler for GlobalNotify() */
DWORD
int0
WINE_PACKED
;
/* 32 int 0 (divide by 0) handler */
DWORD
int2
WINE_PACKED
;
/* 36 int 2 (NMI) handler */
DWORD
int4
WINE_PACKED
;
/* 3a int 4 (INTO) handler */
DWORD
int6
WINE_PACKED
;
/* 3e int 6 (invalid opc) handler */
DWORD
int7
WINE_PACKED
;
/* 42 int 7 (coprocessor) handler */
DWORD
int3e
WINE_PACKED
;
/* 46 int 3e (80x87 emu) handler */
DWORD
int75
WINE_PACKED
;
/* 4a int 75 (80x87 error) handler */
FARPROC16
int0
WINE_PACKED
;
/* 32 int 0 (divide by 0) handler */
FARPROC16
int2
WINE_PACKED
;
/* 36 int 2 (NMI) handler */
FARPROC16
int4
WINE_PACKED
;
/* 3a int 4 (INTO) handler */
FARPROC16
int6
WINE_PACKED
;
/* 3e int 6 (invalid opc) handler */
FARPROC16
int7
WINE_PACKED
;
/* 42 int 7 (coprocessor) handler */
FARPROC16
int3e
WINE_PACKED
;
/* 46 int 3e (80x87 emu) handler */
FARPROC16
int75
WINE_PACKED
;
/* 4a int 75 (80x87 error) handler */
DWORD
compat_flags
WINE_PACKED
;
/* 4e Compatibility flags */
BYTE
unused4
[
2
];
/* 52 */
struct
_TEB
*
teb
;
/* 54 Pointer to thread database */
...
...
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