1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-25 11:37:56 +00:00
freebsd/sys/amd64/include
Konstantin Belousov a2622e5dc2 Restore the segment registers and segment base MSRs for amd64 syscall
return path only when neither thread was context switched while
executing syscall code nor syscall explicitely modified LDT or MSRs.

Save segment registers in trap handlers before interrupts are enabled,
to not allow context switches to happen before registers are saved.
Use separated byte in pcb for indication of fast/full return, since
pcb_flags are not synchronized with context switches.

The change puts back syscall microbenchmark numbers that were slowed
down after commit of the support for LDT on amd64.

Reviewed by:	jeff
Tested (and tested, and tested ...) by:	pho
Approved by:	re (kensmith)
2009-07-09 09:34:11 +00:00
..
pc A simple rewrite of biossmap.c: 2009-04-15 17:31:22 +00:00
xen Merge in support for Xen HVM on amd64 architecture. 2009-03-11 15:30:12 +00:00
_bus.h
_inttypes.h
_limits.h
_stdint.h
_types.h
acpica_machdep.h
apicreg.h Add constants for fields in the local APIC error status register and a 2008-12-11 15:56:30 +00:00
apicvar.h Add support for using i8254 and rtc timers as event sources for amd64 SMP 2009-05-02 12:20:43 +00:00
asm.h
asmacros.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
atomic.h - bump __FreeBSD version to reflect added buf_ring, memory barriers, 2008-11-22 05:55:56 +00:00
bus_dma.h
bus.h
clock.h Rename statclock_disable variable to atrtcclock_disable that it actually is, 2009-05-03 17:47:21 +00:00
cpu.h
cpufunc.h Simplify in/out functions (for i386 and AMD64). 2009-04-11 14:01:01 +00:00
cputypes.h Add Centaur/IDT/VIA vendor ID for Nano family, which has long mode support. 2009-01-05 21:51:49 +00:00
db_machdep.h
elf.h Add AT_EXECPATH ELF auxinfo entry type. The value's a_ptr is a pointer 2009-03-17 12:50:16 +00:00
endian.h Also remove the unused __word_swap_int*() macros. 2009-04-08 19:10:20 +00:00
exec.h
float.h
floatingpoint.h
fpu.h A few cleanups to the FPU code on amd64: 2009-03-05 16:56:16 +00:00
frame.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
gdb_machdep.h
ieeefp.h
in_cksum.h
intr_machdep.h Improve the handling of cpuset with interrupts. 2009-07-01 17:20:07 +00:00
iodev.h Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
kdb.h
legacyvar.h Companion for r188301: fix the prototypes. 2009-02-08 07:03:34 +00:00
limits.h
mca.h Implement simple machine check support for amd64 and i386. 2009-05-13 17:53:04 +00:00
md_var.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
memdev.h Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
metadata.h A simple rewrite of biossmap.c: 2009-04-15 17:31:22 +00:00
minidump.h
mp_watchdog.h
mptable.h
mutex.h
nexusvar.h Rework how the nexus(4) device works on x86 to better handle the idea of 2008-03-13 20:39:04 +00:00
param.h Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
pcb.h Restore the segment registers and segment base MSRs for amd64 syscall 2009-07-09 09:34:11 +00:00
pci_cfgreg.h Extend the support for PCI-e memory mapped configuration space access: 2008-08-22 02:14:23 +00:00
pcpu.h Fix XENHVM build. 2009-05-06 17:48:39 +00:00
pmap.h Eliminate dead code. These definitions should have been deleted with the 2009-06-22 04:21:02 +00:00
pmc_mdep.h - Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo 2008-11-27 09:00:47 +00:00
ppireg.h
proc.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
profile.h
psl.h
ptrace.h
reg.h Add all segment registers for the amd64 CPU to struct reg and mcontext. 2009-04-01 12:44:17 +00:00
reloc.h
resource.h
runq.h
segments.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
setjmp.h
sf_buf.h
sigframe.h
signal.h Sync definitions for struct sigcontext for i386 and amd64 architectures 2009-04-01 13:44:28 +00:00
smp.h FreeBSD right now support 32 CPUs on all the architectures at least. 2009-05-14 17:43:00 +00:00
specialreg.h Implement simple machine check support for amd64 and i386. 2009-05-13 17:53:04 +00:00
stack.h Make preparations for increasing the size of the kernel virtual 2008-06-20 05:22:09 +00:00
stdarg.h
sysarch.h Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
timerreg.h The "free-lance" timer in the i8254 is only used for the speaker 2008-03-26 20:09:21 +00:00
trap.h
tss.h
ucontext.h Add all segment registers for the amd64 CPU to struct reg and mcontext. 2009-04-01 12:44:17 +00:00
varargs.h
vm.h Correct the #endif comment. 2009-06-26 16:22:24 +00:00
vmparam.h correct range in comment 2009-05-16 22:08:00 +00:00