Rev 2787 | Rev 3424 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2787 | Rev 2918 | ||
---|---|---|---|
Line 129... | Line 129... | ||
129 | d->unused = 0; |
129 | d->unused = 0; |
130 | d->selector = selector(KTEXT_DES); |
130 | d->selector = selector(KTEXT_DES); |
131 | 131 | ||
132 | d->access = AR_PRESENT | AR_INTERRUPT; /* masking interrupt */ |
132 | d->access = AR_PRESENT | AR_INTERRUPT; /* masking interrupt */ |
133 | 133 | ||
134 | if (i == VECTOR_SYSCALL) { |
134 | if (i == VECTOR_SYSCALL || i == VECTOR_BREAKPOINT) { |
135 | /* |
135 | /* |
136 | * The syscall interrupt gate must be calleable from |
136 | * The syscall interrupt gate must be calleable from |
137 | * userland. |
137 | * userland. The same for breakpoint gate. |
138 | */ |
138 | */ |
139 | d->access |= DPL_USER; |
139 | d->access |= DPL_USER; |
140 | } |
140 | } |
141 | 141 | ||
142 | idt_setoffset(d, ((uintptr_t) interrupt_handlers) + |
142 | idt_setoffset(d, ((uintptr_t) interrupt_handlers) + |