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
