Thank you for your suggestions so far.

The base register for the literals is no problem;
the literal pool is at the end macro of the subroutine and is covered by
a base register.
In fact, I solved some of the issues by changing
LA  Rx,constant
to
L  RX,=A(constant)
which works in the baseless case.
The key is: no base registers cover the code area, but there is a base
register
which covers the static data area.

There is also a LOOP macro in the SP macro set, which generates in some
cases
(in the NORENT case) a decimal loop counter, which is in defined inline,
near the
loop instructions. This is problematic because of two things:

- first, this loop counter cannot be reached in the baseless case,

- second, because there are stores near the instruction stream, the
I-cache is
always invalidated, which is IMHO a performance issue.

I solved this by moving the definitions of those LOOP counters from
inline to
the END macro of the subroutine; all the LOOP counters (their names and
attributes)
are stored in macro variable vectors and generated at the end of the
subroutine, that
is, not inline, but after the instruction stream, where they are covered
by the data
base register.

Kind regards

Bernd



Am 05.04.2013 22:11, schrieb Farley, Peter x23353:
Ed,

That works for the CALL only if the parameters are not in a dynamic area in a DSECT 
somewhere.  For the GETMAIN, note that the "L" for the literal loaded into R15 
requires a base register able to address the LTORG area.

Peter


Reply via email to