I'm not aware of any clash between instruction cache and data
cache for constant data such as literals.  The problems occur
when writing data, in that the resulting cache line update may
cause any instructions within the same line to be invalidated so
they have to be fetched again.  So if a non-reentrant program
contains a writable data area, one solution for the current
usual cache line size of 256 bytes is to add 256 bytes of dummy
padding before the read/write data area (and another 256 after
it if additional code will be compiled or linked after that
point).  The VS Fortran compiler has an option to generate 256
bytes of padding for this purpose.

The current versions of the ORG and CNOP instruction have a
boundary operand and can align the following data to a 256-byte
boundary relative to the start of the current section.  However,
that alignment is only useful if the section itself is also
aligned to the same boundary or stronger, for example a 4K page
boundary.

Note that if you try to align data more strongly than the
section alignment and you do not have the fix for APAR PH40885
(from October 2021) then HLASM does not only warn about the
alignment but it may also either ignore the alignment request or
totally discard the statement.  With the fix, it follows the
usual rule for a warning that it generates the code anyway as
requested.

Jonathan Scott, HLASM
IBM Hursley, UK

Reply via email to