Chris Wright wrote: > +#define read_cr4_safe() ({ \ > + unsigned int __dummy; \ > + /* This could fault if %cr4 does not exist */ \ > + __asm__("1: movl %%cr4, %0 \n" \ > + "2: \n" \ > + ".section __ex_table,\"a\" \n" \ > + ".long 1b,2b \n" \ > + ".previous \n" \ > + : "=r" (__dummy): "0" (0)); \ > + __dummy; \ > +}) I think you'll find trap and emulate quite sufficient for this one. > +#define stts() write_cr0(8 | read_cr0()) > Nit: You shouldn't need to redefine stts() in the subarch.