Posted: Sun Feb 17, 2008 7:56 am
ok i'm pretty sure i know what the problem is, even though i haven#t yet a solution for it:
my keyboard interrupt procedure avails of other kernel subroutines. one of them is of course the putchar procedure. this procedure writes to video memory. because my ring3 tasks must of course not be allowed to write to video memory, they dont have the necessary selector for this segment in their tss..so when a keyboard int occurs,, a new cs is loaded, but the data segment selectors in ds, es, fs, and gs are stil the ones the ring3 task uses!!! completely forgot about that!
my keyboard interrupt procedure avails of other kernel subroutines. one of them is of course the putchar procedure. this procedure writes to video memory. because my ring3 tasks must of course not be allowed to write to video memory, they dont have the necessary selector for this segment in their tss..so when a keyboard int occurs,, a new cs is loaded, but the data segment selectors in ds, es, fs, and gs are stil the ones the ring3 task uses!!! completely forgot about that!