Commit Graph

781 Commits

Author SHA1 Message Date
matt
be5fafec51 ANSI'fy the inline functions. 2002-10-01 19:08:51 +00:00
fvdl
26ab868e68 Merge Bill Sommerfeld's i386 MP branch. This code has some known
caveats, but works quite well in a lot of MP cases, and all
UP cases that I have tested. Parts of this will hopefully be
reworked in the not-too-distant future.
2002-10-01 12:56:36 +00:00
gmcgarry
627c1b14f8 Back-out previous. 2002-09-23 21:35:42 +00:00
simonb
63096043b3 Use "#define\t" instead of "#define ". 2002-09-22 08:30:56 +00:00
chs
c081614ea2 it really helps to get the stub right before cutting + pasting it 27 times.
alas, I did not.  doh.
2002-09-22 07:53:39 +00:00
chs
55e1f79335 add pmap_remove_all() hook (empty on most platforms so far). 2002-09-22 07:17:08 +00:00
gmcgarry
adc9fb5f5b MD component of the new cpu_switch() interface. Introduces nextrunqueue(),
cpu_idle() and new cpu_switch() to replace the old cpu_switch()
which did the lot.  Runs leaner without overly blocking interrupts.

Includes cleanup of the RAS code to make use of callee-saved registers.

Benchmarks on DX4 @ 100MHz reveal a slight performance improvement
but probably not statistically signficant.  More TBD to verify this.

Changes passed a pounding on Athlon @ 1GHz too.
2002-09-22 06:51:10 +00:00
gmcgarry
dca80f08fd Add __HAVE_MD_RUNQUEUE flag for MD code to override MI run queue primitives. 2002-09-22 04:11:32 +00:00
gehenna
77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
gmcgarry
14b302311d RAS support for i386. 2002-08-28 09:47:15 +00:00
thorpej
7d9de8b2ad PMC_TYPE_I586 -> PMC_CLASS_I586
PMC_TYPE_I686 -> PMC_CLASS_I686
PMC_TYPE_K7 -> PMC_CLASS_K7

To reflect terminilogy used in pmc(3).
2002-08-09 05:28:08 +00:00
thorpej
7cbc5d60c1 Add macros to encode the "unit number" in the event selector. 2002-08-08 20:40:49 +00:00
thorpej
b12f663377 Define new-style PMC types for i586, i686, and K7 performance counters. 2002-08-08 18:37:39 +00:00
tron
38b5f64780 Redo last change. "pmc_evid_t" and "pmc_ctr_t" need to be visible for
userland because they are used in "sys/pmc.h".
2002-08-07 09:45:49 +00:00
tron
b145a3fa59 Embed "pmc_evid_t" and "pmc_ctr_t" into "if defined(_KERNEL)" and use
"__uint64_t" from "int_types.h". This fixes "lint" errors while
building "libc".
2002-08-07 09:34:54 +00:00
briggs
64a993291d Stubs for new pmc(9) interface. 2002-08-07 05:58:01 +00:00
briggs
d3cfa7ad3b Forward declare structures that are used here. 2002-08-07 05:38:47 +00:00
briggs
a27fd9df4d define pmc_evid_t, pmc_ctr_t. 2002-08-07 05:38:24 +00:00
kanaoka
69c8929084 - Disable Interrput before execute AcpiEnterSleepState().
- Add acpi_md_OsDisableInterrupt() for this.
2002-07-18 12:05:11 +00:00
drochner
cd34aa2e82 add a function to read from the BIOS vm86
(most of it is already mapped to KVM, but it appears easier to me
to do it this way instead of a lot of range checks)
2002-07-10 19:09:35 +00:00
jdolecek
f4e3c06369 always include ci_s*_locks in struct cpu_info, so that the size doesn't depend
on DIAGNOSTIC/LOCKDEBUG settings
2002-07-09 22:28:30 +00:00
drochner
3b22d7973b This is a (still experimental) framework to run BIOS code in a virtual
8086 machine. Ifff it works, it is much easier and more elegant than
going to real real mode:
-simpler code
-no need for "identity" memory mappings
-easy passing of buffers for bulk data to functions
-some more control
There is no interrupt support ATM, and it lacks a function to access
random virtual memory of the VM. MP issues to consider.
2002-07-07 12:56:34 +00:00
thorpej
011d4d5f44 Add kernel support for having userland provide the signal trampoline:
* struct sigacts gets a new sigact_sigdesc structure, which has the
  sigaction and the trampoline/version.  Version 0 means "legacy kernel
  provided trampoline".  Other versions are coordinated with machine-
  dependent code in libc.
* sigaction1() grows two more arguments -- the trampoline pointer and
  the trampoline version.
* A new __sigaction_sigtramp() system call is provided to register a
  trampoline along with a signal handler.
* The handler is no longer passed to sensig() functions.  Instead,
  sendsig() looks up the handler by peeking in the sigacts for the
  process getting the signal (since it has to look in there for the
  trampoline anyway).
* Native sendsig() functions now select the appropriate trampoline and
  its arguments based on the trampoline version in the sigacts.

Changes to libc to use the new facility will be checked in later.  Kernel
version not bumped; we will ride the 1.6C bump made recently.
2002-07-04 23:32:02 +00:00
yamt
7b17e9ce50 add KSTACK_CHECK_DR0. 2002-07-03 02:46:11 +00:00
thorpej
f89b062ae7 During native signal delivery (and iBCS2, since it uses the native
sigcode), arrange to have the signal handler invoked directly, using
the trampoline only for the return path, saving a call insn.  Play
some other stack trickery in the trampoline to turn 2 pushl's into
one movl.
2002-06-23 22:18:49 +00:00
tshiozak
2d5fc6d0a9 add MD support for ACPI sleep/wakeup. 2002-06-18 07:56:12 +00:00
fvdl
42d8b412ee Add XMM trap type. 2002-06-17 21:38:20 +00:00
thorpej
17848b05a8 Update for acpica-unix-20020612. From Takayoshi Kochi. 2002-06-15 18:01:05 +00:00
gmcgarry
94b4a243e6 Support Athlon performance counters. 2002-06-07 04:04:47 +00:00
gmcgarry
3acf6ed1d8 Add Athlon performance counters. 2002-06-07 04:03:49 +00:00
gmcgarry
72fe1c3076 Add i586 performance counters. 2002-06-07 01:30:19 +00:00
thorpej
3a00c62229 Move the IDTVEC() macro to <machine/asm.h>, and make it work with
an ISO C preprocessor.
2002-05-31 18:07:31 +00:00
thorpej
dada8613e1 Let machine-dependent code specify how to enumerate the bus.
Currently, everyone uses pci_enumerate_bus_generic().
2002-05-15 19:23:51 +00:00
matt
075e474458 Eliminate commons. 2002-05-12 23:16:52 +00:00
thorpej
b6950c9729 Mirror cleanup wrt. procfs-centric naming made to the MI ptrace code. 2002-05-09 16:28:11 +00:00
mycroft
bfea3f39cb Wire CLKF_BASEPRI() to 0 on this platform. (See tech-kern.) 2002-05-08 18:45:49 +00:00
wiz
c6dc851f64 Remove opms(4) and its device, /dev/pms0, from the i386 port, because
it has been obsoleted by pms(4).

Reviewed by fvdl and christos.
2002-04-18 12:54:09 +00:00
joda
0624e7fe7a add HTT cpu flag, and further split message 2002-03-20 15:59:26 +00:00
simonb
4324f37586 Use "#define<tab>". 2002-02-28 03:17:23 +00:00
christos
6b030ee036 - define other DEV_ constants that the local port uses.
- delete cdev_decl(mm) since <sys/conf.h> does it.
2002-02-27 01:19:03 +00:00
simonb
d9ab16ba2f Purge CLSIZE, CLSIZELOG2 and MCLOFSET.
Be consistant in the way that MSIZE, MCLSHIFT, MCLBYTES and NMBCLUSTERS
  are defined.
Remove old VM constants from cesfic port.
Bump MSIZE to 256 on mipsco (the only one that wasn't already 256).
2002-02-26 15:13:19 +00:00
simonb
2d8577fb83 Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
 - Use the above for the __infinity and __nan constants on all
   architectures that use the standard ieee754 representation of
   those constants.
 - Add a single copy of various ieee754 math functions (frexp, isinf,
   isnan, ldexp and modf) that had numerous duplicates among the
   arch-specific directories.
 - Use the above functions on all architectures where the generic C
   versions where used.  Architectures that had local assembly
   routines are untouched (for those functions only).
2002-02-19 13:08:12 +00:00
christos
c8e246669c save cr2 for the benefit of linux emulation, and normalize use of pcb
in trap(), i.e. always initialize *pcb and use it instead of doing it
sometimes.
2002-02-16 16:22:03 +00:00
christos
d47da1254f Fix comments. 2002-01-31 17:41:38 +00:00
rafal
37d3472889 Re-arrange GDT entries somewhat so that: (1) I can reserve the 8th entry for
BIOS-bug-avoidance [fixes part of my own port-i386/11299], and (2) lets you
have APM and COMPAT_MACHO in the kernel at the same time.  Also comments on
the special 8th entry and what else changing some of these values affects.

OK'ed by Frank.
2002-01-23 15:02:34 +00:00
drochner
5245358400 for ELF, put RCSID string into .ident section,
add __KERNEL_RCSID macro which is undefined in case of NO_KERNEL_RCSIDS
2002-01-13 12:44:31 +00:00
thorpej
2db4da1742 Fix some register constraints; specifically, the "port" operand,
if not an immediate, must be in a 16-bit register.
2001-12-28 06:42:40 +00:00
christos
e59d5895b1 add a new function to the cpu struct's that can be called to print extra
cpu information after initialization.
2001-12-27 15:24:34 +00:00
thorpej
030d89cdf0 Use ANSI declarations for static inline functions, and give them
the __unused__ attribute.
2001-12-23 23:08:41 +00:00
jdolecek
845a3d15d2 rename (incorrect) SVR4_TRAP_CLOCK_SETTIME to SVR4_TRAP_GETHRESTIME - this
is what Solaris8 calls it
implement SVR4_TRAP_GETHRESTIME, though obviously only with microsecond accuracy

now clock_gettime(CLOCK_REALTIME, tp) works on Solaris8/i386
2001-12-21 07:02:23 +00:00