> However, since it's contained in a u64 pointer, it must reasonably be on > an 8 byte boundary (or be triggering an unaligned poiner error) and > therefore shouldn't span multiple cache lines anyway. It's not a hard rule that u64 objects be aligned on an 8 byte boundary as the PA 1.x architecture doesn't have 64-bit integer loads and stores. A u64 object has to be loaded with two 32-bit loads and lives in a pair of 32-bit registers. As a result, an unaligned u64 object will only trigger an unaligned pointer error if it is not aligned on a 4 byte boundary. However in GCC, we force u64 alignment (except in packed structs) to a 8 byte boundary. This allows casting pointers between long longs and doubles. It also simplifies the GCC backend as otherwise special treatment would be needed for long longs. There's been some discussion of this for x86 recently. In this situation, the alignment of pdir's depends on how they were originally declared. If declared as long long, GCC will give them 8 byte alignment, so the two words should always be in the same cache line. On the otherhand, if the pdir is declared as a pair of 32-bit words, the pdir might span two cache lines. Dave -- J. David Anglin dave.anglin@xxxxxxxxxxxxxx National Research Council of Canada (613) 990-0752 (FAX: 952-6602) -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html