mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-18 10:35:55 +00:00
MFi386 revisions 1.570 and 1.571.
This commit is contained in:
parent
916a70c619
commit
8278014bce
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=119988
@ -2057,7 +2057,7 @@ init386(first)
|
||||
* under witness.
|
||||
*/
|
||||
mutex_init();
|
||||
mtx_init(&clock_lock, "clk", NULL, MTX_SPIN | MTX_RECURSE);
|
||||
mtx_init(&clock_lock, "clk", NULL, MTX_SPIN);
|
||||
mtx_init(&icu_lock, "icu", NULL, MTX_SPIN | MTX_NOWITNESS);
|
||||
|
||||
/* make ldt memory segments */
|
||||
@ -2078,46 +2078,44 @@ init386(first)
|
||||
for (x = 0; x < NIDT; x++)
|
||||
setidt(x, &IDTVEC(rsvd), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(0, &IDTVEC(div), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_DE, &IDTVEC(div), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(1, &IDTVEC(dbg), SDT_SYS386IGT, SEL_KPL,
|
||||
setidt(IDT_DB, &IDTVEC(dbg), SDT_SYS386IGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(2, &IDTVEC(nmi), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(3, &IDTVEC(bpt), SDT_SYS386IGT, SEL_UPL,
|
||||
setidt(IDT_BP, &IDTVEC(bpt), SDT_SYS386IGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(4, &IDTVEC(ofl), SDT_SYS386TGT, SEL_UPL,
|
||||
setidt(IDT_OF, &IDTVEC(ofl), SDT_SYS386TGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(5, &IDTVEC(bnd), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_BR, &IDTVEC(bnd), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(6, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_UD, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(7, &IDTVEC(dna), SDT_SYS386TGT, SEL_KPL
|
||||
setidt(IDT_NM, &IDTVEC(dna), SDT_SYS386TGT, SEL_KPL
|
||||
, GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(8, 0, SDT_SYSTASKGT, SEL_KPL, GSEL(GPANIC_SEL, SEL_KPL));
|
||||
setidt(9, &IDTVEC(fpusegm), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_DF, 0, SDT_SYSTASKGT, SEL_KPL, GSEL(GPANIC_SEL, SEL_KPL));
|
||||
setidt(IDT_FPUGP, &IDTVEC(fpusegm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(10, &IDTVEC(tss), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_TS, &IDTVEC(tss), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(11, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_NP, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(12, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_SS, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_GP, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(14, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL,
|
||||
setidt(IDT_PF, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(15, &IDTVEC(rsvd), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_MF, &IDTVEC(fpu), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(16, &IDTVEC(fpu), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_AC, &IDTVEC(align), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(17, &IDTVEC(align), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_MC, &IDTVEC(mchk), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(18, &IDTVEC(mchk), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_XF, &IDTVEC(xmm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(19, &IDTVEC(xmm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(0x80, &IDTVEC(int0x80_syscall), SDT_SYS386TGT, SEL_UPL,
|
||||
setidt(IDT_SYSCALL, &IDTVEC(int0x80_syscall), SDT_SYS386TGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
|
||||
r_idt.rd_limit = sizeof(idt0) - 1;
|
||||
@ -2143,9 +2141,9 @@ init386(first)
|
||||
#endif
|
||||
|
||||
finishidentcpu(); /* Final stage of CPU initialization */
|
||||
setidt(6, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_UD, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_GP, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
initializecpu(); /* Initialize CPU registers */
|
||||
|
||||
@ -2776,7 +2774,6 @@ user_dbreg_trap(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#ifndef DDB
|
||||
void
|
||||
Debugger(const char *msg)
|
||||
|
@ -2057,7 +2057,7 @@ init386(first)
|
||||
* under witness.
|
||||
*/
|
||||
mutex_init();
|
||||
mtx_init(&clock_lock, "clk", NULL, MTX_SPIN | MTX_RECURSE);
|
||||
mtx_init(&clock_lock, "clk", NULL, MTX_SPIN);
|
||||
mtx_init(&icu_lock, "icu", NULL, MTX_SPIN | MTX_NOWITNESS);
|
||||
|
||||
/* make ldt memory segments */
|
||||
@ -2078,46 +2078,44 @@ init386(first)
|
||||
for (x = 0; x < NIDT; x++)
|
||||
setidt(x, &IDTVEC(rsvd), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(0, &IDTVEC(div), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_DE, &IDTVEC(div), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(1, &IDTVEC(dbg), SDT_SYS386IGT, SEL_KPL,
|
||||
setidt(IDT_DB, &IDTVEC(dbg), SDT_SYS386IGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(2, &IDTVEC(nmi), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(3, &IDTVEC(bpt), SDT_SYS386IGT, SEL_UPL,
|
||||
setidt(IDT_BP, &IDTVEC(bpt), SDT_SYS386IGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(4, &IDTVEC(ofl), SDT_SYS386TGT, SEL_UPL,
|
||||
setidt(IDT_OF, &IDTVEC(ofl), SDT_SYS386TGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(5, &IDTVEC(bnd), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_BR, &IDTVEC(bnd), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(6, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_UD, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(7, &IDTVEC(dna), SDT_SYS386TGT, SEL_KPL
|
||||
setidt(IDT_NM, &IDTVEC(dna), SDT_SYS386TGT, SEL_KPL
|
||||
, GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(8, 0, SDT_SYSTASKGT, SEL_KPL, GSEL(GPANIC_SEL, SEL_KPL));
|
||||
setidt(9, &IDTVEC(fpusegm), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_DF, 0, SDT_SYSTASKGT, SEL_KPL, GSEL(GPANIC_SEL, SEL_KPL));
|
||||
setidt(IDT_FPUGP, &IDTVEC(fpusegm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(10, &IDTVEC(tss), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_TS, &IDTVEC(tss), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(11, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_NP, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(12, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_SS, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_GP, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(14, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL,
|
||||
setidt(IDT_PF, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(15, &IDTVEC(rsvd), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_MF, &IDTVEC(fpu), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(16, &IDTVEC(fpu), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_AC, &IDTVEC(align), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(17, &IDTVEC(align), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_MC, &IDTVEC(mchk), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(18, &IDTVEC(mchk), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_XF, &IDTVEC(xmm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(19, &IDTVEC(xmm), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(0x80, &IDTVEC(int0x80_syscall), SDT_SYS386TGT, SEL_UPL,
|
||||
setidt(IDT_SYSCALL, &IDTVEC(int0x80_syscall), SDT_SYS386TGT, SEL_UPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
|
||||
r_idt.rd_limit = sizeof(idt0) - 1;
|
||||
@ -2143,9 +2141,9 @@ init386(first)
|
||||
#endif
|
||||
|
||||
finishidentcpu(); /* Final stage of CPU initialization */
|
||||
setidt(6, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_UD, &IDTVEC(ill), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
setidt(IDT_GP, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL,
|
||||
GSEL(GCODE_SEL, SEL_KPL));
|
||||
initializecpu(); /* Initialize CPU registers */
|
||||
|
||||
@ -2776,7 +2774,6 @@ user_dbreg_trap(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#ifndef DDB
|
||||
void
|
||||
Debugger(const char *msg)
|
||||
|
Loading…
Reference in New Issue
Block a user