mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
Patch #1516912: improve Modules support for OpenVMS.
This commit is contained in:
parent
4a5fbda66d
commit
2a30cd0ef0
9 changed files with 154 additions and 63 deletions
|
@ -70,6 +70,10 @@ extern "C" {
|
|||
|
||||
#if defined(__FreeBSD__)
|
||||
# include <ieeefp.h>
|
||||
#elif defined(__VMS)
|
||||
#define __NEW_STARLET
|
||||
#include <starlet.h>
|
||||
#include <ieeedef.h>
|
||||
#endif
|
||||
|
||||
#ifndef WANT_SIGFPE_HANDLER
|
||||
|
@ -190,6 +194,19 @@ static void fpe_reset(Sigfunc *handler)
|
|||
|
||||
/*-- DEC ALPHA VMS --------------------------------------------------------*/
|
||||
#elif defined(__ALPHA) && defined(__VMS)
|
||||
IEEE clrmsk;
|
||||
IEEE setmsk;
|
||||
clrmsk.ieee$q_flags =
|
||||
IEEE$M_TRAP_ENABLE_UNF | IEEE$M_TRAP_ENABLE_INE |
|
||||
IEEE$M_MAP_UMZ;
|
||||
setmsk.ieee$q_flags =
|
||||
IEEE$M_TRAP_ENABLE_INV | IEEE$M_TRAP_ENABLE_DZE |
|
||||
IEEE$M_TRAP_ENABLE_OVF;
|
||||
sys$ieee_set_fp_control(&clrmsk, &setmsk, 0);
|
||||
PyOS_setsig(SIGFPE, handler);
|
||||
|
||||
/*-- HP IA64 VMS --------------------------------------------------------*/
|
||||
#elif defined(__ia64) && defined(__VMS)
|
||||
PyOS_setsig(SIGFPE, handler);
|
||||
|
||||
/*-- Cray Unicos ----------------------------------------------------------*/
|
||||
|
@ -244,6 +261,14 @@ static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args)
|
|||
#ifdef __FreeBSD__
|
||||
fpresetsticky(fpgetsticky());
|
||||
fpsetmask(0);
|
||||
#elif defined(__VMS)
|
||||
IEEE clrmsk;
|
||||
clrmsk.ieee$q_flags =
|
||||
IEEE$M_TRAP_ENABLE_UNF | IEEE$M_TRAP_ENABLE_INE |
|
||||
IEEE$M_MAP_UMZ | IEEE$M_TRAP_ENABLE_INV |
|
||||
IEEE$M_TRAP_ENABLE_DZE | IEEE$M_TRAP_ENABLE_OVF |
|
||||
IEEE$M_INHERIT;
|
||||
sys$ieee_set_fp_control(&clrmsk, 0, 0);
|
||||
#else
|
||||
fputs("Operation not implemented\n", stderr);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue