diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/nthals/halr98b/mips/rxipiint.s | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/ntos/nthals/halr98b/mips/rxipiint.s')
-rw-r--r-- | private/ntos/nthals/halr98b/mips/rxipiint.s | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/private/ntos/nthals/halr98b/mips/rxipiint.s b/private/ntos/nthals/halr98b/mips/rxipiint.s new file mode 100644 index 000000000..c3e99ffd2 --- /dev/null +++ b/private/ntos/nthals/halr98b/mips/rxipiint.s @@ -0,0 +1,79 @@ +// TITLE("Interprocessor Interrupts") +//++ +// +// Copyright (c) 1993 Microsoft Corporation +// +// Module Name: +// +// rxipiint.s +// +// Abstract: +// +// This module implements the code necessary to field and process the +// interprocessor interrupts on a MIPS R98 system. +// +// Author: +// +// +// +// Environment: +// +// Kernel mode only. +// +// Revision History: +// +//-- + +#include "halmips.h" + + + SBTTL("Interprocessor Interrupt") +//++ +// +// Routine Description: +// +// This routine is entered as the result of an interprocessor interrupt. +// Its function is to acknowledge the interrupt and transfer control to +// the standard system routine to process interprocessor requrests. +// +// Arguments: +// +// s8 - Supplies a pointer to a trap frame at hal first dispatch +// a0 - Supplies a pointer to a trap frame at kernel trap frame +// a1 - intx +// Return Value: +// +// None. +// +//-- +// secondary + + .struct 0 + // +liArgs: .space 4 * 4 // saved arguments +IiS8: .space 4 // +IiRa: .space 4 // +IiFrameLength: // + + NESTED_ENTRY(HalpIpiInterrupt, IiFrameLength, zero) + + subu sp,sp,IiFrameLength // allocate stack frame + sw s8,IiS8(sp) // save s8 + sw ra,IiRa(sp) // save Ra + + PROLOGUE_END + + or s8,a0,zero // set up trapframe to s8 + // KeIpiInterrupt require trapframe at s8 + + lw t1,__imp_KeIpiInterrupt // process interprocessor requests + jal t1 // + + lw ra,IiRa(sp) // restore ra + lw s8,IiS8(sp) // restore s8 + addu sp,sp,IiFrameLength // deallocate stack frame + j ra // return + + .end HalpIpIInterrupt + + |