Access the |X86ISA|::|FSGSBASE| field of a cr4bits bit structure.
Function:
(defun cr4bits->fsgsbase$inline (x) (declare (xargs :guard (cr4bits-p x))) (mbe :logic (let ((x (cr4bits-fix x))) (part-select x :low 16 :width 1)) :exec (the (unsigned-byte 1) (logand (the (unsigned-byte 1) 1) (the (unsigned-byte 10) (ash (the (unsigned-byte 26) x) -16))))))
Theorem:
(defthm bitp-of-cr4bits->fsgsbase (b* ((fsgsbase (cr4bits->fsgsbase$inline x))) (bitp fsgsbase)) :rule-classes :rewrite)
Theorem:
(defthm cr4bits->fsgsbase$inline-of-cr4bits-fix-x (equal (cr4bits->fsgsbase$inline (cr4bits-fix x)) (cr4bits->fsgsbase$inline x)))
Theorem:
(defthm cr4bits->fsgsbase$inline-cr4bits-equiv-congruence-on-x (implies (cr4bits-equiv x x-equiv) (equal (cr4bits->fsgsbase$inline x) (cr4bits->fsgsbase$inline x-equiv))) :rule-classes :congruence)
Theorem:
(defthm cr4bits->fsgsbase-of-cr4bits (equal (cr4bits->fsgsbase (cr4bits vme pvi tsd de pse pae mce pge pce osfxsr osxmmexcpt umip la57 vmxe smxe res1 fsgsbase pcide osxsave kl smep smap pke cet pks uintr)) (bfix fsgsbase)))
Theorem:
(defthm cr4bits->fsgsbase-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x cr4bits-equiv-under-mask) (cr4bits-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 65536) 0)) (equal (cr4bits->fsgsbase x) (cr4bits->fsgsbase y))))