Commit Graph

967 Commits

Author SHA1 Message Date
lukem
b313b2641e Userland needs <stddef.h> for offsetof(), not <lib/libkern/libkern.h> ...
(Arguably a chunk more of this file could be protected with _KERNEL.
That's a separate project.)
2003-10-10 06:27:15 +00:00
yamt
d9d3c0dd8e avoid a magic number in curcpu(). 2003-10-09 13:46: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
junyoung
d1486d51cb Rearrange instructions for better use of pipeline. This shaves off 0.5%
of time on interrupt/trap entry on my Athlon 1800.
2003-10-04 05:57:51 +00:00
christos
6fc26a7684 add SIGTRAMP_VALID and gc old sigcontext <-> ucontext macros. 2003-09-27 03:14:31 +00:00
nathanw
4d59420344 Move __cpu_simple_lock_t and __SIMPLELOCK_{UN,}LOCKED to machine/types.h
so that they can be used in a namespace-friendly way.
2003-09-26 22:45:41 +00:00
christos
cfba45c856 constify sendsig/trapsignal 2003-09-25 22:00:02 +00:00
christos
9889f06536 make sigcontext visible all the time instead of including opt_*.h from a
large number of files.
2003-09-12 01:13:35 +00:00
christos
2bf3634159 fix typo. 2003-09-11 20:48:35 +00:00
christos
7340db7385 Bring back sigcontext to userland by popular demand. 2003-09-11 20:22:30 +00:00
christos
99ee91793f make vm86 use __gregset_t 2003-09-11 19:17:07 +00:00
christos
a6540cf740 XXX: vm86 for sigcontext comment is gone. 2003-09-11 19:16:05 +00:00
kleink
d440784b30 __{BEGIN,END}_DECLS-wrap prototypes. 2003-09-11 09:40:11 +00:00
christos
4d5acf4941 expose sendsig_sigcontext for compat_16 2003-09-10 19:49:22 +00:00
christos
f7f3566b1e #ifdef struct sigframe_sigcontext and struct sigcontext, so that only code
that really needs them, get them.
XXX1: We need to fix the vm86 api.
XXX2: We need to fix the ibcs2 signal delivery mechanism.
2003-09-10 16:48:16 +00:00
christos
1dc335c017 SA_SIGINFO changes. 2003-09-06 22:03:09 +00:00
tron
c8232f0d0f Protect inclusion of "opt_vm86.h" with "#ifdef _KERNEL_OPT" as appropriate. 2003-08-25 13:11:30 +00:00
drochner
8085017e31 fix _UC_MACHINE_SP() for the vm86 case: we have to add the SS offset 2003-08-25 09:20:25 +00:00
chs
939df36e55 add support for non-executable mappings (where the hardware allows this)
and make the stack and heap non-executable by default.  the changes
fall into two basic catagories:

 - pmap and trap-handler changes.  these are all MD:
   = alpha: we already track per-page execute permission with the (software)
	PG_EXEC bit, so just have the trap handler pay attention to it.
   = i386: use a new GDT segment for %cs for processes that have no
	executable mappings above a certain threshold (currently the
	bottom of the stack).  track per-page execute permission with
	the last unused PTE bit.
   = powerpc/ibm4xx: just use the hardware exec bit.
   = powerpc/oea: we already track per-page exec bits, but the hardware only
	implements non-exec mappings at the segment level.  so track the
	number of executable mappings in each segment and turn on the no-exec
	segment bit iff the count is 0.  adjust the trap handler to deal.
   = sparc (sun4m): fix our use of the hardware protection bits.
	fix the trap handler to recognize text faults.
   = sparc64: split the existing unified TSB into data and instruction TSBs,
	and only load TTEs into the appropriate TSB(s) for the permissions.
	fix the trap handler to check for execute permission.
   = not yet implemented: amd64, hppa, sh5

 - changes in all the emulations that put a signal trampoline on the stack.
   instead, we now put the trampoline into a uvm_aobj and map that into
   the process separately.

originally from openbsd, adapted for netbsd by me.
2003-08-24 17:52:28 +00:00
fvdl
c43b35423e Pass pointers to frames from assembly, do not use the 'frame on stack
as argument passed by value' trick, as gcc 3.3.x makes (valid) assumptions
about the stack that will not be true. Costs 2 instructions per trap/syscall
on i386, 4 per interrupt for MP. One instruction per trap/syscall on amd64,
2 per interrupt for MP. I expect gcc 3.3.1 to make up for this by better
optimization (it'd better..)

While here, make amd64 compile again by using subr_mbr_disk.c
2003-08-20 21:48:35 +00:00
yamt
e6483a7858 - leave a compiler which register is used for an asm argument.
- use correct asm constraints.
- eliminate usage of dummy variables.
2003-08-13 12:40:31 +00:00
yamt
fd72624430 use correct asm operand indexes.
(previously 'GLptr' was used as mask.)
this long standing bug seems to be uncovered by
my previous change(rev.1.2) on some machines.

PR/22457 from Matthias Scheler, and tested by him.
2003-08-13 12:38:35 +00:00
atatat
3e5ef14f22 Make sure to wrap include opt_foo.h in _KERNEL_OPT. 2003-08-11 13:20:39 +00:00
yamt
b1eb92cb46 in ACPI_ACQUIRE_GLOBAL_LOCK,
don't assume that the reserved bits of the global lock are all zero.
it's actually needed for, at least, IBM Thinkpad X21 (2662-64J).
2003-08-09 17:35:43 +00:00
christos
bbb5cbabcf cleanup the mess with KERNBASE and KERNBASE_LOCORE. 2003-08-08 20:13:04 +00:00
agc
aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
yamt
f5721758ca move pv_head and page attributes into md part of vm_page structure
instead of having separate arrays for them.
(i.e. use __HAVE_VM_PAGE_MD instead of __HAVE_PMAP_PHYSSEG.)
2003-07-22 13:55:31 +00:00
tls
dacf9875c8 Allow redefiniton of KERNBASE. Because the type of this constant is
different for locore.S and the rest of the kernel, if you redefine
it from the default value, you must also define KERNBASE_LOCORE -- this
is ugly, but so is having the same constant with two different types
depending where in the kernel it's used...
2003-07-18 17:33:05 +00:00
dsl
a1484d22a6 Remove 'dosparts' it hasn't been used for a while (if ever). 2003-07-07 13:30:10 +00:00
fvdl
d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
darrenr
960df3c8d1 Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records.  The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
2003-06-28 14:20:43 +00:00
drochner
1fa5ee8d10 make cpu_feature unsigned, just like ci_feature_flags 2003-06-26 16:45:19 +00:00
drochner
31f515916f -make cpu_feature unsigned, just like ci_feature_flags
-clean up duplicate declaration of cpu_info_primary
2003-06-26 16:41:32 +00:00
martin
4858ba3d93 Protect kernel opt_*.h include by #ifdef _KERNEL_OPT 2003-06-23 12:56:07 +00:00
martin
d505b18964 Make sure to include opt_foo.h if a defflag option FOO is used. 2003-06-23 11:00:59 +00:00
kleink
9adea725c5 {u,}intptr_t are ints again. 2003-05-30 11:07:38 +00:00
christos
0328813526 Back to unsigned int and int for {u,}intptr_t, otherwise java has no chance... 2003-05-29 18:06:55 +00:00
kristerw
5c192de38a Use __asm instead of asm, to make lint happy. 2003-05-20 22:53:35 +00:00
wiz
8381108e2a Don't install machine/mouse.h on i386 and prep; there are no users for
the old busmouse interface any longer, we use wsmouse now.
2003-05-15 18:51:18 +00:00
fvdl
19bd661dcc Add a new include file with some ACPI MD macros, to move i386 specific
stuff out of acnetbsd.h
2003-05-11 21:05:19 +00:00
fvdl
7579aadd9b Redirect to x86/ 2003-05-11 18:46:59 +00:00
fvdl
f946c62f8e Redirect to x86/. 2003-05-11 18:18:08 +00:00
fvdl
795fec2b60 The i82093 spec is unclear about it, but my assumption that the selected
ioapic register would stick across a read+write appears to be invalid
for some ioapics. So, select it again for the mask write.
2003-05-11 14:02:17 +00:00
thorpej
2a90e2a9c9 Remove redundant bounds_check_with_label() prototype. 2003-05-10 16:12:02 +00:00
fvdl
9ad6da9936 Move x86_pause() out of ifdef _KERNEL. 2003-05-08 10:27:43 +00:00
fvdl
8aca0c88d2 Add x86_pause() inline function, containing the "pause" instruction
for i386, and nothing for amd64. Sprinkle it in various spinloops,
as recommended by Intel.
2003-05-08 01:04:34 +00:00
fvdl
2cd70f0da1 Block level-triggered interrupts at the ioapic if they are deferred.
Avoids interrupt storms seen on some systems. Many thanks to
Stoned Elipot for testing.
2003-05-04 22:01:56 +00:00
yamt
4b800ec987 set symbol to be a function using .type directive in IDTVEC macro
so that ddb backtrace can pick them up after recent ksyms changes.

suggested by Matt Thomas on tech-kern.
ok'ed by Frank van der Linden.
2003-05-02 18:05:46 +00:00
scw
8c5c893bf7 Add a BKPT_ADDR() macro which gives MD code a chance to munge a
breakpoint address before it's used. Currently a no-op on all but sh5.

This is useful on sh5, for example, to mask off the instruction
type encoding in the bottom two address bits, and makes it possible
to do "db> break $rXX" instead of manually munging the address.
2003-04-29 17:06:03 +00:00
bjh21
4be7a2dcf3 Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
  can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
  various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
  !defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them.  In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.
2003-04-28 23:16:11 +00:00
fvdl
4b293b5851 Share some common cache info cpuid code between i386 and x86_64. 2003-04-25 21:54:29 +00:00
thorpej
a0aee79a1d Add the ability for pool caches to cache the physical address of
objects.  Clients of the pool_cache API must consistently use
the "paddr" variants or not, otherwise behavior is undefined.

Enable this on Alpha, ARM, MIPS, and x86.  Other platforms must
define POOL_VTOPHYS() in the appropriate manner in order to enable
the feature.

Part 1 of a series of simple patches contributed by Wasabi Systems
to improve network performance.
2003-04-09 18:22:13 +00:00
thorpej
fe57487140 Remove something accidentally included in last commit. 2003-04-09 18:17:34 +00:00
thorpej
cc2c493bc4 Use PAGE_SIZE rather than NBPG. 2003-04-02 07:35:54 +00:00
kristerw
820df2464a Remove unneeded cast that prevents PC_REGS from being used as lvalue. 2003-03-30 02:03:12 +00:00
fvdl
93d2b9ee12 Add some underscores in curcpu() to avoid a -Wshadow. 2003-03-18 22:29:58 +00:00
cjep
de21c5e413 kernal -> kernel 2003-03-16 19:42:09 +00:00
fvdl
e1a37a9604 Define read_psl and write_psl as aliases for read_eflags and write_eflags. 2003-03-04 22:43:09 +00:00
fvdl
b2a3a55d38 Enable the define for EISA MPBIOS support. 2003-03-04 22:19:32 +00:00
fvdl
5d9be5f0db The IDT only contains gate descriptors, so define it as such. 2003-03-03 22:14:15 +00:00
fvdl
1b64bc0ae7 define pmap_cpu_has_pg_n and pmap_cpu_has_invlpg to make code sharing
easier.
2003-03-03 22:13:16 +00:00
fvdl
3ebdf8bcc3 Make CVAR asm reference macro CVAROFF, taking an offset. 2003-03-03 22:12:22 +00:00
tshiozak
31e2cbf0b5 add some ISO C 1995 I18N functions and types:
btowc, wctrans, towctrans, wcscoll, wcsxfrm, wctype_t and wctrans_t.
2003-03-02 22:18:11 +00:00
fvdl
8d69f823b1 Redirect to x86/ 2003-03-02 18:09:42 +00:00
fvdl
aeaf29a3a3 Redirect to x86/cpuvar.h 2003-03-01 18:30:03 +00:00
fvdl
a3b7772adf Move the CPU identification out of machdep.c into a seperate file. 2003-03-01 16:37:51 +00:00
fvdl
c0ed70b13c Adapt for move to x86/include. 2003-02-27 00:12:21 +00:00
fvdl
a33bcafdf1 Redirect some includes to x86/foo.h 2003-02-26 21:28:59 +00:00
atatat
860ed88533 #include opt_uvm.h in machine/vmparam.h (for those ports offering the
topdown option) so that including it directly before including
uvm/uvm_param.h (or uvm/uvm_extern.h which includes uvm/uvm_param.h)
and attempting to use topdown won't result in a compiler error.

Problem noted in private email.
2003-02-23 19:13:43 +00:00
fvdl
11e36a204f For x86_64, split the bootinfo memory entry words to avoid growth of the
structure due to alignment.
2003-02-23 02:45:44 +00:00
atatat
df0a9badc6 Introduce "top down" memory management for mmap()ed allocations. This
means that the dynamic linker gets mapped in at the top of available
user virtual memory (typically just below the stack), shared libraries
get mapped downwards from that point, and calls to mmap() that don't
specify a preferred address will get mapped in below those.

This means that the heap and the mmap()ed allocations will grow
towards each other, allowing one or the other to grow larger than
before.  Previously, the heap was limited to MAXDSIZ by the placement
of the dynamic linker (and the process's rlimits) and the space
available to mmap was hobbled by this reservation.

This is currently only enabled via an *option* for the i386 platform
(though other platforms are expected to follow).  Add "options
USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild
your kernel to take advantage of this.

Note that the pmap_prefer() interface has not yet been modified to
play nicely with this, so those platforms require a bit more work
(most notably the sparc) before they can use this new memory
arrangement.

This change also introduces a VM_DEFAULT_ADDRESS() macro that picks
the appropriate default address based on the size of the allocation or
the size of the process's text segment accordingly.  Several drivers
and the SYSV SHM address assignment were changed to use this instead
of each one picking their own "default".
2003-02-20 22:16:05 +00:00
fvdl
f2ef2f16fa Revert previous. This file is also used on x86_64, you see. 2003-02-19 00:15:19 +00:00
jdolecek
ced8cde749 make k6_mtrr_funcs, i686_mtrr_funcs and mtrr_funcs const
remove extern definition for i686_mtrr_funcs from include/mtrr.h, it's
not used outside mtrr_i686.c
2003-02-09 09:38:23 +00:00
nakayama
e3e4805068 Replace machine/rnd.h with more appropriate name to share it
with cycle counter based microtime in kern/kern_microtime.c.
2003-02-05 13:57:50 +00:00
nakayama
64eb1178ab Share i386/tsc_microtime.c with alpha and sparc64 as kern_microtime.c.
(approved by martin)
2003-02-05 12:18:01 +00:00
thorpej
84855a5789 Test _KERNEL_OPT before including opt_*.h files. 2003-01-30 19:59:29 +00:00
drochner
e3b243beb8 give some VM which was reserved for the UAREA but not used anymore back
to the user and adjust some comments (which were not accurate anyway
since NOREDZONE)
binary compatibility note: changing VM_MAXUSER_ADDRESS might influence
some sanity check in kvm_proc, where arguments on the stack are dealt
with, but it was a variable anyway and noone did care...
2003-01-29 14:12:35 +00:00
kent
cd7d9faeaf Introduce BUS_DMA_NOCACHE, and bus_dmamem_map() of i386 supports it. 2003-01-28 01:07:51 +00:00
thorpej
a50e3bc1cb Merge the nathanw_sa branch. 2003-01-17 22:58:53 +00:00
fvdl
86ae625e2c Declare nioapics as well. 2003-01-13 01:19:34 +00:00
fvdl
a4880cb372 Export the ioapic softc linked list, for the benefit of the mpbios code. 2003-01-12 23:20:17 +00:00
fvdl
3cef21b0f5 Pass acpi_softc down to mpacpi functions. 2003-01-10 00:45:52 +00:00
fvdl
c2ff6d5b83 Add various external declarations to accomodate ACPI MP probing as an
alternate method to MPBIOS probing. Move some stuff common to the two
methods into mpconfig.h
2003-01-07 18:48:44 +00:00
sommerfeld
52b083a154 Add symbolic names for MSR's used by SYSENTER/EXIT.
(I was experimenting a while back, might as well commit this one file..)
2003-01-05 22:47:13 +00:00
kristerw
2ae40935fb The correct way to decorate objects with attributes is to use __attribute__
instead of the synonyms understood by gcc.
2002-12-28 20:11:57 +00:00
gmcgarry
7443ad1b01 Move to MI runqueue functions. 2002-12-17 19:47:15 +00:00
jdolecek
30f7194bc4 use the __HAVE_CPU_MAXPROC hook to limit kern.maxproc to number
of available GDT slots
add code in init386() to force maxproc to be maximum cpu_maxproc()

this fixes port-i386/1635 by John Kohl
2002-12-16 18:31:08 +00:00
fvdl
4bd73a650e Remove leftover declarations used for debugging purposes only. 2002-12-16 16:22:50 +00:00
christos
09e9a5cde9 This new file is wanted by compat_darwin. 2002-12-12 17:41:53 +00:00
joda
86b7f22e4f cpuid feature bit 30 is set on IA-64 (in x86 mode) 2002-12-11 13:50:14 +00:00
fvdl
a167f47c0c Since a CPU may spin waiting for another CPU to handle an IPI, an
IPI must be the very first thing to be handled in splx(), if it
had been blocked before. Change things around a bit to guarantee
this.
2002-12-11 12:02:07 +00:00
thorpej
e8cc3884de Rename __LDPGSZ to AOUT_LDPGSZ, to accurately reflect what it is. 2002-12-10 17:14:02 +00:00
thorpej
78ea2dd367 Use __LDPGSZ (which must be == USRTEXT) as the text address for a.out
executables, and eliminate the USRTEXT constant, which was only used
by the a.out exec code.
2002-12-10 05:14:24 +00:00
junyoung
6e278393ba Don't pollute struct cpu_info with throwaway variables. 2002-12-06 14:47:07 +00:00
junyoung
281fa073dc Display the extended feature flags with non-Intel processors rather than
the standard flags. See also PR#19163.

Before:

cpu0: AMD Athlon XP 1800+ (686-class), 1532.11 MHz
cpu0: features 383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>
cpu0: features 383f9ff<PGE,MCA,CMOV,FGPAT,PSE36,MMX>
cpu0: features 383f9ff<FXSR,SSE>

After:

cpu0: AMD Athlon XP 1800+ (686-class), 1532.11 MHz
cpu0: features c3cbf9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>
cpu0: features c3cbf9ff<PGE,MCA,CMOV,PAT,PSE36,MPC,MMXX,MMX>
cpu0: features c3cbf9ff<FXSR,SSE,3DNOW2,3DNOW>

While I'm here, amd_cpuid_cpu_cacheinfo() is an info function rather
than a probe function.
2002-12-06 02:38:25 +00:00
junyoung
a2a55f2564 - FGPAT -> PAT, as documented in Intel manual.
- Feature flag 31 is "Signal Break on FERR" (SBF).
2002-12-05 17:25:26 +00:00
fvdl
8848e366f2 For softints, there's no intrframe on the stack, so don't try to use it.
Use a seperate lock function (in taking the same lock) instead.
2002-12-01 00:15:36 +00:00
fvdl
1e23499b18 Make biosgeom struct packed, so that it works out on x86_64. 2002-11-30 13:46:26 +00:00
fvdl
6da8034165 Think before committing.. previous wasn't actually needed, the values are
guaranteed to fit in 32 bits when loading the kernel into physmem,
and it avoids bootloader incompatibility.
2002-11-29 19:38:24 +00:00