Commit Graph

3794 Commits

Author SHA1 Message Date
jhb
631c81dbef Include "opt_pmap.h" so that the DISABLE_P* options are honored. 2003-10-30 21:42:44 +00:00
jhb
17278d122d Always export r_gdt and r_idt and give them extern declarations in
machine/segments.h.
2003-10-30 21:42:17 +00:00
peter
2476026730 MFi386: thread specific fpu state optimizations 2003-10-30 19:04:58 +00:00
peter
d9e8fa03e4 MFi386: rev 1.451 (jhb): call pmap_kremove() rather than duplicate it 2003-10-30 04:08:22 +00:00
peter
ba966fc730 MFi386: trap.c rev 1.259: fetch thread mailbox address in page fault trap 2003-10-30 04:06:28 +00:00
peter
6af25febc6 Oops. Remove some rather noisy debug printfs that slipped in there
somehow.
2003-10-28 01:06:37 +00:00
jhb
c22f9db53f A few whitespace and comment tweaks. 2003-10-24 21:02:26 +00:00
peter
ede4ea68aa Add __va_copy and make it always visible, in spite of the __ISO_C_VISIBLE
setting.  Make va_copy be an alias if __ISO_C_VISIBLE >= 1999.

Why?  more than a few ports have an autoconf that looks for __va_copy
because it is available on glibc.  It is critical that we use it if
at all possible on amd64.  It generally isn't a problem for i386 and its
ilk because autoconf driven code tends to fall back to an assignment.
2003-10-24 02:50:39 +00:00
peter
e56b7aabda Use a more robust API altogether for the amd64_get_fsbase() etc functions. 2003-10-23 06:06:14 +00:00
peter
647bf6f4e8 Renumber the sysarch vectors for amd64 specific syscalls so that I can
implement i386 compat numbers where it makes sense.  This would save a
syscall translation layer.  Yes, this breaks the abi slightly again, but
fortunately its just a recompile rather than tweaking the source.  I will
be fixing the libc stubs while I'm here.
2003-10-23 05:31:23 +00:00
silby
f0e686a675 Change all SYSCTLS which are readonly and have a related TUNABLE
from CTLFLAG_RD to CTLFLAG_RDTUN so that sysctl(8) can provide
more useful error messages.
2003-10-21 18:28:36 +00:00
njl
8689796a4b Add the cpu_idle_hook() function pointer so that other idlers can be
hooked at runtime.  Make C1 sleep (e.g., HLT) be the default.  This
prepares the way for further ACPI sleep states.
2003-10-18 22:25:07 +00:00
bde
bfb4a0a2c1 Don't forget to load %es with the kernel data segment selector in
Xcpustop().  %es is used in at least the call to savectx() when savectx()
calls bcopy(), so not loading it was fatal if a stop IPI interrupts
user mode.

This reduces bugs starting and stopping CPUs for debuggers.  CPUs are
stopped mainly in kdb_trap() and cpu_reset().  At reset time there is
a good chance that all the CPUs are in the kernel, so the bug was
probably harmless then.
2003-10-16 10:44:24 +00:00
peter
8f60b15573 Pull the tier-2 card one last time and break the get/setcontext and
sigreturn() ABI and the signal context on the stack.

Make the trapframe (and its shadows in the ucontext and sigframe etc)
8 bytes larger in order to preserve 16 byte stack alignment for the
following C code calls.  I could have done some padding after the
trapframe was saved, but some of the C code still expects an argument of
'struct trapframe'.  Anyway, this gives me a spare field that can be used
to store things like 'partial trapframe' status or something else in
the future.

The runtime impact is fairly small, *except* for threaded apps and things
that decode contexts and the signal stack (eg: cvsup binary).  Signal
delivery isn't too badly affected because the kernel generates the
sigframe that sigreturn uses after the handler has been called.

The size of mcontext_t and struct sigframe hasn't changed.  Only
the last few fields (sc_eip etc) got moved a little and I eliminated
a spare field.  mc_len/sc_len did change location though so the
sanity checks there will still trap it.
2003-10-15 02:04:52 +00:00
alc
3d04ccf49a MFia64
Move uma_small_alloc() and uma_small_free() to uma_machdep.c.
2003-10-14 05:51:31 +00:00
robert
8519aa2ff0 Implement preliminary support for the PT_SYSCALL command to ptrace(2). 2003-10-09 10:17:16 +00:00
bms
d8d01a1fa7 Move pmap_resident_count() from the MD pmap.h to the MI pmap.h.
Add a definition of pmap_wired_count().
Add a definition of vmspace_wired_count().

Reviewed by:	truckman
Discussed with:	peter
2003-10-06 01:47:12 +00:00
alc
7e17f7f78e Don't bother setting a page table page's valid field. It is unused and
not setting it is consistent with other uses of VM_ALLOC_NOOBJ pages.
2003-10-05 00:12:16 +00:00
alc
b1691aebe4 Migrate pmap_prefault() into the machine-independent virtual memory layer.
A small helper function pmap_is_prefaultable() is added.  This function
encapsulate the few lines of pmap_prefault() that actually vary from
machine to machine.  Note: pmap_is_prefaultable() and pmap_mincore() have
much in common.  Going forward, it's worth considering their merger.
2003-10-03 22:46:53 +00:00
alc
ccbdb269fd Reimplement pagezero() using "movnti". 2003-10-02 05:08:13 +00:00
peter
b9ef48a8b5 Commit Bosko's patch to clean up the PSE/PG_G initialization to and
avoid problems with some Pentium 4 cpus and some older PPro/Pentium2
cpus.  There are several problems, some documented in Intel errata.
This patch:
1) moves the kernel to the second page in the PSE case.  There is an
errata that says that you Must Not point a 4MB page at physical
address zero on older cpus.  We avoided bugs here due to sheer luck.
2) sets up PSE page tables right from the start in locore, rather than
trying to switch from 4K to 4M (or 2M) pages part way through the boot
sequence at the same time that we're messing with PG_G.

For some reason, the pmap work over the last 18 months seems to tickle
the problems, and the PAE infrastructure changes disturb the cpu
bugs even more.

A couple of people have reported a problem with APM bios calls during
boot.  I'll work with people to get this resolved.

Obtained from:	bmilekic
2003-10-01 23:46:08 +00:00
peter
351a02de72 Use __register_t instead of register_t, otherwise <sys/types.h> is a
prerequisite for <ucontext.h> on amd64.  Oops.
2003-10-01 01:08:04 +00:00
peter
ee83710173 MFi386: Do not depend on LEAPYEAR() macro boolean values being 0 or 1.
MFi386: Add quality field for timer0
2003-09-30 06:42:47 +00:00
peter
714b95391d MFi386: BURN_BRIDGES around timer0 functions 2003-09-30 06:38:11 +00:00
jeff
701b4bd0ef - Remove the definition for TD_SWITCHIN as it is not used.
Approved by:	peter
2003-09-30 04:52:24 +00:00
alc
738feed9c3 Eliminate the pte object. 2003-09-27 20:53:01 +00:00
alc
f89495ae82 MFi386
Allocate the page table directory page as "no object" pages.
2003-09-26 04:12:41 +00:00
alc
e30e166f80 MFi386
Reimplement pmap_release() such that it uses the page table rather than
 the pte object to locate the page table directory pages.  (Temporarily,
 retain an assertion on the emptiness of the pte object.)
2003-09-25 05:38:18 +00:00
peter
5505d23553 Re-raise the default datasize and stacksize now that the 32 bit exec
support can clip it to sensible values.
2003-09-25 01:11:17 +00:00
peter
8ecb3577d8 Add sysentvec->sv_fixlimits() hook so that we can catch cases on 64 bit
systems where the data/stack/etc limits are too big for a 32 bit process.

Move the 5 or so identical instances of ELF_RTLD_ADDR() into imgact_elf.c.

Supply an ia32_fixlimits function.  Export the clip/default values to
sysctl under the compat.ia32 heirarchy.

Have mmap(0, ...) respect the current p->p_limits[RLIMIT_DATA].rlim_max
value rather than the sysctl tweakable variable.  This allows mmap to
place mappings at sensible locations when limits have been reduced.

Have the imgact_elf.c ld-elf.so.1 placement algorithm use the same
method as mmap(0, ...) now does.

Note that we cannot remove all references to the sysctl tweakable
maxdsiz etc variables because /etc/login.conf specifies a datasize
of 'unlimited'.  And that causes exec etc to fail since it can no
longer find space to mmap things.
2003-09-25 01:10:26 +00:00
nyan
2ae09c9ace Implement the bus_space_map() function to allocate resources and initialize
a bus_handle, but currently it does only initializing a bus_handle.
2003-09-23 08:22:34 +00:00
peter
32e8aa5d88 Oops. back out last commit. The data and stack limits are used by the
32 bit binary stuff.  32 bit binaries do not like it much when the kernel
tries hard to put things above the 8GB mark.

I have a work-in-progress to fix this properly, but I didn't want to burn
anybody with this yet.
2003-09-23 03:20:34 +00:00
peter
18e77e8188 Fix patch transcription typo. s/IDT_BPT/IDT_BP/ 2003-09-23 00:45:55 +00:00
peter
c9a12a677e Sync with i386 version. The quality initialization was missing and some
other junk.
2003-09-23 00:18:45 +00:00
peter
5f4bb2a8ae GC unused child variable 2003-09-23 00:04:28 +00:00
peter
1c3edda778 MFi386 pci_bus.c 1.102 legacyvar.h 1.4: rename nexus_pcib to legacy_pcib
However, leave legacy_pcib_route_interrupt() since there is no pcibios to
call.
2003-09-23 00:03:44 +00:00
peter
f2180e5cf9 Move basemem variable into global scope so that the MP startup code can
refer to it for looking for tables.
2003-09-22 23:33:29 +00:00
peter
58e9e8592f Increase the default data size limit from 512MB to 8GB. Increase default
stack limit from 64MB to 512MB.
2003-09-22 23:21:39 +00:00
peter
23e0162faa MFi386 rev 1.51 by scottl: make dflt_lock() always panic. 2003-09-22 23:11:42 +00:00
peter
e62cd4fdd2 MFi386 rev 1.53 by scottl: Allocate the S/G list in the tag, not on
the stack.  This means that s/g lists can be arbitrarily long.
2003-09-22 23:10:24 +00:00
peter
c84d9c49c6 MFi386 machdep.c rev 1.201, clock.c 1.201, clock.h 1.45 by phk: Dont
initialize a TSC timecounter until we know if it is broke or not.

XXX I think there is a bug in the i386 code here.  init_TSC_tc() comes
after:
  if (statclock_disable)
    return;

ie: if you turn off the statclock interrupt, you dont get the TSC either.
2003-09-22 23:02:24 +00:00
peter
8e309595b1 MFi386 rev 1.105 by jhb: fix comment typo 2003-09-22 22:54:14 +00:00
peter
af6924fc77 MFi386 rev 1.256 by jhb: remove redundant #include <sys/sysctl.h> 2003-09-22 22:52:46 +00:00
peter
0e19388f1d MFi386 rev 1.25 by jhb: add new MSR's and some missing older ones and
APICBASE MSR constants.
2003-09-22 22:51:46 +00:00
peter
2c9ae5d4a1 MFi386 rev 1.55 by sam: remove unused #define BUS_DMAMAP_NSEGS 2003-09-22 22:43:21 +00:00
peter
e75370c775 MFi386 rev 1.37: constant-friendly bswap macros 2003-09-22 22:37:49 +00:00
peter
005d12e9b3 MFi386: pci_cfgreg.h rev 1.10 by jhb/des/njl. Fix CONF1_ENABLE_MSK. 2003-09-22 22:21:21 +00:00
peter
c90609c085 MFCi386: trap.c rev 1.257 by bde. Don't forget to reenable interrupts
for breakpoint and trace traps from usermode.  Although all the setidt
entries are interrupt gates on amd64, all but the trace and bpt trap
entry handlers reenable interrupts after the swapgs instruction in order
to simulate the trap/interrupt gate distinction.  In other words, the
amd64 code behaves the same way that i386 does here.
2003-09-22 22:19:59 +00:00
peter
4e3647008b MFi386 by jhb: add acpi_SetDefaultIntrModel(); 2003-09-22 22:12:46 +00:00
peter
724da5f111 MFi386 by jhb: use symbolic constants for the IDT entries. 2003-09-22 22:09:02 +00:00