.text and .exceptions will contain NIOS instructions. Your linker script shows .text being placed into 'data_memory' Shouldn't it be placed in 'direct_window_bridge_0'
edit:
Also, the Qsys warning (at least on 12.1) is:
--- Quote Start ---
Warning: System.nios2_qsys_0: The address range of the slaves connected to the Nios II instruction masters exceeds 28 bits. Attempts to call functions across 28-bit boundaries is not supported by GCC and will result in linker errors.
--- Quote End ---
It isn't saying you can't connect the instruction master to a memory wider than 28 bits. It's saying you can't have instructions located on either side of a 28-bit boundary and expect it to work.
So I think much of your work was not necessary?