> But the Binder surely has no way of knowing what the displacement will > be at run time. Whatever loads your routine (the main one - not the > low storage one) needs to know the address difference and update the > JLU at that time. How does it gain knowledge of the load point (0) of > your called routine? Presumably the load process that loads your main > routine doesn't also load a module starting at virtual address 0!
In an earlier post in this thread I mentioned that the two CSECTs are linked together (with many others) and then the resulting module is loaded at location 0. CSECT A starts at <some mystery location within the module> and CSECT B starts at <location 0 within the module>, so CSECT A can use JLU to branch to a location in "low storage" (aka CSECT B) using only the displacement from A to B within the load module. - mb
