Paging and system calls

Kasim Sinan Yildirim (yildirim@bilmuh.ege.edu.tr)
Mon, 28 Apr 2003 14:48:08 +0200


Hi,

I am working on a small kernel and i am examining the source code of the
linux.

Since every task has its own page tables, when task switching occurs, the
cr3 field of the TSS is put to the cr3 register which is page directory base
register.

Ưn my operating system, when a system call occurs, the user level code jumps
to system level code by changing its selectors to KernelCS and KernelDS. But
at this point, the cr3 register still points to the page directory of the
user process. So, the actual code that is pointed by kernel level page
directory is not equal to the user level page directory entry. As a result ,
the system fails.

How this problem is solved in Linux? Have you got any solution to my problem?

Thanks...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/