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
98ed5585
Commit
98ed5585
authored
Oct 31, 2005
by
Marcus Meissner
Committed by
Alexandre Julliard
Oct 31, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added assembly implementation of EXC_CallHandler.
parent
3e6f31bf
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
1 deletion
+41
-1
exception.c
dlls/ntdll/exception.c
+9
-1
signal_i386.c
dlls/ntdll/signal_i386.c
+32
-0
No files found.
dlls/ntdll/exception.c
View file @
98ed5585
...
@@ -116,7 +116,10 @@ static DWORD EXC_UnwindHandler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RE
...
@@ -116,7 +116,10 @@ static DWORD EXC_UnwindHandler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RE
* happening during the handler execution.
* happening during the handler execution.
* Please do not change the first 4 parameters order in any way - some exceptions handlers
* Please do not change the first 4 parameters order in any way - some exceptions handlers
* rely on Base Pointer (EBP) to have a fixed position related to the exception frame
* rely on Base Pointer (EBP) to have a fixed position related to the exception frame
*
* For i386 this function is implemented in assembler in signal_i386.c.
*/
*/
#ifndef __i386__
static
DWORD
EXC_CallHandler
(
EXCEPTION_RECORD
*
record
,
EXCEPTION_REGISTRATION_RECORD
*
frame
,
static
DWORD
EXC_CallHandler
(
EXCEPTION_RECORD
*
record
,
EXCEPTION_REGISTRATION_RECORD
*
frame
,
CONTEXT
*
context
,
EXCEPTION_REGISTRATION_RECORD
**
dispatcher
,
CONTEXT
*
context
,
EXCEPTION_REGISTRATION_RECORD
**
dispatcher
,
PEXCEPTION_HANDLER
handler
,
PEXCEPTION_HANDLER
nested_handler
)
PEXCEPTION_HANDLER
handler
,
PEXCEPTION_HANDLER
nested_handler
)
...
@@ -134,7 +137,12 @@ static DWORD EXC_CallHandler( EXCEPTION_RECORD *record, EXCEPTION_REGISTRATION_R
...
@@ -134,7 +137,12 @@ static DWORD EXC_CallHandler( EXCEPTION_RECORD *record, EXCEPTION_REGISTRATION_R
__wine_pop_frame
(
&
newframe
.
frame
);
__wine_pop_frame
(
&
newframe
.
frame
);
return
ret
;
return
ret
;
}
}
#else
/* in signal_i386.c */
extern
DWORD
EXC_CallHandler
(
EXCEPTION_RECORD
*
record
,
EXCEPTION_REGISTRATION_RECORD
*
frame
,
CONTEXT
*
context
,
EXCEPTION_REGISTRATION_RECORD
**
dispatcher
,
PEXCEPTION_HANDLER
handler
,
PEXCEPTION_HANDLER
nested_handler
);
#endif
/**********************************************************************
/**********************************************************************
* send_debug_event
* send_debug_event
...
...
dlls/ntdll/signal_i386.c
View file @
98ed5585
...
@@ -1384,4 +1384,36 @@ __ASM_GLOBAL_FUNC( DbgBreakPoint, "int $3; ret");
...
@@ -1384,4 +1384,36 @@ __ASM_GLOBAL_FUNC( DbgBreakPoint, "int $3; ret");
*/
*/
__ASM_GLOBAL_FUNC
(
DbgUserBreakPoint
,
"int $3; ret"
);
__ASM_GLOBAL_FUNC
(
DbgUserBreakPoint
,
"int $3; ret"
);
/**********************************************************************
* EXC_CallHandler (internal)
*/
__ASM_GLOBAL_FUNC
(
EXC_CallHandler
,
" pushl %ebp
\n
"
" movl %esp, %ebp
\n
"
" subl $12, %esp
\n
"
" movl 28(%ebp), %eax
\n
"
" movl 12(%ebp), %edx
\n
"
" movl %eax, -8(%ebp)
\n
"
" movl %edx, -4(%ebp)
\n
"
" leal -12(%ebp), %eax
\n
"
" .byte 0x64
\n
"
" movl (0),%ecx
\n
"
" movl %ecx,(%eax)
\n
"
" .byte 0x64
\n
"
" movl %eax,(0)
\n
"
" movl 20(%ebp), %eax
\n
"
" pushl %eax
\n
"
" movl 16(%ebp), %eax
\n
"
" pushl %eax
\n
"
" movl 8(%ebp), %eax
\n
"
" pushl %edx
\n
"
" pushl %eax
\n
"
" call *24(%ebp)
\n
"
" movl -12(%ebp), %edx
\n
"
" .byte 0x64
\n
"
" movl %edx,(0)
\n
"
" leave
\n
"
" ret
\n
"
);
#endif
/* __i386__ */
#endif
/* __i386__ */
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