hw_x86_64: Add supervisor call handling to Thread::exception

Forward supervisor calls to the Thread::_call function for dispatching.
This commit is contained in:
Reto Buerki 2015-02-27 14:10:50 +01:00 committed by Christian Helmuth
parent 0568dcc875
commit 83a1b826a3

View File

@ -15,16 +15,27 @@
/* core includes */
#include <kernel/thread.h>
using namespace Kernel;
enum Cpu_exception {
SUPERVISOR_CALL = 0x80,
};
using namespace Kernel;
Thread::Thread(unsigned const priority, unsigned const quota,
char const * const label)
:
Thread_base(this), Cpu_job(priority, quota), _state(AWAITS_START), _pd(0),
_utcb_phys(0), _signal_receiver(0), _label(label)
{ PDBG("not implemented"); }
_utcb_phys(0), _signal_receiver(0), _label(label) {}
void Thread::exception(unsigned const cpu) {
PDBG("not implemented"); }
void Thread::exception(unsigned const cpu)
{
if (trapno == SUPERVISOR_CALL) {
_call();
return;
} else {
PWRN("unknown exception 0x%lx", trapno);
_stop();
return;
}
}