Commit Graph

365 Commits

Author SHA1 Message Date
thorpej
4cdbd84b63 First-cut at multiprocessor TLB shootdown. This simple implementation can
probably be improved somewhat, but an attempt to be efficient has been
made.

Note: TLB shootdowns are NOT YET ENABLED.
1999-02-24 19:22:16 +00:00
thorpej
911465b54c Restructure the IPI code a little, allowing multiple IPIs to be sent at
once.  Add a way to broadcast an IPI to all processors (except the sender,
obviously).  Add an IPI for TLB shootdown.
1999-02-24 19:17:09 +00:00
thorpej
76e4555f2c Now that we have the kthread mechanism, massively clean up the way
additional processors are spun up on multiprocessor Alpha systems.
Now, each processor gets its own idle thread (the primary processor
uses proc0).  This idle thread is used in switch_exit(), rather than
explicitly referencing proc0.

Also, make `curproc', `fpcurproc', and `curpcb' per-cpu values.  This
required some data structure rearrangement; cpu info is now statically
allocated in the BSS, rather than via malloc(), and cpu_softc is gone.
(Modeled somewhat after NetBSD/sparc's multiprocessor info structures.)
1999-02-23 03:20:00 +00:00
thorpej
390864a7a5 Define a macro which has human readable strings corresponding to PGU_*
constants.
1999-02-04 19:48:21 +00:00
mycroft
897a8a7f29 Mark [hn]to[nh][ls]() with __const__, so they are subject to CSE. 1999-01-24 12:55:01 +00:00
ross
c79856181a NetBSD RCS id. 1999-01-18 20:36:22 +00:00
ross
7346c0043b FreeBSD's fpu.h. 1999-01-18 20:33:23 +00:00
chuck
3a1fcc746e MNN is now the only option possible 1999-01-16 20:04:22 +00:00
bouyer
dc306354b0 Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
1999-01-15 13:31:15 +00:00
thorpej
a6f7e0c05a Implement WARN_REFERENCES(). 1998-12-02 00:58:42 +00:00
ross
8470625657 New module to hold the alpha-specific prototypes that don't need to be
exported to the MI kernel. Almost everything here was formerly in cpu.h.
Optionally, this module could in the future be used to #include anything
that is always needed by arch/alpha modules.
1998-11-19 01:57:56 +00:00
ross
19a4c3110c Rip out 70 lines of (all of) the port-alpha-specific decls and prototypes.
They should not be visible to the MI kernel and the MI kernel shouldn't
depend on this junk.  Most of it moves to new module <machine/alpha.h>.

Leave badaddr() here, though, because it's used so widely.
1998-11-19 01:51:40 +00:00
ross
e2e3ee52ae Nuke the giant ugly-as-sin per-platform INTRNAMES masterpiece.
I just cannot add one more platform without getting sick.
Instead, we do just one table for all platforms. More-or-less,
it was only the A12 that even named it's individual interrupts anyway.

Also, prototype set_iointr() here. It's a slightly odd place, but 10*
better than the old place it was, and this file is included by exactly
the perfect set of .c files for set_iointr() visibility.
1998-11-19 01:48:04 +00:00
ross
a68dbb068a Stop including <machine/alpha_cpu.h>; we already export <machine/cpu.h>. 1998-11-19 01:42:37 +00:00
ross
da8b1017f4 "extern struct rpb *hwrpb" belongs here (duhhh) 1998-11-19 01:41:36 +00:00
thorpej
49c62c4336 Changes to support fork_kthread():
- cpu_set_kpc() now takes void *arg third argument, passed to the
  entry point.
- cpu_fork() allows parent to be non-curproc iff parent is proc0.
  When forking non-curproc, assume its state has already been saved.
- Adjust various pieces of machine-dependent code to account of all of this.
1998-11-11 06:41:23 +00:00
chs
61458d7dfa LOCKDEBUG enhancements for non-MP:
keep a list of locked locks.
use this to print where the lock was locked
when we either go to sleep with a lock held
or try to free a locked lock.
1998-11-04 06:19:55 +00:00
ross
8447dd624c 1. STANDALONE -> _STANDALONE
2. Key raw prom interfaces defes on ENABLEPROM
3. Define the prom "ioctl" magtape functions.
1998-10-15 00:47:28 +00:00
kleink
cee25f5a9c Since libc is not ready for enabling weak symbol support yet, disable the
WEAK_ALIAS() macro for now (like cdefs.h).
1998-10-13 11:39:26 +00:00
thorpej
b38544d99e Oops, back out a buglet I didn't intend to commit in the last change. 1998-10-07 18:29:26 +00:00
thorpej
2038eb830c Split hwrpb_restart_setup(), putting the code that initializes the vtpb
and primary hwpcb into hwrpb_primary_init().  Call the latter before
performing autoconfiguration().
1998-10-06 21:10:46 +00:00
thorpej
d681cf055a configure() prototype is in <sys/device.h> 1998-10-06 20:50:15 +00:00
christos
c0f54daf70 Add em_alpha_exp 1998-10-03 18:17:14 +00:00
erh
b0367216c1 Macros to call a linux syscall. 1998-10-01 16:19:59 +00:00
thorpej
69d81d8df1 Prototype cpu_halt_secondary(). 1998-09-29 07:07:36 +00:00
thorpej
2c50ec242f Add basic interprocessor interrupt sending and receiving code. Current
IPI functions: HALT, IMB, TBIA, TBIAP.

XXX HALT is not yet implemented, it's just a stub.
1998-09-26 00:03:51 +00:00
thorpej
e2aa38459c Implement atomic quadword load-and-latch. 1998-09-25 23:59:42 +00:00
thorpej
01c75223d7 Minor style tweaks. 1998-09-25 22:06:33 +00:00
thorpej
57e656b2ec The processor unique value in the PCB is used as a backup kernel stack
pointer when booting secondary CPUs.  Add an alias for it.
1998-09-25 03:21:31 +00:00
thorpej
fcb0203141 First-cut at code to spin up secondary processors on a multiprocessor
Alpha system, conditional on MULTIPROCESSOR.

NOTE: This does not yet work completely.  The secondary CPU begins the
boot process, but never makes it into the cpu spinup trampoline.  This
is merely a snapshot of a work-in-progress.
1998-09-24 23:28:17 +00:00
thorpej
3cde5f5817 Machine-dependent spin lock operations for Alpha, included if MULTIPROCESSOR
is specified.
1998-09-24 22:32:35 +00:00
thorpej
91a031471d Implement atomic test-and-set for longwords (32-bit). 1998-09-24 22:22:07 +00:00
thorpej
1b04ff4897 Make prom_enter() and prom_leave() public. 1998-09-24 21:18:13 +00:00
thorpej
7df5ebc392 "Gee, there was already a function to do that." 1998-09-23 22:02:21 +00:00
thorpej
53d42701b5 Implement a function to recompute the HWRPB checksum. 1998-09-23 21:51:04 +00:00
thorpej
5fa16c668b Define the inter-console communication buffer portion of the per-cpu
info structure.
1998-09-22 08:16:51 +00:00
thorpej
402a9210a2 Implement quadword atomic test-and-set. 1998-09-22 05:56:52 +00:00
thorpej
e10cc7910d Add some support for multiple processors to the pmap module. Still left
to do: TLB shootdown code, but that will be much easier to write once
the code to spin up the additional CPUs is working.
1998-09-22 03:58:10 +00:00
matt
ad921921e4 Add softserial to the alpha port. This significantly improved PPP
throughput on com ports.
1998-09-21 00:33:16 +00:00
thorpej
3eaeeb5357 Add definitions for the maximum allowable `whami' procssor ID and the
maximum number of processors we'll allow (64, assuming procssor IDs start
at 0).
1998-09-20 18:28:50 +00:00
thorpej
a4a356f9a6 Need 83 longs for a jmp_buf now. 1998-09-14 06:07:29 +00:00
thorpej
3ddf828326 Make signal delivery work again. 1998-09-13 01:51:29 +00:00
cgd
5fa7eee1ff don't define __BUS_SPACE_COMPAT_OLDDEFS by default. As stated in
bus_space(9), if drivers want it (they shouldn't; easy to convert) they
can define it right before including bus.h.  There's been a release since
the interfaces were (slightly) changed, and no code in the source tree
uses the old interfaces as far as I can tell.
1998-08-30 23:40:14 +00:00
thorpej
d5df55112a vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t 1998-08-14 16:50:00 +00:00
thorpej
97e83f6e0b Change the "vm_offset_t"s to "u_long"s for now; eventually, we can make
them vaddr_t and paddr_t, as appropriate (after scouring the RPB docs
to know which are phys and virt addresses).
1998-08-14 16:46:09 +00:00
eeh
a2dd74ed79 Merge paddr_t changes into the main branch. 1998-08-13 02:10:37 +00:00
kleink
546365a27e _POSIX_SOURCE -> _POSIX_C_SOURCE 1998-08-06 11:25:04 +00:00
thorpej
bf8f319d0e Remove some lint. 1998-08-01 21:12:32 +00:00
thorpej
528dab6808 Implement alpha_shared_intr_disestablish(). Simply removes the handler
fromthe list, allowing the caller to manipulate the sharing type,
if appropriate.
1998-08-01 18:52:36 +00:00
mycroft
a24dbc8065 (Always) (practice) (safe) (macro expansion). 1998-07-31 15:07:41 +00:00