In article <[email protected]> you wrote:

(snip)

> I have isolated the ABEND to a call to a self-written assembler function
> called ISAUTH. I execute a printf() immediately before the call but not a
> printf() after. I am posting below the entire code of ISAUTH. CDSALEN has a
> value of x'60C'. I think other than that the code snippet is self-contained.
 
(snip)    
> It used to work. What changed? I added some functions and the module grew to
> have addressability problems, so I added an IEABRCX DEFINE. I have eyeballed
> the code generated by EDCPRLG and it appears correct -- now with a BRC 15
> instead of a B. It would be inconvenient to get the IEABRCX back out of
> there as a test.

Can you post the expansions of EDCPRLG and EDCEPIL?

I presume they do save and restoring of registers, and appropriate
save area linkage, but it would be nice to see the expansion.
 
> The function is declared in C++ as extern "OS" {bool ISAUTH();}. The other
> functions are declared similarly.
 
> AMODE 31/XPLINK(NO)
 
> Does anyone have any clues?
 
> ISAUTH   EDCPRLG DSALEN=CDSALEN,BASEREG=NONE
>         LARL  R12,CZAMISC
>         USING CZAMISC,R12
> *
> *  ***   USING CDSASTOR,R13         Use R13 as base for reentrant store
> *
> *  Issue the TESTAUTH
>         TESTAUTH FCTN=1
> *
> *  TESTAUTH returns 0 = yes, 4 = no
> *  We return 1 = yes, 0 = no
>         SRL   R15,2               Convert 4 into 1
>         LCR   R15,R15             Convert 1 into -1
>         AHI   R15,1               Convert 1 into 0 and 0 into 1
> *
> *  ***   J     Ret_R15            Return whatever is in R15
>         EDCEPIL ,

-- glen

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to