flat assembler
Message board for the users of flat assembler.

Index > OS Construction > fast system call

Thread Post new topic Reply to topic

Joined: 05 Mar 2010
Posts: 144
a115433 16 Mar 2010, 22:42
i have a problwem with sysenter, bochs, or my understanding of manual.
i belive its the third, but i never know.

sysenter/sysexit cant fail. they literally NEVER fail.
GDT limit is ignored, segments are ignored, i can even pass present flag to 0 and it will go as well.

of course limit/base is ignored as well, alogng with gate type, everything!

sysenter enter no matter what to ring0 wia CS/EIP from MSR.
sysexit also return no matter what to ring3, via MSR's calculated segments, and edx.

is it a bug? is it a prat of no-segment enforcement?
from what i remember about x86, from every single DAMNED RPL check i had to go through i see something like that...

Is it something wrong with manual? Maybe bochs? Or maybe intel?
They check rpl before task switches, but they dont even check is segments are within limits and if its present?!

im in ia32 protected mode, sysenter/sysexit. i want to solve this issue before touching ia32e mode (wich from manual i know that works like ia32 now - rewriting base and limit. but ia32 shouldnt do that).
Post 16 Mar 2010, 22:42
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.