author: kx <kx@radix-linux.su> 2024-12-28 23:52:17 +0300
committer: kx <kx@radix-linux.su> 2024-12-28 23:52:17 +0300
commit: 31f615c1e5a07398bdd68c74b81fbe64c45f169a
parent: 07a2b4814e54523bee9733655d165dfa70643565
Commit Summary:
Diffstat:
2 files changed, 42 insertions, 0 deletions
diff --git a/include/libmpu.h.in b/include/libmpu.h.in
index f8f9dee..9a8d59f 100644
--- a/include/libmpu.h.in
+++ b/include/libmpu.h.in
@@ -140,6 +140,17 @@ extern void __mpu_clear_rflags( void );
extern void __mpu_clear_mflags( void );
+/* Get integer flags: */
+extern int __mpu_gta( void );
+extern int __mpu_gtc( void );
+extern int __mpu_gto( void );
+extern int __mpu_gts( void );
+extern int __mpu_gtp( void );
+extern int __mpu_gtz( void );
+extern int __mpu_gtr( void );
+extern int __mpu_gtv( void );
+
+/* Set integer flags: */
extern void __mpu_sta( void );
extern void __mpu_stc( void );
extern void __mpu_sto( void );
@@ -149,6 +160,7 @@ extern void __mpu_stz( void );
extern void __mpu_str( void );
extern void __mpu_stv( void );
+/* Clear integer flags: */
extern void __mpu_cla( void );
extern void __mpu_clc( void );
extern void __mpu_clo( void );
@@ -158,6 +170,7 @@ extern void __mpu_clz( void );
extern void __mpu_clr( void );
extern void __mpu_clv( void );
+/* Complement integer flags: */
extern void __mpu_cma( void );
extern void __mpu_cmc( void );
extern void __mpu_cmo( void );
@@ -168,6 +181,17 @@ extern void __mpu_cmr( void );
extern void __mpu_cmv( void );
+/* Get real flags: */
+extern int __mpu_gtdom( void );
+extern int __mpu_gtsng( void );
+extern int __mpu_gtovf( void );
+extern int __mpu_gtudf( void );
+extern int __mpu_gttls( void );
+extern int __mpu_gtpls( void );
+extern int __mpu_gtind( void );
+extern int __mpu_gtinx( void );
+
+/* Set real flags: */
extern void __mpu_stdom( void );
extern void __mpu_stsng( void );
extern void __mpu_stovf( void );
@@ -177,6 +201,7 @@ extern void __mpu_stpls( void );
extern void __mpu_stind( void );
extern void __mpu_stinx( void );
+/* Clear real flags: */
extern void __mpu_cldom( void );
extern void __mpu_clsng( void );
extern void __mpu_clovf( void );
@@ -186,6 +211,7 @@ extern void __mpu_clpls( void );
extern void __mpu_clind( void );
extern void __mpu_clinx( void );
+/* Complement real flags: */
extern void __mpu_cmdom( void );
extern void __mpu_cmsng( void );
extern void __mpu_cmovf( void );
diff --git a/mpu/mpu-context.c b/mpu/mpu-context.c
index 7b0308e..8e89eb8 100644
--- a/mpu/mpu-context.c
+++ b/mpu/mpu-context.c
@@ -116,6 +116,15 @@ void __mpu_clear_rflags( void ) { __CLEAR_RFLAGS; }
void __mpu_clear_mflags( void ) { __CLEAR_MFLAGS; }
+int __mpu_gta( void ) { return __MFLAG( AF ); }
+int __mpu_gtc( void ) { return __MFLAG( CF ); }
+int __mpu_gto( void ) { return __MFLAG( OF ); }
+int __mpu_gts( void ) { return __MFLAG( SF ); }
+int __mpu_gtp( void ) { return __MFLAG( PF ); }
+int __mpu_gtz( void ) { return __MFLAG( ZF ); }
+int __mpu_gtr( void ) { return __MFLAG( RF ); }
+int __mpu_gtv( void ) { return __MFLAG( VF ); }
+
void __mpu_sta( void ) { __STA; }
void __mpu_stc( void ) { __STC; }
void __mpu_sto( void ) { __STO; }
@@ -144,6 +153,15 @@ void __mpu_cmr( void ) { __CMR; }
void __mpu_cmv( void ) { __CMV; }
+int __mpu_gtdom( void ) { return __MFLAG( DOMF ); }
+int __mpu_gtsng( void ) { return __MFLAG( SNGF ); }
+int __mpu_gtovf( void ) { return __MFLAG( OVFF ); }
+int __mpu_gtudf( void ) { return __MFLAG( UDFF ); }
+int __mpu_gttls( void ) { return __MFLAG( TLSF ); }
+int __mpu_gtpls( void ) { return __MFLAG( PLSF ); }
+int __mpu_gtind( void ) { return __MFLAG( INDF ); }
+int __mpu_gtinx( void ) { return __MFLAG( INXF ); }
+
void __mpu_stdom( void ) { __STDOM; }
void __mpu_stsng( void ) { __STSNG; }
void __mpu_stovf( void ) { __STOVF; }