mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-23 22:02:27 +00:00
[metal] Fix bug: do not initialize IDT & TSS if unneeded (#654)
libc/intrin/interrupts.S should not be linked in unless an IDT (or TSS) is explicitly requested somewhere (i.e. it should probably not be a mandatory module).
This commit is contained in:
parent
7a06760e6f
commit
31dab8a75d
3 changed files with 11 additions and 5 deletions
|
@ -569,8 +569,6 @@ HIDDEN(v_ape_realsectors =
|
||||||
HIDDEN(v_ape_realpages = v_ape_realsectors / (4096 / 512));
|
HIDDEN(v_ape_realpages = v_ape_realsectors / (4096 / 512));
|
||||||
HIDDEN(v_ape_highsectors =
|
HIDDEN(v_ape_highsectors =
|
||||||
(ROUNDUP(RVA(_edata), 512) / 512) - v_ape_realsectors);
|
(ROUNDUP(RVA(_edata), 512) / 512) - v_ape_realsectors);
|
||||||
PROVIDE_HIDDEN(_tss = 0);
|
|
||||||
PROVIDE_HIDDEN(_tss_end = 0);
|
|
||||||
TSSDESCSTUB2(_tss, _tss, _tss_end ? _tss_end - _tss - 1 : 0);
|
TSSDESCSTUB2(_tss, _tss, _tss_end ? _tss_end - _tss - 1 : 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,14 @@
|
||||||
|
|
||||||
// Task State Segment Descriptor Entries.
|
// Task State Segment Descriptor Entries.
|
||||||
.macro .tssdescstub name:req
|
.macro .tssdescstub name:req
|
||||||
|
.ifndef \name
|
||||||
|
.weak \name
|
||||||
|
.set \name,0
|
||||||
|
.endif
|
||||||
|
.ifndef \name\()_end
|
||||||
|
.weak \name\()_end
|
||||||
|
.set \name\()_end,0
|
||||||
|
.endif
|
||||||
.stub \name\()_desc_ent0,quad
|
.stub \name\()_desc_ent0,quad
|
||||||
.stub \name\()_desc_ent1,quad
|
.stub \name\()_desc_ent1,quad
|
||||||
.endm
|
.endm
|
||||||
|
|
|
@ -93,9 +93,9 @@ __excep0_isr:
|
||||||
ezlea .excep_msg,di # stack should be 16-byte aligned now
|
ezlea .excep_msg,di # stack should be 16-byte aligned now
|
||||||
xor %eax,%eax # kprintf is variadic, remember to
|
xor %eax,%eax # kprintf is variadic, remember to
|
||||||
# pass no. of vector regs. used (= 0)
|
# pass no. of vector regs. used (= 0)
|
||||||
.weak kprintf # weakly link kprintf() because this
|
.weak kprintf # weakly link kprintf() because we
|
||||||
ezlea kprintf,bx # module is a mandatory dependency
|
ezlea kprintf,bx # want to keep life.com tiny
|
||||||
test %ebx,%ebx # and we want to keep life.com tiny
|
test %ebx,%ebx
|
||||||
jz 8f
|
jz 8f
|
||||||
call *%rbx # print error message
|
call *%rbx # print error message
|
||||||
8: cli
|
8: cli
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue