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
