Subject: Re: SR_INT_IE bit in syscall().
To: None <port-mips@netbsd.org>
From: Toru Nishimura <nisimura@itc.aist-nara.ac.jp>
List: port-mips
Date: 09/16/2000 14:52:24
>> I just removed the code to examine-and-reenable SR_INT_IE bit in
>> syscall(). The bit was turned on when system call exception is
>> received. I believe in MIPS3 can run harmlessly, but would like to
>> know whether that really makes no trouble. I checked the new with
>> R3000A.
>
> I will try and let you know.
>
> For syscalls, where do interrupts get re-enabled now?
Inside locore_mips{1,3}.S assembler hooks.
- When MIPS1 processor receives system call exeception, IEc has 0 while
IEp does 1. SystemCall assembler hook enables IEc (== SR_INT_IE) on
prior to call syscall() kernel entry point. (a change in 1.43)
- When MIPS3 receives system call exception, EXL has 1 to prevent
interrupts while SR_INT_IE remains 1. Clearing EXL makes interrupt
re-enable effect.
The "examine-and-reenable" sequence was copied irrelvantly when
syscall() processing was separated from trap().
Eventually, remaining SR_INT_IE arrangement will be moved away to
locore_mips{1,3}.S, and completely invisible from C code path.
Tohru Nishimura