On Fri, Oct 2, 2015 at 7:49 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > On 02/10/2015 00:48, Linus Torvalds wrote: >> It's quite likely that you will find that compilers put read-only >> constants in the text section, knowing that executable means readable. > > Not on x86 (because it has large immediates; RISC machines and s390 do > put large constants in the text section). > > But at the very least jump tables reside in the .text seection. Yes, at least traditionally gcc put things like the jump tables for switch() statements immediately next to the code. That caused lots of pain on the P4, where the L1 I$ and D$ were exclusive. I think that caused gcc to then put the jump tables further away, and it might be in a separate section these days - but it might also just be "sufficiently aligned" that the L1 cache issue isn't in play any more. Anyway, because of the P4 exclusive L1 I/D$ issue we can pretty much rest easy knowing that the data accesses and text accesses should be separated by at least one cacheline (maybe even 128 bytes - I think the L4 used 64-byte line size, but it was sub-sections of a 128-byte bigger line - but that might have been in the L2 only). But I could easily see the compiler/linker still putting them in the same ELF segment. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>