> 2) Has anyone built a simple assembler program using
> IARV64 to get 64-bit virtual storage, that we can run
> on a test LPAR to check reality and see what TMON and
> RMF see of the 64-bit virtual workload, if anything.
> If so, can you share the program source?
>
Michael, both of these examples were written for simple 64-bit linkage
testing. You can easily stick in the IARV64 macro to mess with storage
above the bar. Assemble these and linkedit so you don't override the
amode/rmode attributes. The first one (SIXTY4) uses BAKR/PR and the second
one (SIXTY4SA) uses the 64-bit register save area linkage.
Todd
SIXTY4 CSECT
SIXTY4 AMODE 64
SIXTY4 RMODE ANY
*
***********************************************************************
* USE THE SYSSTATE MACRO TO SET MACRO GLOBALS *
***********************************************************************
SYSSTATE ASCENV=P,AMODE64=YES,ARCHLVL=2
*
BAKR R14,0 SAVE GPRS AND ARS IN LINKAGE STACK
*
***********************************************************************
* IF ACTUALLY ENTERED IN 64 BIT MODE, *
* ON ENTRY, R15 DOES NOT CONTAIN THE EPA. *
***********************************************************************
CNOP 0,4
BRAS R12,*+8 POINT R12 TO THE ACON FOR THE MODULE
DC A(SIXTY4)
L R12,0(,R12) NOW, WE HAVE ADDRESSABILITY
USING SIXTY4,R12
LAM R12,R12,=A(0) CLEAR AR
*
TAM TEST ADDRESSING MODE
BC 1,IN64
BC 4,IN31
BC 8,IN24
MYEXEC EX R1,MYEXEC S0C3 WILL NEVER OCCUR
*
IN64 DS 0H
WTO '64: CURRENTLY IN 64.',DESC=(6),ROUTCDE=(11),MF=I
*
STORAGE OBTAIN,LENGTH=144,LOC=(RES,64) 36 WORD AREA
LAE R13,0(,R1) SAVE --> TO AREA
*
XC 0(72,R13),0(R13) CLEAR AREA
MVC 4(4,R13),=C'F4SA' INDICATE REGS SAVED ON STACK
*
*
* DO ANY WORK HERE.
*
*
*
EXIT DS 0H
STORAGE RELEASE,ADDR=(R13),LENGTH=144
LA R15,0 RC = 0
PR , PROGRAM RETURN
*
UNKNOWN_MODE DS 0H
WTO '64: UNKNOWN ADDRESSING MODE.', X
DESC=(6),ROUTCDE=(11),MF=I
B EXIT
*
IN24 DS 0H
SAM64
WTO '64: WAS 24, NOW 64.',DESC=(6),ROUTCDE=(11),MF=I
B IN64
*
IN31 DS 0H
SAM64
WTO '64: WAS 31, NOW 64.',DESC=(6),ROUTCDE=(11),MF=I
B IN64
*
LTORG
*
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
END
SIXTY4SA CSECT
SIXTY4SA AMODE 64
SIXTY4SA RMODE ANY
*
***********************************************************************
* *
* USE THE SYSSTATE MACRO TO SET MACRO GLOBALS *
* *
* ASCENV=P MEANS PRIMARY ADDRESS SPACE MODE *
* AMODE64=YES MEANS FOR MACRO EXPANSIONS TO SUPOPRT 64 BIT *
* ARCHLVL=2 MEANS THE HIGHEST Z/OS ACRHTIECTURE LEVEL *
* *
***********************************************************************
SYSSTATE ASCENV=P,AMODE64=YES,ARCHLVL=2
*
***********************************************************************
* *
* SAVE 64 BIT GPRS IN CALLER'S SAVE AREA *
* SEE IHASAVER FOR FORMAT OF THE SAVE AREA. *
* *
***********************************************************************
*
STMG R14,R12,SAVF4SAG64RS14-SAVF4SA(R13)
*
***********************************************************************
* *
* IF ACTUALLY ENTERED IN 64 BIT MODE, *
* ON ENTRY, R15 DOES NOT CONTAIN THE EPA. *
* *
* THEREFORE, WE HAVE TO USE RELATIVE BRANCHING TO ESTABLISH *
* OUR ADDRESS. *
* *
***********************************************************************
*
CNOP 0,4 FULLWORD ALIGNMNENT FOR THE ACON
BRAS R12,MYSTART POINT R12 TO THE ACON FOR THE MODULE
*
DC A(SIXTY4SA)
*
***********************************************************************
* LLGF LOADS A 4 BYTE VALUE INTO AN 8 BYTE REG *
* *
* I COULD HAVE ALSO USED: *
* *
* LA R12,0(,R12) OR *
* LA R12,0(R12) *
* *
***********************************************************************
*
MYSTART DS 0H
LLGF R12,0(,R12) NOW, WE HAVE ADDRESSABILITY
USING SIXTY4SA,R12
*
TAM TEST ADDRESSING MODE
BC 1,IN64
BC 4,IN31
BC 8,IN24
MYEXEC EX R1,MYEXEC
*
IN64 DS 0H
WTO '64: CURRENTLY IN 64.',DESC=(6),ROUTCDE=(11),MF=I
*
***********************************************************************
* *
* PUT THE LENGTH OF THE WORKAREA INTO R3. *
* LA WORKS ON ALL 64 BITS. *
* *
***********************************************************************
*
LA R3,WORKLENG LENGTH OF STORAGE NEEDED
STORAGE OBTAIN,LENGTH=(R3),LOC=(RES,64)
LGR R10,R1 --> GOTTEN AREA
USING WORKAREA,R10
*
XC WORKAREA(WORKLENG),WORKAREA CLEAR AREA
STG R3,WORKSIZE SAVE LENGTH OF STORAGE
$SA USING SAVF4SA,SAVEAREA
MVC $SA.SAVF4SAID,=A(SAVF4SAID_VALUE)
STG R13,$SA.SAVF4SAPREV PREVIOUS SAVE AREA
DROP $SA
LA R1,SAVEAREA MY SAVE AREA
STG R1,SAVF4SANEXT-SAVF4SA(,R13) PUT MY SA IN CALLER'S NEXT
LGR R13,R1 R13 -> MY SAVEA IN WORKAREA
*
***********************************************************************
* ENTRY LINKAGE IS COMPLETE. *
***********************************************************************
*
*
* DO ANY WORK HERE
*
*
B EXIT DONE
*
***********************************************************************
* RESTORE REGS FROM CALLER'S SAVEAREA. *
***********************************************************************
*
EXIT DS 0H
$SA USING SAVF4SA,SAVEAREA
LG R13,$SA.SAVF4SAPREV
DROP $SA
*
LG R3,WORKSIZE
STORAGE RELEASE,ADDR=(R10),LENGTH=(R3)
*
LA R15,0 RC = 0
LG R14,SAVF4SAG64RS14-SAVF4SA(R13) RESTORE R14
LMG R0,R12,SAVF4SAG64RS0-SAVF4SA(R13) RESTORE REST OF REGS
BSM 0,R14 RETURN
*
UNKNOWN_MODE DS 0H
WTO '64: UNKNOWN ADDRESSING MODE.', X
DESC=(6),ROUTCDE=(11),MF=I
B EXIT
*
IN24 DS 0H
SAM64
WTO '64: WAS 24, NOW 64.',DESC=(6),ROUTCDE=(11),MF=I
B IN64
*
IN31 DS 0H
SAM64
WTO '64: WAS 31, NOW 64.',DESC=(6),ROUTCDE=(11),MF=I
B IN64
*
LTORG
*
WORKAREA DSECT
WORKSIZE DS D
SAVEAREA DS 0D,XL(SAVF4SA_LEN)
WORKLENG EQU *-WORKAREA
*
IHASAVER
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
END
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html