Commit Graph

356 Commits

Author SHA1 Message Date
cgd 96acdadef7 First step inn removing config_scan() and the hacks that gave devices
on indirect-config busses a (permanent) softc that they could share
between 'match' and 'attach' routines:

Define __BROKEN_INDIRECT_CONFIG so that old autoconfiguration
interfaces are used, until drivers are converted to use the new
interfaces (actually, converted back to use the _older_ interfaces)
which prohibit indirect configuration devices from receiving a softc
in their match routine that they can share with their attach routine.
1996-12-05 00:13:47 +00:00
fvdl 380174248f Change asm.h to make it usable for kernel profiling as well.
Make mcount() a prototype in profile.h
1996-12-04 00:03:41 +00:00
fvdl 2775763610 Added types/definitions for changed CPU recognition code. 1996-12-03 23:54:54 +00:00
thorpej 3883cff7fb Oops, bus_space_set_{multi,region}_N() is supposed to have an `offset'
argument.  Add one to the `prototype' in the comment which preceeds
`not implemented' :-)
1996-12-02 05:35:13 +00:00
jtc 9da5f60715 PROF -> GPROF 1996-11-30 02:48:57 +00:00
jtk 73b960a308 add pre-probe step so that autoconfiguration does not print 'apm0 at
mainbus0 not configured' message if configured but not present in the
BIOS
1996-11-22 00:19:07 +00:00
fvdl c15f6d921f Changes for NKPDE calculation from cgd.
- New variables: biosextmem, biosbasemem, nkpde
- Above can be set by using the options BIOSEXTMEM, BIOSBASEMEM,
  and NKPDE respectively (EXTMEM_SIZE is now called BIOSEXTMEM).
  When preset this way, they won't be filled in / calculated.
- Readable by sysctl using machdep.nkpde, machdep.biosbasemem
  and machdep.biosextmem.
- nkpde is calculated as:

	min(NKPDE_MAX, NKPDE_BASE + (biosextmem >> 10) * NKPDE_SCALE)

  Where NKPDE_MAX is 31, NKPDE_BASE is 4, NKPDE_SCALE = 1.
1996-11-18 01:06:09 +00:00
jtc 16b48272c4 Define _BSD_CLOCKID_T_ and _BSD_TIMER_T_ 1996-11-15 22:38:45 +00:00
fvdl ac0bb07268 Add MACHINE_NONCONTIG as a define. 1996-11-15 09:21:41 +00:00
thorpej e463f9241e Two things pointed out by Chris Demetriou <cgd@cs.cmu.edu>:
- The boundary argument to bus_space_alloc() should be a bus_size_t, not
  a bus_addr_t.
- The buffer arguments in the "multiple write" methods should have
  const qualifiers.

And one from me:
- Make bus_space_barrier() eat up the arguments passed to it so that
  the compiler doesn't needlessly whine.
1996-11-10 03:19:25 +00:00
thorpej 16c4c5af26 New bus.h implementation/interface:
- No more distinction between i/o-mapped and memory-mapped
	  devices.  It's all "bus space" now, and space tags
	  differentiate the space with finer grain than the
	  bus chipset tag.
	- Add memory barrier methods.
	- Implement space alloc/free methods.
	- Implement region read/write methods (like memcpy to/from
	  bus space).
This interface provides a better abstraction for dealing with
machine-independent chipset drivers.
1996-10-21 22:24:37 +00:00
christos 06555645c2 printf -> kprintf, sprintf -> ksprintf 1996-10-11 00:24:36 +00:00
christos 1f54d4ded6 add in_addr_t and in_port_t and use them. 1996-10-11 00:02:47 +00:00
cgd 472889f8e4 moved to aout_machdep.h (via repository copy) 1996-10-08 12:57:37 +00:00
christos 0b99fde177 Fix PR/2782: Remove definition of dos_partitions[]. 1996-10-01 00:06:05 +00:00
cgd 0e097578a2 add and use a machine-dependent header, which currently defines some
macros to use to remove #ifdefs from the machine ID case check.
Eventually, these headers will contain other information, e.g.
machine-dependent relocation information, etc.
1996-09-26 21:50:55 +00:00
jtk 2b5e1cd158 clean up missing prototype, extra variable 1996-09-10 11:22:33 +00:00
jtk 1a1feb3827 change APM to use new almost-generalized BIOS trampoline:
/*
 * void bioscall(int function, struct apmregs *regs):
 * 	call the BIOS interrupt "function" from real mode with
 *	registers as specified in "regs"
 *	(for the flags, though, only these flags are passed to the BIOS;
 *	the remainder come from the flags register at the time of the call:
 *	(PSL_C|PSL_PF|PSL_AF|PSL_Z|PSL_N|PSL_D|PSL_V)
 *
 *	Fills in *regs with registers as returned by BIOS.
 */

Thanks to Charles Hannum for complaining and inspiring me to hack this
together.
1996-09-08 15:43:37 +00:00
mycroft 2bc736661a Implement poll(2). 1996-09-07 12:40:22 +00:00
jtk f613796771 make all constants use APM_ prefix, and some other minor cleanup so that
this can be the sole APM include file
1996-08-30 02:36:00 +00:00
jtk b86b695240 add Advanced Power Management driver
Includes bootstrap support from FreeBSD (Tatsumi HOSOKAWA and <ukai>)
1996-08-25 23:38:57 +00:00
thorpej 8c2f15c6fc New implementation of bus_io_{,un}map() for the i386. Details:
- A fixed extent map (statically allocated descriptor storage) is
	  created in init386(), just before the call to consinit().  The
	  fixed descriptor storage has enough room for 8 region entires,
	  which is plenty for early initialization, but doesn't chew up
	  that much memory.

	  This extent map (ioport_ex) manages the i386 i/o port
	  space (0x0 - 0xffff).

	- Just before the call to configure() in cpu_startup(), a
	  flag is set which notifies the bus_io functions that it is
	  safe to use malloc() to allocate descriptor storage, in the
	  event that more than 8 regions are needed.

	- bus_io_map() attempts to allocate the specified region from
	  ioport_ex.  If the allocation succeeds, the io handle is
	  filled in.  If the allocation fails, it is implied that
	  something else is already using that io space, and an
	  error condition is returned.

	- bus_io_unmap() frees a region previously allocated from
	  ioport_ex in bus_io_map().  If the free fails, a warning
	  is printed on the conole.

These changes implement "port accounting".  This is required for
proper autoconfiguration on the i386 port, and makes dealing with,
among other things, PCMCIA io mappings _much_ easier.
1996-06-23 19:59:06 +00:00
mycroft b3d8a261b9 Make imask[] larger, to match other changes. 1996-05-13 06:11:28 +00:00
mycroft 635c72115c Add multiple-inclusion protection. 1996-05-13 01:35:06 +00:00
mycroft 417bb90896 Move spl*() and soft interrupt definitions into intr.h. For now, include it
from psl.h.  XXX Will change after release.
1996-05-13 01:28:01 +00:00
mycroft a8e2ce97e4 Implement IPL_HIGH. 1996-05-12 23:06:06 +00:00
mycroft 9f8f77f8f6 Move IPL_* and IST_* constants into intr.h. 1996-05-12 22:52:23 +00:00
jtc 0edf3579f4 Revert last change.
Changing types from unsigned {long,short} to u_int{32,16}_t causes problems
in a lot of userlevel code because those types aren't defined when machine/
endian.h is included.  And IMO including sys/types.h in machine/endian.h
is clearly wrong.

XPG4.2 defines new types in_addr_t and in_port_t for the {h,n}to{n,h}{l,s}
functions.  But we don't have time to figure out the implementation issues
given the current release schedule.
1996-05-08 20:00:38 +00:00
christos 59fdcbc7ad Change the prototype of fillw from (int, caddr_t, size_t) to
(short, void *, size_t).
1996-05-05 19:29:26 +00:00
christos 573f5e0cd6 Add the joystick 1996-05-05 19:28:34 +00:00
christos b927d7be11 Fwd declarations for MD drivers. 1996-05-03 19:34:11 +00:00
christos 8fd0f1f8b3 Add missing prototypes. 1996-05-03 19:26:28 +00:00
christos 391a4ddc7c use u_int32_t instead of unsigned long
and u_int16_t instead of short in the {h,n}to{n,h}{l,s} inline routines
and macros.
1996-05-03 19:25:23 +00:00
christos 0b3580eb25 Comment out unused routines; add prototype for kdb_trap 1996-05-03 19:23:59 +00:00
christos dc3ce37d53 Add prototypes from other files. 1996-05-03 19:22:49 +00:00
christos 1044435088 Avoid unused variable warnings, by using the first argument to the bus
functions.
1996-05-03 19:22:18 +00:00
mycroft 7511a5540e Remove BIOSSEG.
Don't mess with the flags when entering a software interrupt.
Use IF, not VIF.
NOTE: These changes break dosemu, but are required for proper emulation.
1996-04-30 10:35:25 +00:00
mycroft 47bf863ac1 Make some of the flag handling clearer. No functional change. 1996-04-18 10:04:32 +00:00
mycroft 035e9c211e Use the flag mask in a somewhat more sane fashion. 1996-04-12 05:57:43 +00:00
mycroft c8ab43244b Actually keep track of the naughty PSL bits.
Use VIF, rather than IF, by default, to be compatible with dosemu.  XXXX
1996-04-11 10:07:17 +00:00
mycroft 48643c6605 Export [gs]et_vflags(), and always use them when saving/restoring registers
in VM86 mode.
Allow changing of *all* PSL bits in VM86 mode; some applications don't work
right otherwise, and all the nasty bits are virtualized anyway.
Make sure PSL_VIF, PSL_VIP, and PSL_VM don't show up in the user's view of
the PSL.
1996-04-11 07:47:33 +00:00
thorpej 84c7027789 Add bus_io_{read,write}_multi_{1,2,4,8}() to the <machine/bus.h>
interface, and implement them (except for the 8-byte versions) on
the i386.
1996-04-05 23:59:37 +00:00
mycroft 6424af4c10 Prototype delay(). 1996-03-29 00:23:28 +00:00
perry ee2fa11baf add joystick driver from Matthieu Herrb (pr #2267) 1996-03-27 19:11:13 +00:00
jtc 2ce5f1478b Add _BSD_WINT_T_ definition so we can handle wint_t type added in NA1. 1996-03-16 01:31:45 +00:00
ghudson 4e0c8707f7 To enable people to mount DOS partitions on disks with no NetBSD
partition, add the MBR partitions to the default (faked-up)
disklabel used by NetBSD if it can't find a real one.  If the
type of the MBR partition is one of the common DOS ones, mark the
partition as having an MSDOS filesystem.
1996-03-09 20:52:54 +00:00
cgd 0b56afadf3 make this idempotent. bus.h needs to include it, and other things which
may include something that includes bus.h may include it as well.
1996-03-08 20:15:23 +00:00
cgd 6826c7bf48 bus memory and I/O space access functions/macros, to be used by
machine-independent code for more sane access to bus resources.
New functions will be added to this set, in the future, as appropriate,
but this is a good starting set.  Defines:
	bus_{io,mem}_{map,unmap}
	bus_{io,mem}_{read,write}_{1,2,4,8}
functions, and several types to go with them.
1996-03-08 20:11:23 +00:00
cgd 18ec26aa21 add _MACHINE and _MACHINE_ARCH, which are like MACHINE and MACHINE_ARCH,
execpt without quotes.  meant to be __CONCAT()ted for easy #includes
of machine-dependent headers for MI code (e.g. for the MI ISA/EISA/PCI/TC
bus code).
1996-03-04 05:04:10 +00:00
cgd 1c5d7babe5 Clean up tabbing/spacing in defns of MACHINE, MACHINE_ARCH, and MID_MACHINE. 1996-03-01 23:30:08 +00:00
jtc 8bd51c47b9 Copyright assigned to the NetBSD Foundation 1996-02-27 22:28:09 +00:00
mycroft d1bae2700f Add the obligatory copyright notice. 1996-02-18 13:01:05 +00:00
christos 4d234d08d8 Move pmap_page_index declaration to <vm/pmap.h> 1996-02-12 21:12:29 +00:00
mycroft 9d9a70a5a2 Fix #includes. 1996-02-02 18:05:36 +00:00
mycroft 88e512b693 LOCORE -> _LOCORE 1996-02-01 22:28:24 +00:00
mycroft 7149c5ff14 VM86 support, by John Kohl, touched up a bit by me. 1996-01-08 13:51:30 +00:00
mycroft 87a8c945ba Hand-code softintr() to deal with GCC braindamage. 1996-01-07 21:48:35 +00:00
mycroft 0696821419 Deal with GCC's dead code elimination being suboptimal. 1996-01-07 03:59:28 +00:00
mycroft 41f463bf2c Modify splraise() to allow better optimization. 1996-01-07 02:40:44 +00:00
mycroft 946507cf4d Make cpl, ipending, and astpending volatile. 1996-01-07 02:08:28 +00:00
mycroft cd8fe86bcb Make the type of __builtin_va_list a long. 1995-12-26 01:16:24 +00:00
mycroft 0c00214737 Use __builtin_va_alist. 1995-12-26 00:19:09 +00:00
mycroft fa887628d8 Stylistic changes. 1995-12-25 23:15:31 +00:00
mycroft d1de691efb Stylistic changes. 1995-12-25 22:22:02 +00:00
mycroft 0199e002ad Update for GCC 2.7, and fix bugs. 1995-12-25 21:41:08 +00:00
mycroft 1ca89b7f91 Enable paging of the user area. 1995-12-24 01:07:32 +00:00
mycroft d2e4a2de4b Minor cleanup. 1995-12-21 01:08:59 +00:00
mycroft 6698d239ca Use the U suffix to insure unsigned values are treated as such. 1995-12-20 23:30:57 +00:00
mycroft e28d5e9168 Use #pragma only for 2.0 <= GCC < 2.7. 1995-12-20 18:09:24 +00:00
mycroft e09cc4cf9d Use alternate structure packing method added in GCC 2.7. 1995-12-20 17:58:55 +00:00
mycroft dab27d0c21 Use explicit integer sizes. Adjust constraints for GCC 2.7.2. 1995-12-20 07:53:09 +00:00
mycroft 086845d5d3 Move the initialization of proc0's TSS and LDT to the end of cpu_startup(),
and switch to dynamically allocating the TSS.
1995-10-12 17:56:36 +00:00
mycroft 2765bc7b44 Go back to statically allocating the GDT entries for proc0. 1995-10-11 19:32:31 +00:00
mycroft ddbde6d166 Remove reference to dead variable. 1995-10-11 06:24:28 +00:00
mycroft 72805df917 Various changes from John Kohl and me:
Map kernel stacks only at unique addresses.
Use one TSS per process.
Add sysarch calls for modifying IOPL and the I/O permission bitmap.
Add a compacting GDT entry allocator, for TSS and LDT selectors.
Enable modifying %fs and %gs with PT_SETREGS.
Sanitize various bits of code.
1995-10-11 04:19:29 +00:00
mycroft 25f53a986f Add USERMODE() and KERNELMODE() macros, and use them. 1995-10-10 04:45:03 +00:00
mycroft 0ad97bc5c9 FreeBSD binary compatibility module, from Noriyuki Soda. 1995-10-10 01:22:31 +00:00
mycroft 8096b83664 Eliminate soft segment descriptors; instead use a functional interface for
creating segment descriptors.  Add the duplicate system call gate used by
BSD/OS 2.0 executables.  Prototype setsegment() and setgate(), and fix a bogon
caught by this.
1995-10-09 06:34:11 +00:00
fvdl 9ca2821d22 A couple of definitions added for previous changes. 1995-08-27 20:57:18 +00:00
mycroft 54c9a1df90 Replace splnet() with splsoftnet(). Add splnet(). 1995-08-13 00:22:40 +00:00
mycroft ce7cc0c18a Move the `used fpu' flag into mdproc, so it can be referenced when a process
is swapped out.  Implement process_{read,write}_fpregs.
1995-08-06 05:32:59 +00:00
cgd 479fb9e45b add <sys/cdefs.h> inclusions. namsspace-protect physadr, label_t
def'ns against _POSIX_SOURCE and _ANSI_SOURCE.
1995-07-06 03:39:32 +00:00
mycroft 9fbf4d6f47 Make hardware interrupts always block all software interrupts. 1995-07-04 07:09:53 +00:00
cgd c83f9c5568 remove unused cpu_exec() definitions. moved "broken swap" markers, for
ports that still need it, to types.h.
1995-06-28 02:55:18 +00:00
cgd db66a978e9 IdlePTD has been gone for a while. PTDpaddr now exists. 1995-06-26 13:25:29 +00:00
cgd 2d49c3885b clean up definitions of ctod(), dtoc(), ctob(), btoc(), btodb(), and
dbtob().  remove unused definitions of ctos(), stoc(), and dtob().
1995-06-26 06:55:38 +00:00
jtc 55fbbc705d Wrap with #ifndef _XXX_FLOAT_H_/#define _XXX_FLOAT_H_/ ... /#endif. 1995-06-20 20:45:22 +00:00
jtc 1d65cdd4ab #include <sys/cdefs.h>.
Wrap __flt_rounds() declaration with __BEGIN_DECLS/__END_DECLS.
1995-06-20 20:32:22 +00:00
pk a47021162b Prototype sysarch(2) (Thorsten Lockert, PR#1096) 1995-06-05 19:36:23 +00:00
mycroft 4ea6427a03 Increase size of imask[]. Sigh. 1995-06-04 20:22:50 +00:00
mycroft 8bb190daa3 Add a separate IPL_IMP, used by splimp(). 1995-06-04 08:29:41 +00:00
mycroft d69f7885b7 Allow [nh]to[hn][ls]() to do constant folding. 1995-06-01 17:19:18 +00:00
jtc 8aa6c376b6 KERNEL -> _KERNEL 1995-05-11 16:52:54 +00:00
mycroft 4e9f66f9ca Improve Linux signal emulation, and emulate the modify_ldt() call. 1995-05-07 02:59:30 +00:00
mycroft 6e02c4b647 Add a copy of the user code and data descriptors in the GDT. 1995-05-06 20:30:14 +00:00
mycroft 7a69a9c95b Define i386_[gs]et_ldt_args here. 1995-05-06 19:19:57 +00:00
cgd 8703076975 define BROKEN_SWAP and/or cpu_swapout as appropriate. 1995-05-05 03:41:51 +00:00
mycroft 40b72cc7a2 Wrap NGDT and NLDT in parens. 1995-05-04 05:37:39 +00:00
mycroft 029176e96b Add PCB_USEDFPU. 1995-05-03 00:08:19 +00:00
mycroft 4eea138a48 Add sc_gs and sc_fs. Move sc_onstack and sc_mask to end. 1995-05-01 14:14:11 +00:00