<snip>
I have been getting S0C4 on initialization to my Metal C program 
</snip>

Once again, you have not provided enough information for most of the 
readers of your post to help you.
Not every "Prolog code of Metal C program" has such a store of register 0. 
This is easily demonstrated.
Thus perhaps you in some way "told" the compiler that your linkage was 
such that it made sense to save register 0 into a variable called #WSA_1.
And the fix will be not to do that.

By the way, LOAD and BASR will not work if the target is AMODE 64.
LOAD returns a value in (64-bit) register 0 that is suitable for use by 
BASSM.
That happens to be OK for use by BASR in AMODEs 24 and 31 but not AMODE 
64.
Thus one approach that works regardless of AMODE is
  LGR   15,0
  BASSM 14,15

If you know that your target is AMODE 24/31 then LR and BASSM (or BASR) is 
OK.

Of course if you do have an AMODE 64 target, you need to make sure that 
you set up the interface according to its requirements, whatever they 
happen to be. Some AMODE 64 targets might be sensitive to "called by AMODE 
24/31" and some might not; some might require 8-byte register 1, with a 
parameter list of 8-byte pointers.

Peter Relson
z/OS Core Technology Design


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to