/***************************************************************************** * * * C P U * * * *---------------------------------------------------------------------------* * Beschreibung: Implementierung einer Abstraktion fuer den Prozessor. * * Derzeit wird nur angeboten, Interrupts zuzulassen, zu * * verbieten oder den Prozessor anzuhalten. * * * * Autor: Michael Schoettner, 30.7.16 * *****************************************************************************/ #ifndef __CPU_include__ #define __CPU_include__ class CPU { private: CPU(const CPU ©); // Verhindere Kopieren public: CPU() {} // Erlauben von (Hardware-)Interrupts inline void enable_int () { asm volatile ( "sti" ); } // Interrupts werden ignoriert/verboten inline void disable_int () { asm volatile ( "cli" ); } // Prozessor bis zum naechsten Interrupt anhalten inline void idle () { asm volatile ( "sti;" "hlt" ); } // Prozessor anhalten inline void halt () { asm volatile ( "cli;" "hlt" ); } // Time-Stamp-Counter auslesen inline unsigned long long int rdtsc() { unsigned long long int ret; asm volatile ( "rdtsc" : "=A"(ret) ); return ret; } }; #endif