> 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

Reply via email to