diff options
author | jkim <jkim@FreeBSD.org> | 2009-03-17 00:48:11 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2009-03-17 00:48:11 +0000 |
commit | 3eda4741daa9db3ec9fa89000bfbf69dd182e01e (patch) | |
tree | c75b77d8208c29993db8a02658e1f33e9e5339b8 /sys/amd64/amd64/apic_vector.S | |
parent | 4e75ea04f545069138b54e1fee5b5c1236ba5b68 (diff) | |
download | FreeBSD-src-3eda4741daa9db3ec9fa89000bfbf69dd182e01e.zip FreeBSD-src-3eda4741daa9db3ec9fa89000bfbf69dd182e01e.tar.gz |
Initial suspend/resume support for amd64.
This code is heavily inspired by Takanori Watanabe's experimental SMP patch
for i386 and large portion was shamelessly cut and pasted from Peter Wemm's
AP boot code.
Diffstat (limited to 'sys/amd64/amd64/apic_vector.S')
-rw-r--r-- | sys/amd64/amd64/apic_vector.S | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S index 14a6f87..0306bb3 100644 --- a/sys/amd64/amd64/apic_vector.S +++ b/sys/amd64/amd64/apic_vector.S @@ -224,6 +224,22 @@ IDTVEC(cpustop) iretq /* + * Executed by a CPU when it receives an IPI_SUSPEND from another CPU. + */ + .text + SUPERALIGN_TEXT +IDTVEC(cpususpend) + PUSH_FRAME + + movq lapic, %rax + movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ + + call cpususpend_handler + + POP_FRAME + iretq + +/* * Executed by a CPU when it receives a RENDEZVOUS IPI from another CPU. * * - Calls the generic rendezvous action function. |