NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-i386/57197: GENERIC kernel crash on pentium-III and earlier CPUs
> Date: Wed, 25 Jan 2023 17:01:58 +1100
> from: matthew green <mrg%eterna.com.au@localhost>
>
> be nice to put a little more details in what needs fixing:
>
> arch/i386/i386/vector.S:#define INTRSTUB1(name, num, sub, off, early_ack, late_ack, mask, unmask, level_mask) \
>
> has this:
>
> /* switch stack if necessary, and push a ptr to our intrframe */ \
> IDEPTH_INCR
>
> the last part of IDEPTH_INCR being:
>
> 999: pushl %eax; /* eax == pointer to intrframe */ \
>
> so it's _this_ that becomes the 2nd arg for clockintr().
Tempted to say there should be a struct cpu_info::ci_iframe just like
ci_idepth, and when an interrupt handler is interrupted, it should
just be saved on the stack (perhaps in the same stack slot!) and
restored on return.
That way, i8254_clockintr could just do curcpu()->ci_iframe instead of
these horrible function pointer casts.
Home |
Main Index |
Thread Index |
Old Index