diff options
author | Damien Zammit <damien@zamaudio.com> | 2023-01-29 23:45:38 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-01-29 23:49:04 +0100 |
commit | fc0d49a3eda8b89497d1f2908b29b5476019a818 (patch) | |
tree | 51a607c61cbbc1d9b9c582c3a0afcf9dfdfb4e63 /i386/i386at/interrupt.S | |
parent | 6ebd651d6f6244315a84b8355d801d118869f722 (diff) | |
download | gnumach-fc0d49a3eda8b89497d1f2908b29b5476019a818.tar.gz gnumach-fc0d49a3eda8b89497d1f2908b29b5476019a818.tar.bz2 gnumach-fc0d49a3eda8b89497d1f2908b29b5476019a818.zip |
i386: Add AP variants of descriptor tables
Diffstat (limited to 'i386/i386at/interrupt.S')
-rw-r--r-- | i386/i386at/interrupt.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/i386/i386at/interrupt.S b/i386/i386at/interrupt.S index 16e0df10..9f1883ac 100644 --- a/i386/i386at/interrupt.S +++ b/i386/i386at/interrupt.S @@ -58,6 +58,9 @@ ENTRY(interrupt) movl %eax,12(%esp) /* address of interrupted registers as 4th arg */ movl S_IRQ,%eax /* copy irq number */ + cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single function request? */ + je _call_single + shll $2,%eax /* irq * 4 */ movl EXT(iunit)(%eax),%edx /* get device unit number */ movl %edx,(%esp) /* unit number as 1st arg */ @@ -117,4 +120,10 @@ _isa_eoi: addl $24,%esp /* pop local variables */ _no_eoi: ret + +_call_single: + call EXT(pmap_update_interrupt) /* TODO: Allow other functions */ + call EXT(lapic_eoi) /* lapic EOI */ + addl $24,%esp + ret END(interrupt) |