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
4a831ec7
Commit
4a831ec7
authored
Mar 08, 2007
by
Peter Beutner
Committed by
Alexandre Julliard
Mar 09, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Handle SIMD exceptions.
parent
f09f9ef5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
1 deletion
+15
-1
signal_i386.c
dlls/ntdll/signal_i386.c
+15
-1
No files found.
dlls/ntdll/signal_i386.c
View file @
4a831ec7
...
...
@@ -324,7 +324,8 @@ enum i386_trap_code
TRAP_x86_ARITHTRAP
=
16
,
/* Floating point exception */
TRAP_x86_ALIGNFLT
=
17
,
/* Alignment check exception */
TRAP_x86_MCHK
=
18
,
/* Machine check exception */
TRAP_x86_CACHEFLT
=
19
/* Cache flush exception */
TRAP_x86_CACHEFLT
=
19
/* SIMD exception (via SIGFPE) if CPU is SSE capable
otherwise Cache flush exception (via SIGSEV) */
#endif
};
...
...
@@ -1210,6 +1211,19 @@ static void fpe_handler( int signal, siginfo_t *siginfo, void *sigcontext )
case
TRAP_x86_UNKNOWN
:
/* Unknown fault code */
rec
->
ExceptionCode
=
get_fpu_code
(
win_context
);
break
;
case
TRAP_x86_CACHEFLT
:
/* SIMD exception */
/* TODO:
* Behaviour only tested for divide-by-zero exceptions
* Check for other SIMD exceptions as well */
if
(
siginfo
->
si_code
!=
FPE_FLTDIV
)
FIXME
(
"untested SIMD exception: %#x. Might not work correctly
\n
"
,
siginfo
->
si_code
);
rec
->
ExceptionCode
=
STATUS_FLOAT_MULTIPLE_TRAPS
;
rec
->
NumberParameters
=
1
;
/* no idea what meaning is actually behind this but thats what native does */
rec
->
ExceptionInformation
[
0
]
=
0
;
break
;
default:
ERR
(
"Got unexpected trap %d
\n
"
,
get_trap_code
(
context
)
);
rec
->
ExceptionCode
=
EXCEPTION_FLT_INVALID_OPERATION
;
...
...
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