c - How to check msr.le at runtime using built-ins? -


this question came in power8 in-core crypto patch. patch provides aes using power8 built-ins. when loading vsx register need perform 128-bit endian reversal when running on little-endian machine ensure vsx register loads proper value.

at compile time can check macros __byte_order__. however, believe supposed check machine status register @ runtime. if msr.le=1, perform endian swap. see altivec programming environment manual, section 3.1.4, p. 3-5.

how check machine status register @ runtime using built-ins?

you don't need - it's known @ compile time. instructions encoded incorrectly if you're running in opposite endianness of compiled code. so, os ensure program running in correct msr[le] setting endianness of executable.

in essence: msr[le] bit controls instructions data loads/stores.

there tricks can use detect endianness if have no idea, unless you're writing super boot code, won't need that.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -