Working off the standards laid out in the Assembler Services Guide as copied 
here:

Unless otherwise defined by the individual interface, the calling program should
expect, upon return, that
v The low halves (Bits 32-63) of GPRs 2 through 13 are unchanged
v The high halves (Bits 0-31) of GPRs 2 through 14 are unchanged
v ARs 2 through 13 are unchanged
v FPRs 8 through 15 are unchanged; The Floating Point Control (FPC) Register is
unchanged with the exception of two fields: the IEEE exception flags and the
data exception code (DXC).
v When return information is provided in GPR 0, 1, and/or 15 (for example return
and reason codes), only bits 32-63 of the register contain the returned value.

I use 64 bits of R15, R0, and R1 without saving/restoring them.  I also never 
count on them being the same over any kind of CALL or SVC interface.

Given that, I might try:

         LG    R1,STCKV2        ENDING STCK
         SGR   R1,STCKV1        MINUS START
         LGF   R15,PERCENTAGE   GET SCALE (ASSUMING IT WAS SAVED AS A FULLWORD)
         MLGR  R0,R15           ELAPSED * SCALE
         DLG   R0,=DF'100'      DIVIDE BY 100 TO GET PERCENTAGE
         STG   R1,RESULT        SAVE THE ANSWER

One poster pointed out you may not want all the bits of the clock, but that is 
something you can deal with outside of this.


Christopher Y. Blaicher
Senior Software Developer
Austin Development Lab

phone: 512.340.6154
mobile: 512.627.3803
fax: 512.340.6647

10431 Morado Circle
Austin, TX 78759

Reply via email to