On Tue, Dec 8, 2020 at 7:31 AM H.J. Lu wrote: > > On Tue, Dec 8, 2020 at 7:16 AM Florian Weimer wrote: > > > > * H. J. Lu: > > > > >> > For each file entry for a shared object, the hwcap field has been used by > > >> > DL_CACHE_HWCAP_EXTENSION for glibc-hwcaps. Are you suggesting > > >> > to add another file entry for the same shared object to store ISA level > > >> > requirement? > > >> > > >> It's a 64-bit field. We do this: > > >> > > >> /* This bit in the hwcap field of struct file_entry_new indicates that > > >> the lower 32 bits contain an index into the > > >> cache_extension_tag_glibc_hwcaps section. Older glibc versions do > > >> not know about this HWCAP bit, so they will ignore these > > >> entries. */ > > >> #define DL_CACHE_HWCAP_EXTENSION (1ULL << 62) > > >> > > >> /* Return true if the ENTRY->hwcap value indicates that > > >> DL_CACHE_HWCAP_EXTENSION is used. */ > > >> static inline bool > > >> dl_cache_hwcap_extension (struct file_entry_new *entry) > > >> { > > >> /* If DL_CACHE_HWCAP_EXTENSION is set, but other bits as well, this > > >> is a different kind of extension. */ > > >> return (entry->hwcap >> 32) == (DL_CACHE_HWCAP_EXTENSION >> 32); > > >> } > > >> > > >> So we can use a different bit pattern involving DL_CACHE_HWCAP_EXTENSION > > >> to express something else. In particular, only the lower 32 bits are > > >> currently used as an index. > > > > > > So bits 33-47 can be used for ISA level requirement. This should support > > > 65536 ISA levels. > > > > The question is whether the ISA levels and the glibc-hwcaps name are > > used in parallel. If not, we can use (1ULL << 62) | (1ULL << 32) as > > the marker bits and a 32-bit index in the lower half. > > > > (I do not think this is necessarily relevant for levels, but it could be > > used for locating objects according to other criteria.) > > > > I think ISA level and glibc-hwcaps should go together. > Here is the patch to store ISA level in the portion of the unused upper 32 bits of the hwcaps field in cache and the unused pad field in aux cache. -- H.J.