Commit Graph

542 Commits

Author SHA1 Message Date
wiz
f0d2889eb5 Move
(c) TNF
line from 4-clause UCB to 3-clause UCB license; in other words,
remove UCB's ad clause from the license TNF grants.
There is no point in TNF demanding that UCB's ad clause be followed
when even UCB doesn't demand it any longer.

Ok'd by board@ and agc@.
2004-03-24 15:38:41 +00:00
cl
ea5ec0212d add kernel part of concurrency support for SA on MP systems
- move per VP data into struct sadata_vp referenced from l->l_savp
  * VP id
  * lock on VP data
  * LWP on VP
  * recently blocked LWP on VP
  * queue of LWPs woken which ran on this VP before sleep
  * faultaddr
  * LWP cache for upcalls
  * upcall queue
- add current concurrency and requested concurrency variables
- make process exit run LWP on all VPs
- make signal delivery consider all VPs
- make timer events consider all VPs
- add sa_newsavp to allocate new sadata_vp structure
- add sa_increaseconcurrency to prepare new VP
- make sys_sa_setconcurrency request new VP or wakeup idle VP
- make sa_yield lower current concurrency
- set sa_cpu = VP id in upcalls
- maintain cached LWPs per VP
2004-03-14 01:08:47 +00:00
uwe
590efeca88 Wrap "unknown instruction in prologue" in TRACE_DEBUG. gcc3 reorders
instructions so that prologue code and function code get mixed, and
you get a lot of noice from this printf, making traceback very hard to
read if not useless.
2004-02-23 01:06:53 +00:00
uwe
8939f2bdbd Implement proper switch_exit in assembler. Since cpu_switch is
reduced to just a call to switch_exit, g/c the C version and add a one
instruction assembler version that just falls through to switch_exit.

Addresses PR#24007 by Jaromir Dolecek <jdolecek@netbsd> and makes sh3
kernels work again after his elimination of the reaper.  Tested on hpcsh.
2004-01-18 18:54:17 +00:00
martin
da4e67accc Do not export __HAVE_RAS to userland. Applications are supposed to try
rasctl() and detect failure with EOPNOTSUPP.
2004-01-18 18:23:19 +00:00
uwe
a6ced7eb12 G/c symbols related to structs proc and mdproc. 2004-01-18 05:29:45 +00:00
uwe
dcc320b65f s/proc/lwp/ in comments. 2004-01-18 04:59:52 +00:00
tsutsui
74ba66664f MD cpu_lwp_free() should have the second arg. 2004-01-06 19:30:38 +00:00
jdolecek
089abdad44 Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
  as FPU state), and is the last potentially blocking operation;
  all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
  by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
  for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread
2004-01-04 11:33:29 +00:00
pk
70f20a1217 Replace the traditional buffer memory management -- based on fixed per buffer
virtual memory reservation and a private pool of memory pages -- by a scheme
based on memory pools.

This allows better utilization of memory because buffers can now be allocated
with a granularity finer than the system's native page size (useful for
filesystems with e.g. 1k or 2k fragment sizes).  It also avoids fragmentation
of virtual to physical memory mappings (due to the former fixed virtual
address reservation) resulting in better utilization of MMU resources on some
platforms.  Finally, the scheme is more flexible by allowing run-time decisions
on the amount of memory to be used for buffers.

On the other hand, the effectiveness of the LRU queue for buffer recycling
may be somewhat reduced compared to the traditional method since, due to the
nature of the pool based memory allocation, the actual least recently used
buffer may release its memory to a pool different from the one needed by a
newly allocated buffer. However, this effect will kick in only if the
system is under memory pressure.
2003-12-30 12:33:13 +00:00
christos
a21fdf3b43 bye, bye _MCONTEXT_TO_SIGCONTEXT and vice versa. 2003-11-25 23:11:52 +00:00
uwe
2d6cce4c99 Cosmetic: in sh_vector_generic use named label instead of numeric
label for the curlwp address.  Same object code is generated.
2003-11-24 23:24:18 +00:00
uwe
0457f27ac6 Old sigcode (to be copied out to the bottom of the user stack) is only
necessary for COMPAT_16.
2003-11-24 04:59:24 +00:00
uwe
139976ff9c Cosmetic: u_int32_t -> uint32_t in comments, trim trailing whitespace.
Add __KERNEL_RCSID.
2003-11-24 04:47:42 +00:00
uwe
ce26539142 Add __KERNEL_RCSID. 2003-11-24 04:16:51 +00:00
uwe
62410eae0a Definition of __KERNEL_RCSID for asm files. 2003-11-24 04:07:22 +00:00
uwe
72a0bf93df In db_disasm call get_ascii only if necessary. 2003-11-24 03:33:02 +00:00
uwe
0cfca60cdf general_exception() now receives TEA as a third argument. For user
mode EXPEVT_ADDR_ERR_{LD,ST} traps pass it as ksi_addr, also use it to
decide if this is a SIGBUS (unaliged access) or SIGSEGV (kernel VA
access).

Report EXPEVT_TLB_PROT_LD as SEGV_ACCERR, not SEGV_MAPERR.

While here, consistently use standard uint32_t instead of u_int32_t.
2003-11-24 03:11:16 +00:00
uwe
721c1a1815 Pass TEA to general_exception. While here add a couple of comments. 2003-11-24 03:06:01 +00:00
uwe
9d0d2c7461 Implement siginfo for sh3. 2003-11-23 23:13:11 +00:00
uwe
94c8b6c69f Add _UC_SETSTACK, _UC_CLRSTACK flags. Add __fpr_fpul to __fpregset_t
and redefine __fpr_regs as an array of 32 ints (SH3E has 16, SH4 has
32 32-bit FP registers) to reserve the space for FPU registers - we
will properly redefine this as a union when we do support FPU.
2003-11-22 17:05:53 +00:00
uwe
246d903de4 In intc_intr_priority() don't panic if the evtcode is not one of
those, that have their priority set in IPR registers, e.g. IRL
interrupts on Dreamcast.  Reported by Christian Groessler.
2003-11-20 01:22:19 +00:00
uwe
66008dfef1 Fix cpu_switchto() to correctly prepare new lwp before switching to it.
Fixes PR port-sh3/19956.

Big thanks to Christian Limpach <cl@> for pointing this out and
explaning what the fix is.
2003-11-16 00:07:13 +00:00
uwe
60f0942660 Tweak KDASSERT to avoid double negation. 2003-11-15 23:47:58 +00:00
uwe
81468ece49 Register definitions for SH7709 DAC. 2003-11-05 03:08:13 +00:00
uwe
7dac2eaa7a Add closing parenthesis missed in previous. 2003-11-05 01:43:16 +00:00
dsl
2ffbd2ab99 Remove p_nras from struct proc - use LIST_EMPTY(&p->p_raslist) instead.
Remove p_raslock and rename p_lwplock p_lock (one lock is enough).
Simplify window test when adding a ras and correct test on VM_MAXUSER_ADDRESS.
Avoid unpredictable branch in i386 locore.S
(pad fields left in struct proc to avoid kernel bump)
2003-11-04 10:33:15 +00:00
uwe
399158308d Redo a quick hack for intc_intr_disable() and intc_intr_enable() to have
a saner interface/semantic.
2003-11-04 03:13:48 +00:00
uwe
818209017c In intc_intr_priority init iprreg to pacify gcc. 2003-11-01 02:24:49 +00:00
tsutsui
d135aa4588 In swap_endian_disklabel(), don't forget copy members which are not
needed to byteswap.
2003-10-31 17:04:12 +00:00
cl
ef56cc40ab Reduce code duplication by adding mi_userret() in sys/userret.h
containing signal posting, kernel-exit handling and sa_upcall processing.

XXX the pc532, sparc, sparc64 and vax ports should have their
XXX userret() code rearranged to use this.
2003-10-31 16:44:34 +00:00
simonb
6d85c5e0d5 Don't pass the (unused) return value args to the
trace_enter()/systrace_enter() functions.
2003-10-31 03:28:12 +00:00
uwe
c8e97f8a45 When signaling SIGTRAP for debugger break adjust pc to point back to
the TRAPA instruction.  This makes gdb much happier.
2003-10-31 02:59:29 +00:00
uwe
811af2c58f tlb_exception: pacify -Wuninitialized by adding default case. 2003-10-31 02:46:58 +00:00
kleink
a3fabb9e7f Use <sys/ieee754.h> where applicable. 2003-10-26 20:55:30 +00:00
uwe
49fd54d39a Use adcvar.h. 2003-10-22 23:52:46 +00:00
uwe
5846d07065 Don't compare a char to NULL. 2003-10-22 21:13:44 +00:00
uwe
ae7219a39a Don't compare an integer to NULL. 2003-10-22 21:10:15 +00:00
uwe
49bb9c9d40 Don't compare an integer variable to NULL. 2003-10-22 21:09:09 +00:00
uwe
437e63c180 __KERNEL_RCSID. 2003-10-19 02:22:56 +00:00
uwe
a2a5c1629e Make intc_intr_priority() return old level. While here, make the code
more compact by factoring out register update to happen in one place,
outside the switch statements.

Add intc_intr_disable() and intc_intr_enable().
2003-10-18 23:21:35 +00:00
uwe
15e3e96e71 Config glue for adc(4). 2003-10-18 01:29:05 +00:00
uwe
721e6868b8 Driver for analog->digital converter in sh7709. 2003-10-18 01:27:18 +00:00
uwe
390e87a8b6 Use 'CH' for channel select in the ADCSR bits format string for consistency. 2003-10-15 22:55:07 +00:00
cl
e9de14a4d3 add MD part of SA/pthread pagefault handling on sh3 2003-10-13 18:08:45 +00:00
uwe
81428320f3 Register definitions for sh7709 analog->digital converter. 2003-10-10 23:52:30 +00:00
uwe
a348eb3a30 Add IPR mappings for remaining sh7709 IRQx.
While here, fix couple of typos.
2003-10-08 23:31:43 +00:00
thorpej
901da40cf9 Add some accessor macros for the ucontext:
* _UC_MACHINE_PC() - access the program counter
* _UC_MACHINE_INTRV() - access the integer return value register
* _UC_MACHINE_SET_PC() - set the program counter (this requires
  special handling on some platforms).
2003-10-08 22:43:01 +00:00
lukem
1c33b4e6a4 Overhaul MBR handling (part 1):
<sys/bootblock.h>:
    *	Added definitions for the Master Boot Record (MBR) used by
	a variety of systems (primarily i386), including the format
	of the BIOS Parameter Block (BPB).
	This information was cribbed from a variety of sources
	including <sys/disklabel_mbr.h> which this is a superset of.

	As part of this, some data structure elements and #defines
	were renamed to be more "namespace friendly" and consistent
	with other bootblocks and MBR documentation.
	Update all uses of the old names to the new names.

<sys/disklabel_mbr.h>:
    *	Deprecated in favor of <sys/bootblock.h> (the latter is more
	"host tool" friendly).

amd64 & i386:
    *	Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
	be consistent with the naming convention of the msdosfs tools.

    *	Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
	and it's confusing to have two functionally equivalent bootblocks,
	especially given that "ufs" has multiple meanings (it could be
	a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).

    *	Rework pbr.S (the first sector of bootxx_*):
	    +	Ensure that BPB (bytes 11..89) and the partition table
		(bytes 446..509) do not contain code.
	    +	Add support for booting from FAT partitions if BOOT_FROM_FAT
		is defined.  (Only set for bootxx_msdos).
	    +	Remove "dummy" partition 3; if people want to installboot(8)
		these to the start of the disk they can use fdisk(8) to
		create a real MBR partition table...
	    +	Compile with TERSE_ERROR so it fits because of the above.
		Whilst this is less user friendly, I feel it's important
		to have a valid partition table and BPB in the MBR/PBR.

    *	Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
	with other platforms.

    *	Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
    	we can boot off FAT partitions.

    *	Crank version of /usr/mdec/boot to 3.1, and fix some of the other
	entries in the version file.

installboot(8) (i386):
    *	Read the existing MBR of the filesystem and retain the BIOS
    	Parameter Block (BPB) in bytes 11..89 and the MBR partition
	table in bytes 446..509.  (Previously installboot(8) would
	trash those two sections of the MBR.)

mbrlabel(8):
    *	Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
	to map the MBR partition type to the NetBSD disklabel type.


Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).
2003-10-08 04:25:43 +00:00
uwe
576576bafb Add definitions for IRR0 bits. 2003-10-07 01:24:32 +00:00