#include <sys/monitor.h>
#include <dios/kernel.hpp>

volatile int glob;

bool isZero() { return glob == 0; }

struct GlobMon : public __dios::Monitor {
    void step( __dios::Context& ) {
        if ( !isZero() )
            __vm_control( _VM_CA_Bit, _VM_CR_Flags, _VM_CF_Error, _VM_CF_Error ); /* ERROR */
    }
};

int main() {
    for ( int i = 0; i != 2; i++ )
        glob = glob ? 0 : 1;

    __dios::register_monitor( __dios::new_object< GlobMon >() );

    for ( int i = 0; i != 2; i++ )
        glob = glob ? 0 : 1;
}