|
|
Power 6/32 Unix version 1.21
/*
*
* @(#)traper_.s 8/27/85
*
*
* To use from f77:
* integer oldmsk, traper
* oldmsk = traper (mask)
* where:
* mask = 0 to trap neither
* mask = 1 to trap integer overflow
* mask = 2 to trap floating underflow
* mask = 3 to trap both
* These 2 bits will be set into the PSL.
* The old state will be returned.
* Assumptions:
* - the two bits are contiguous in PSL;
* - integer overflow trap enable bit < floating underflow trap enable bit;
*/
# include <machine/psl.h>
unsigned long old_msk;
unsigned short new_msk;
unsigned long tst_msk;
long traper_(msk)
long *msk;
{
#define IOV_MASK (PSL_IV | PSL_FU)
#define IOV_DISP 5
asm(" movpsl _old_msk");
old_msk = (old_msk & IOV_MASK) >> IOV_DISP;
new_msk = (*msk << IOV_DISP) & IOV_MASK;
asm(" bispsw _new_msk");
new_msk = ~(*msk << IOV_DISP) & IOV_MASK;
asm(" bicpsw _new_msk");
return(old_msk);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.