At 07:25 -0700 on 06/01/2012, Scott Ford wrote about Base registers:
Guys/Gals: I am the process of modifying our IRREVX01 and have a
fundamental question...Currently when the exit is called the prolog
looks like this: LOGEVX01 CSECT , LOGEVX01 AMODE 31 LOGEVX01 RMODE
ANY YREGS SAVE (14,12) LR R12,R15
program addressability USING LOGEVX01,R12 set base
register LR R10,R1 save parameter address
USING EVXPL,R10 base parameter map L
R3,EVXFLAGS exit flag address TM 0(R3),EVXPOST
post-exit ? BNO GOBACK if not, get out
Which works fine . I have added new code and exceeded the initial
register cover range of 4k ..I tried to add an addition base
register like this: LOGEVX01 CSECT , LOGEVX01 AMODE 31 LOGEVX01
RMODE ANY YREGS SAVE (14,12) LR
R12,R15 program addressability LA
R12,2048(R11) LA R12,2048(R12)
This should be:
LA R11,2048(R12)
LA R11,2048(R11)
You were destroying R12 by loading it with whatever was in R11+4096
USING LOGEVX01,R11,R12 set base register LR
R10,R1 save parameter address USING EVXPL,R10
base parameter map L R3,EVXFLAGS exit flag
address TM 0(R3),EVXPOST post-exit ? BNO
GOBACK if not, get out Assembled and liked the exit,
T PROG=xx , where xx is the parmlib member to delete the exit
Reloaded the exit via T PROG=yy to activate the exit . Ran a test
through the exit ( a RACF command ) and a S0C1-1 Without the
addition of the new lines for the second base register. The exit
works fine.. Either I blew it on the second base or IRREVX01 has a
size restriction ... Can someone point me the right way ?
Thanks in advance.. Regards Scott J Ford Software Engineer
http://www.identityforge.com