Commit Graph

616 Commits

Author SHA1 Message Date
ross
3b4fb77f19 install fpu.h, needed for new lib/csu features 2002-01-16 01:19:22 +00:00
thorpej
0ff3653797 Add sysarch calls to read and write the full fp_c. 2002-01-14 00:53:16 +00:00
thorpej
a214c3ad3a We haven't done ECOFF for a long time; garbage-collect all the
__ELF__ #ifdefs (thus setting ELF in stone).
2001-12-18 17:12:32 +00:00
thorpej
c285667b3c Add a memory clobber to alpha_pal_swapctx() and alpha_pal_swpipl();
the former affects the address space, and the latter can let interrupt
handlers in to clobber memory.
2001-12-18 04:18:22 +00:00
thorpej
8c8f0f0f82 Disable .loc in macros for now; the new assembler is a lot more
picky about having the file number defined.
2001-12-18 04:15:45 +00:00
thorpej
36c9cfea2d Fix constraints in __asm statements (err, again). Kernels compiled
with GCC 2.95.3 work now.
2001-12-17 23:34:57 +00:00
thorpej
51535d4bf5 Add support for dumping ELF-cormat core files. 2001-12-09 23:05:56 +00:00
soren
662f877587 MAXSLP is defined to be a machine-independent scheduling parameter,
so move it into sys/param.h.
2001-11-15 18:06:11 +00:00
drochner
b4d5b7d621 protect against multiple inclusion 2001-11-01 12:54:35 +00:00
thorpej
d42a6dc5c2 Rather than using a NetBSD-specific header file <machine/int_types.h>
and non-standard inttype-like types, pull in <sys/types.h> if
_KERNEL or _STANDALONE and <inttypes.h> otherwise, and use standard
inttype types.

Discussed with and OK'd by Christos.
2001-10-31 18:05:35 +00:00
thorpej
6d2e0bcbc2 Use <machine/elf_machdep.h> to override Elf64_Word and Elf64_Sword
on the Alpha (which uses a non-standard definitions for historical
reasons), rather than #ifdef __alpha__ (which is not cross-tool safe).
2001-10-31 17:44:42 +00:00
thorpej
e727e3f180 Split elf32 vs. elf64 handling in loadfile(), including support for
each separately and explicitly.  BOOT_ELF is now BOOT_ELF32 and
BOOT_ELF64, and ELFSIZE should no longer be defined in loadfile_machdep.h.
2001-10-31 17:20:45 +00:00
simonb
c63662a13e Multiple include protection. 2001-10-05 15:25:02 +00:00
simonb
5847ff0480 *int_fast64_t should be "long", not "long long".
From Klaus Klein.
2001-09-22 18:03:10 +00:00
thorpej
681df63b07 Remove alpha/include/fbio.h -- it hasn't been used for a Long Time. 2001-09-19 16:32:04 +00:00
simonb
a2c1c5c8eb Fix typo in PRId64. 2001-09-19 01:49:47 +00:00
chris
0e7661f023 Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
2001-09-10 21:19:08 +00:00
nathanw
2b5671fb41 The return address register ($ra) is callee-saved, not caller-saved. 2001-09-05 20:12:53 +00:00
thorpej
102190b8fe Implement bus_space_mmap(). 2001-09-04 05:31:27 +00:00
thorpej
0fb6b9a8f8 Rework the interrupt code, shaving some cycles off in the process.
Rather than an "iointr" routine that decomposes a vector into an
IRQ, we maintain a vector table directly, hooking up each "iointr"
routine at the correct vector.  This also allows us to hook device
interrupts up to specific vectors (c.f. Jensen).

We can shave even more cycles off, here, and I will, but it requires
some changes to the alpha_shared_intr stuff.
2001-07-27 00:25:18 +00:00
thorpej
babefc5331 Add BUS_DMA_READ and BUS_DMA_WRITE flags, that hint the back-end
at dmamap load time that the mapping will be used for a unidirectional
transfer of the specified direction.
2001-07-19 15:32:10 +00:00
thorpej
8617f2c7f5 Simplify the SGMAP code a bit, and move SGVA allocation out of a
common routine into the individual load routines, since each load
routine needs to muddle with the "internals" of this operation.

Add a `prefetch threshold' member to the bus_dma_tag_t, so that
eventually we can determine whether or not to allocate a spill
page on a per-mapping basis.
2001-07-19 04:27:37 +00:00
thorpej
909084d90f Protect userland from the inlines and kernel variable decls. 2001-07-17 20:54:58 +00:00
thorpej
dcfd225d73 Defer sending shootdown IPIs a bit longer. Reduces traffic a fair
bit more.
2001-07-15 21:57:01 +00:00
thorpej
ff62d4c0c5 - Tweak the pmap locking protocol slightly -- require that a pmap must
be locked before it can be marked as `active' on a processor.
- Require that pmaps other than the kernel pmap be locked when they
  are passed to pmap_tlb_shootdown().  This, combined with the locking
  protocol tweak, allow us to get a consistent view of `activeness' of
  a pmap, which means we can optmize away a lot of TLB shootdown traffic
  for user pmaps.
- Borrow an idea from the i386mp branch; use the normal SHOOTDOWN IPI
  to deal with hitting the entire TLB, and garbage-collect the TBIA
  and TBIAP IPIs.
2001-07-15 16:42:18 +00:00
thorpej
6908e679ac Cosmetic change. 2001-07-14 17:55:42 +00:00
wiz
e2eaa3b87a constraint, not contraint. 2001-06-21 12:15:03 +00:00
thorpej
8eb3b954f1 Don't need to prototype child_return() here, it's in <sys/proc.h>. 2001-06-14 22:56:55 +00:00
simonb
e5bd00e48d For ports that wire up pciide in compatibility mode, have
them define __HAVE_PCIIDE_MACHDEP_COMPAT_INTR_ESTABLISH
in pci_machdep.h and pciide_map_compat_intr() only calls
pciide_machdep_compat_intr_establish() if that preprocessor
define exists.

Ports that don't need to do this no longer need to supply a
dummy function.
2001-06-08 04:48:54 +00:00
mrg
67afbd6270 use _KERNEL_OPT 2001-05-30 11:57:16 +00:00
sommerfeld
4aaf078a4a Assorted microtime fixes (similar to fixes I made yesterday when
porting this code to i386mp branch):

 - call microset() early on each cpu so that calls to microtime()
before the first clock interrupt don't return trash.  this manifested
itself as garbage runtimes in "ps" for kernel threads.
 - avoid races between hardclock updating "time" and microset on a
different cpu reading it by adding a "microset_time" global which is
initialized from "time" on the primary cpu.
 - call microset every hz ticks, not every hz+1 (cosmetic)
2001-05-27 13:53:24 +00:00
chs
e44e9dec8a replace vm_page_t with struct vm_page *. 2001-05-26 21:27:02 +00:00
ross
26882092f4 o Deal with stray machine checks
o Add for alpha a security-sensitive rate-limiting printf(9) wrapper based
  on ratecheck(9):  void rlprintf(struct timeval *t, const char *fmt, ...);
2001-05-14 19:56:22 +00:00
thorpej
fcbf0b9d21 Add systype for "Titan" systems (systype 38). 2001-05-03 20:52:19 +00:00
thorpej
cf3594e27e Delete the pmap_copy() calls. 2001-05-01 05:33:12 +00:00
thorpej
ed63ff3c52 Use a single linked list for PV entries. This saves 1MB of space
on my 1G RAM AlphaServer.
2001-05-01 02:53:05 +00:00
thorpej
cf67ac7122 Per discussion w/ chuck and chuck, restructure the md page stuff
to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD
and __HAVE_PMAP_PHYSSEG.
2001-05-01 02:19:13 +00:00
thorpej
2b27ac7a99 Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for
each vm_page structure.  Add a VM_MDPAGE_INIT() macro to init this
data when pages are initialized by UVM.  These macros are mandatory,
but ports may #define them to nothing if they are not needed/used.

This deprecates struct pmap_physseg.  As a transitional measure,
allow a port to #define PMAP_PHYSSEG so that it can continue to
use it until its pmap is converted to use VM_MDPAGE_MEMBERS.

Use all this stuff to eliminate a lot of extra work in the Alpha
pmap module (it's smaller and faster now).  Changes to other pmap
modules will follow.
2001-04-29 22:44:31 +00:00
thorpej
f38e77afea Add glue for page zero'ing in the idle loop. 2001-04-29 06:54:03 +00:00
kleink
fe3c9ceaf7 * Move definitions of exact-width integer types from <machine/types.h>
to <sys/types.h> and <sys/stdint.h>.
* Add a new C99 <stdint.h> header, which provides integer types of
  explicit width, related limits and integer constant macros.
* Extend <inttypes.h> to provide <stdint.h> definitions and format
  macros for printf() and scanf().
* Add C99 strtoimax() and strtoumax() functions.
* Use the latter within scanf().
* Add C99 %j, %t and %z printf()/scanf() conversions for
  intmax_t, pointer-type and size_t arguments.
2001-04-28 15:41:28 +00:00
thorpej
53c1b3f9d7 Add a microtime() implementation that interpolates between ticks
using the cycle counter.  MP-safeness is achieved by giving each
CPU its own PCC frequency variables, and kicking the non-primary
processors via an IPI once per second.

Based on the sample code from David Mills' "A Kernel Model for
Precision Timekeeping".
2001-04-28 06:10:49 +00:00
kleink
99054d7a6c Add definitions for C99 fastest minimum-width integer types. 2001-04-26 16:25:19 +00:00
ross
2df695b1e4 o IEEE 754 floating-point completion code.
o Implement the architected FP_C "Floating Point Control Quadword"
2001-04-26 03:10:44 +00:00
thorpej
20f1193ce2 Delete a couple of statistics that are not really worth keeping. 2001-04-24 20:14:45 +00:00
thorpej
7d4893b529 Gather ASN info into a single structure, and place a variable-length
array of those structures at the end of the pmap structure.  We compute
the size of the pmap structure based on the maximum CPU ID for a
particular machine.  This gives us better cache behavior and better
memory footprint for the ASN info.
2001-04-24 20:11:53 +00:00
thorpej
69abdbf60c Undo a misguided previous change to the pmap_update() API. 2001-04-22 23:19:26 +00:00
thorpej
4738622712 Give pmap_update() an argument (a pmap_t) so that it knows which
pmap it should be updating.
2001-04-22 00:33:59 +00:00
thorpej
7f10ba88b1 #define away pmap_update() in <machine/pmap.h> so that no function
call overhead is incurred as we start sprinkling pmap_update() calls
throughout the source tree (no pmaps currently defer operations, but
we are adding the infrastructure to allow them to do so).
2001-04-21 23:51:14 +00:00
thorpej
24e7ecca97 Adjust the way the cpu_info[] array works (array of pointers
rather than array of structures).  Keep a list of active
CPUs and define a CPU_INFO_FOREACH to traverse them.

This fixes cpustates statistics tracking.
2001-04-21 16:27:10 +00:00
ross
baa78b5c79 Nonfunctional change split out from pending functional commit. 2001-04-20 23:52:23 +00:00