Commit Graph

556 Commits

Author SHA1 Message Date
martin
d6c7a12fb5 Fix COMPAT_NETBSD32 ucontext padding and move the definition next to the
(sparc) original.
2005-07-10 15:44:23 +00:00
christos
415655638b Forgot to add this. 2005-07-10 01:58:57 +00:00
christos
1e568eda97 Re-factor syscall, and make it use syscall_{plain,fancy}. 2005-07-10 00:50:16 +00:00
thorpej
6a02aeb003 Small clean-ups before an overhaul. 2005-06-19 23:36:47 +00:00
briggs
7f01fdeb84 Rename 'ncpus' to 'sparc_ncpus' to avoid shadow warnings in m.i. code.
Also sprinkle an __UNVOLATILE() for sparc.
n.b. sparc64 'cpus' should probably be renamed to 'cpu_info_list' to
     match i386 et al.
2005-06-16 04:17:49 +00:00
dyoung
a37289db57 Make disklabel(8) and fdisk(8) into "host tools " last step: build
and install ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-disklabel,
${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-fdisk by "reaching over" to
the sources in ${NETBSDSRCDIR}/sbin/{disklabel fdisk}/.

To avoid clashes with a build-host's header files, especially on
*BSD, the host-tools versions of fdisk and disklabel search for
#includes such as disklabel.h, disklabel_acorn.h, disklabel_gpt.h,
and bootinfo.h in a new #includes namespace, nbinclude/.  That is,
they #include <nbinclude/sys/disklabel.h>, <nbinclude/machine/disklabel.h>,
<nbinclude/sparc64/disklabel.h>, instead of <sys/disklabel.h> and
such.  I have also updated the system headers to #include from
nbinclude/-space when HAVE_NBTOOL_CONFIG_H is #defined.
2005-06-12 19:46:15 +00:00
christos
a38d2d274a sprinkle const. 2005-05-31 00:49:42 +00:00
matt
f854ad4125 For GCC3 and later, use the __builtin_va* constructs. 2005-04-20 05:15:15 +00:00
fvdl
c487efe4a7 Fix some things regarding COMPAT_NETBSD32 and limits/VM addresses.
* For sparc64 and amd64, define *SIZ32 VM constants.
* Add a new function pointer to struct emul, pointing at a function
  that will return the default VM map address. The default function
  is uvm_map_defaultaddr, which just uses the VM_DEFAULT_ADDRESS
  macro. This gives emulations control over the default map address,
  and allows things to be mapped at the right address (in 32bit range)
  for COMPAT_NETBSD32.
* Add code to adjust the data and stack limits when a COMPAT_NETBSD32
  or COMPAT_SVR4_32 binary is executed.
* Don't use USRSTACK in kern_resource.c, use p_vmspace->vm_minsaddr
  instead (emulations might have set it differently)
* Since this changes struct emul, bump kernel version to 3.99.2

Tested on amd64, compile-tested on sparc64.
2005-03-26 05:12:34 +00:00
matt
a6db24a485 Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create).  dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
2005-03-09 19:04:43 +00:00
heas
c1d895ba16 Add a few comments wrt PTEs 2005-02-25 17:29:04 +00:00
martin
7cbebc44aa Cleanup: the PG_SZ macro was buggy (pointed out by Tim Newsham).
It was only used by (the also buggy/not ready for prime time) PMAP_PAGE_SIZE,
which in turn only was used in one place.

Get rid of all this and hardcode the result at the single place of use.
2005-02-22 16:21:07 +00:00
martin
c7b31c04d6 Remove orphaned extern declaration. 2005-01-27 08:50:27 +00:00
atatat
a076957818 Convert the PMAP_PREFER() macro from two arguments (offset and hint)
to four (adding size and direction).

In order for topdown uvm to be an option on ports using PMAP_PREFER,
they will need to "prefer" lower addresses if topdown is being used.
Additionally, at least one port also needs to know the size.
2005-01-17 04:37:20 +00:00
christos
ca0484bf3e add a linted comment. 2005-01-02 00:14:46 +00:00
abs
5958dd944e Fix comments slighly 2004-12-12 20:42:53 +00:00
yamt
d2fe4b34bb move some per-cpu data definitions to MI place so that they can be modified
without touching all ports.  discussed on tech-kern@.
2004-09-22 11:32:02 +00:00
drochner
c67a72f6ff make PCI devices attachable/detachable (as far as the particular drivers
allow), and allow to rescan a bus selectively (ie only the device/
function I'm looking at)
2004-08-17 23:20:10 +00:00
drochner
4f2a6309fe give the special PCI bus enumerator a sparc64_ prefix and make the
PCI_MACHDEP_ENUMERATE_BUS macro point to it
2004-07-29 16:53:15 +00:00
drochner
96623fecad also add <machine/joystick.h> to alpha and amd64, to allow compilation
of certain multimedia applications
2004-07-07 18:03:51 +00:00
petrov
a021a66c36 Added UPA_MID definitions and macros(similar to FreeBSD).
Added membar_store, membar_load macros.
No need to set %asi _after_ alternate space use in corresponding functions.
Enable(unifdef) casa functions for __arch64__.
2004-07-01 22:59:16 +00:00
heas
66307fc36e typo in define name, littie -> little 2004-07-01 14:57:46 +00:00
pk
889aa9f444 Introduce bus_space_tag_alloc() for the common parts of bus tag allocation. 2004-06-30 21:16:38 +00:00
pk
e839b8dccb Provide bus_space_translate_address_generic(), a helper function to
translate a local bus address to an address on the parent bus.
2004-06-28 10:17:01 +00:00
pk
736c085516 Add openprom range property to the bus space tag. 2004-06-28 09:32:14 +00:00
martin
44eda0ad6b Add missing ; in inline assembler for 32bit kernels 2004-06-24 19:42:27 +00:00
martin
d0c69e4d18 Fix small glitches to make SMP kernels compile again. 2004-06-18 12:51:39 +00:00
petrov
8b0935d09f Define mp_pause(resume)_cpus needed for callprom. 2004-06-18 00:05:05 +00:00
petrov
ac26f9468c clean-up, reformat __asm statements. 2004-06-17 19:35:14 +00:00
petrov
45a1b56bc0 De-_P()fy, remove not MULTIPROCESSOR defines for sparc64_ipi_xxx. 2004-05-20 00:56:12 +00:00
kleink
7b3b647647 Factor out W{CHAR,INT}_{MAX,MIN} into their own header file. 2004-05-08 21:51:47 +00:00
eeh
5f1ffa71fc License cleanup. 2004-03-27 16:21:53 +00:00
nakayama
3a065cad6a Eliminate cast 64-bit address to u_long. 2004-03-22 12:24:37 +00:00
pk
2a26804b1a Reach over to the sparc openfirm & openprom implementation. 2004-03-21 14:25:51 +00:00
pk
6521621036 Switch to the sparc prom library. 2004-03-21 14:10:08 +00:00
pk
ef98c2defb Reach over to the sparc versions. 2004-03-21 14:05:43 +00:00
pk
af0050c56b Drop optionsnode, fbnode and stdinnnode. 2004-03-19 15:22:43 +00:00
pk
ea53363e84 Rename PROM_getprop*() => prom_getprop*(). 2004-03-17 17:04:58 +00:00
pk
fcac5c14aa Pass the buffer size to PROM_getpropstringA(), as in sparc. 2004-03-17 15:22:57 +00:00
pk
aafd051f4f For now, implement prom_getoption() in autoconf.c. 2004-03-16 23:05:45 +00:00
pk
9c0a7ff277 For now, implement prom_getidprom() and prom_getether() in autoconf.c 2004-03-16 13:14:34 +00:00
simonb
55965d25ad Use "#define<tab>" consistently. 2004-03-14 21:12:08 +00:00
chs
cec587ddf6 checkpoint of MP work from dennis and myself. includes cross-processor
interrupt framework, a sledgehammer TLB invalidation and misc MP fixes.
doesn't work at all yet.
2004-03-14 18:18:54 +00:00
petrov
b062992f9d Correct VA_ALIAS_MASK. From Chuck Silvers. 2004-02-26 20:24:29 +00:00
drochner
289fa68010 provide a definition NETBSD32_MID_MACHINE which tells for the a.out MID
to look for in 32-bit emulation
2004-02-20 16:11:44 +00:00
petrov
d63b2431fa Some cleanup and move ddb_regs declaration to db_interface.c 2004-01-06 20:41:23 +00:00
petrov
e459d2a294 Spinup secondary cpus. Based on codes sent to me by Dennis Chernoivanov
and Chuck Silvers.
2004-01-06 09:38:19 +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
petrov
20dfeedb2e Remove prototypes of non-existant functions, ansify and knf. 2003-12-08 00:52:48 +00:00
cdi
d49bc81070 Use per-cpu pcb, curlwp and fplwp rather than global ones. This brings
GENERIC.MP configuration to a usable state.

Approved by petrov@.
2003-11-25 05:14:58 +00:00
petrov
b56164b9ed Set curcpu() for SMP. 2003-11-20 08:04:04 +00:00
petrov
5af3af05f4 Compile GENERIC.MP. 2003-11-15 05:24:51 +00:00
petrov
8ab0c67f4e Lower PIL_AUD so /dev/audio will not interrupt and interfere with
scheduler. Fixes kern/23382.
2003-11-09 21:52:31 +00:00
tsutsui
112c91d583 Use #if defined(_KERNEL_OPT) to protect #include "opt_xxx.h"
from building LKM etc. Suggested by mrg.
2003-11-09 05:29:59 +00:00
kleink
91af1eaa96 #define __HAVE_LONG_DOUBLE on platforms which implement a distinct
`long double' type.
2003-10-28 00:55:28 +00:00
christos
1293ac6b7f remove buildcontext 2003-10-27 00:16:42 +00:00
christos
a5d24112bb more siginfo glue 2003-10-26 08:06:56 +00:00
kleink
422697679e * Move the definitions for types other than single-precision and double-
precision back to machine-dependent headers.  C99 has no strict
  requirement which, if any, extended-precision type `long double' must
  match, and even between 80-bit formats there are differences in
  implementation (m68k vs. x86).
* On arm, consider __VFP_FP__.
2003-10-23 23:26:06 +00:00
kleink
004922cd70 Don't use NULL in integer-type assignments/comparisons. 2003-10-21 12:08:11 +00:00
christos
d0e3551301 Add mcontext32_t and friends. This is WIP. 2003-10-13 23:45:14 +00:00
christos
44f376e8fc move MI stuff to the MI include 2003-09-26 18:09:38 +00:00
mrg
9e599bdb11 change PROM_getprop() from taking a "void **" for the storage, to a
"void *", and do the extra de-reference directly in the function.  this
avoids having to cast dozens of different types to "void **", which sets
of GCC3's strict-aliasing.  testing by martin@
2003-08-27 15:59:49 +00:00
uwe
5c666394c9 Drop fbvar.h from INCS now that it's been cvs rm'ed here. 2003-08-26 11:51:13 +00:00
uwe
5efaa48bea Framebuffer code common to sparc and sparc64 was merged and moved to
dev/sun 3 years ago.  Remove these redundant and out-of-date copies.
All code now uses dev/sun/fbvar.h
2003-08-25 19:24:49 +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
chs
792f9a7f05 remove some leftover cruft. 2003-08-10 02:30:51 +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
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
martin
69cd0c4a54 struct proc * -> struct lwp * 2003-06-29 13:33:51 +00:00
thorpej
452a8fdae2 Rename IPL_IMP -> IPL_VM. 2003-06-16 20:00:56 +00:00
fvdl
7dd7f8baa2 Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
2003-06-15 23:08:53 +00:00
martin
ce380782ec My reading of the gdb code seems to indicate it expects 125 registers
from sparc64, not 72 (sparc value). Bump kgdb buffer size a bit too.
2003-05-18 21:00:57 +00:00
kleink
776138ea69 Rename <sys/float_ieee.h> to <sys/float_ieee754.h>, following libc's
convention for these.
2003-05-12 15:22:53 +00:00
martin
ae2073f3d8 Make all non-trivial bus space functions "static __inline" (consistently)
and turn all macros with local blocks and declarations into functions.
This fixes PR 19975.
2003-05-05 09:36:51 +00:00
wiz
1ffa7b76c4 DMA, not dma nor Dma. 2003-05-03 18:10:37 +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
christos
a2dfb1b570 PR/3012: Greg A. Woods: Write all float.h files [except the vax of course]
in terms of float_ieee.h
2003-04-19 23:05:28 +00:00
dsl
f1a857b8af change 'data' arg of fo_ioctl to void * to match file.h 2003-04-16 08:56:42 +00:00
petrov
488c2452ee clean-up unused definition. 2003-04-14 01:44:06 +00:00
thorpej
cc2c493bc4 Use PAGE_SIZE rather than NBPG. 2003-04-02 07:35:54 +00:00
thorpej
d3f30fc625 We use 8K VM pages on Sun4U, so make PAGE_SIZE, PAGE_SHIFT, and PAGE_MASK
into compile-time constants.
2003-04-01 16:05:30 +00:00
nakayama
b1a9940dae PCI-CardBus bridge support for sparc64:
- add MD part of cardbus support.
2003-03-22 06:36:18 +00:00
nakayama
11529a0609 PCI-CardBus bridge support for sparc64:
- add splsoftserial.
2003-03-22 06:34:28 +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
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
8920acd333 Switch to use cycle counter (%tick) based microtime().
This is derived from alpha/microtime.c and i386/tsc_microtime.c,
and will share with both ports.

This should fix PR port-sparc64/18452.
(approved by martin)
2003-02-05 12:06:51 +00:00
martin
1ecf66db9f Make the pmap count resident/wired mappings on the fly instead of
walking the page tables whenever this information is needed.

Add an option PMAP_COUNT_DEBUG to assert the new counts and the
page table walk agree.

The old solution had very bad performance impact, for example
by the high CPU load when running top(1).

Thanks to Simon Burge for pointing at the cause of the problem and
to Valeriy E. Ushakov for optimizing my simple minded assembler code.
2003-01-31 19:05:55 +00:00
martin
dc63778c66 Sparc64 already had a BUS_DMA_NOCACHE - remove one of the two definitions.
Fortunately the old (local) one had the same semantics as the new one.
2003-01-30 13:32:25 +00:00
kent
cd7d9faeaf Introduce BUS_DMA_NOCACHE, and bus_dmamem_map() of i386 supports it. 2003-01-28 01:07:51 +00:00
martin
8772c68807 Rename the DIV0 traps to avoid confusion with the usage on the sparc
port: T_IDIV0 is the hardware trap generated on integer division by
zero, T_DIV0 is the software trap used to signal the same event.

This makes 32 bit kernels able to run sparc code with the v7 multiply/
divide library.

Spotted by Valeriy E. Ushakov.
2003-01-21 19:46:49 +00:00
thorpej
d2275d51e1 Merge the nathanw_sa branch. 2003-01-18 06:55:21 +00:00
thorpej
b346ea724a Merge sparc and sparc64 <machine/signal.h>. 2003-01-09 23:25:24 +00:00
wiz
1035faff1d writable, not writeable. 2003-01-06 20:30:28 +00:00
pk
725a6aebf7 Remove the `flags' argument from bus_intr_establish(). 2002-12-10 13:44:47 +00:00
pk
68817a2024 bus_intr_establish() signature change.
The additional `fast trap' argument is ignored in these drivers.
BUS_INTR_ESTABLISH_FASTTRAP and BUS_INTR_ESTABLISH_SOFTINTR are no longer used.
2002-12-10 12:24:05 +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
pk
4cd21bc0aa Sync machdep sysctls with sparc. 2002-11-27 18:00:27 +00:00
lukem
0635de35a3 Remove KDIR=, since SYS_INCLUDE=symlinks and KDIR are not supported any more. 2002-11-26 23:30:07 +00:00
scw
cb52115837 In preparation for COMPAT_NETBSD32 on SH-5:
- The MD netbsd32_machdep.h header now defines the 32-bit pointer type
   instead of using u_int32_t everywhere,
 - The MD netbsd32_machdep.h header now defines a macro (at least on
   current implementations) which converts a 32-bit pointer to its 64-bit
   equivalent,
 - Change the MI code to utilise the above two items in all the right places,
 - Implement netbsd32___sigaction_sigtramp().

Tested on Sparc64 by Matt Green.
2002-10-23 13:16:38 +00:00
martin
fdeb300692 We are not going to get a "upa at mainbus" autoconfig entity, since
UPA is just a physical incarnation of our mainbus0.

Evidence:

 - There can only be one!
 - The firmware node coresponding to it is the root of the OF tree

So: remove the unused (and uncompilable) upa.c, remove upavar.h after
moving the only declaration used from it to autoconf.h.
2002-10-20 15:53:16 +00:00
martin
44a2c6cb31 All sparc64 CPUs do __HAVE_CPU_COUNTER (aka %tick). 2002-10-07 13:26:56 +00:00
abs
ae80876d99 #include "kbd.h" for NKBD and only override cn_isconsole to check cn_hw if set.
Fixes compilation without kbd.
2002-09-30 09:43:13 +00:00
chs
50403f5ce2 remove some vestigial FPU and cache code that's not need on ultrasparcs.
misc tidiness.
2002-09-29 04:12:02 +00:00
chs
70d1ddac15 avoid reading %pil in splx() if !SPLDEBUG.
misc tidiness.
2002-09-29 04:06:20 +00:00
chs
f54a093e81 many improvements:
- use struct vm_page_md for attaching pv entries to struct vm_page
 - change pseg_set()'s return value to indicate whether the spare page
   was used as an L2 or L3 PTP.
 - use a pool for pv entries instead of malloc().
 - put PTPs on a list attached to the pmap so we can free them
   more efficiently (by just walking the list) in pmap_destroy().
 - use the new pmap_remove_all() interface to avoid flushing the cache and TLB
   for each pmap_remove() that's done as we are tearing down an address space.
 - in pmap_enter(), handle replacing an existing mapping more efficiently
   than just calling pmap_remove() on it.  also, skip flushing the
   TSB and TLB if there was no previous mapping, since there can't be
   anything we need to flush.  also, preload the TSB if we're pre-setting
   the mod/ref bits.
 - allocate hardware contexts like the MIPS pmap:
   allocate them all sequentially without reuse, then once we run out
   just invalidate all user TLB entries and flush the entire L1 dcache.
 - fix pmap_extract() for the case where the va is not page-aligned and
   nothing is mapped there.
 - fix calculation of TSB size.  it was comparing physmem (which is
   in units of pages) to constants that only make sense if they are
   in units of bytes.
 - avoid sleeping in pmap_enter(), instead let the caller do it.
 - use pmap_kenter_pa() instead of pmap_enter() where appropriate.
 - remove code to handle impossible cases in various functions.
 - tweak asm code to pipeline a little better.
 - remove many unnecessary spls and membars.
 - lots of code cleanup.
 - no doubt other stuff that I've forgotten.

the result of all this is that a fork+exit microbenchmark is 34% faster
and a fork+exec+exit microbenchmark is 28% faster.
2002-09-22 07:19:43 +00:00
gehenna
77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
thorpej
c9dafdb84c Increase the default stack limit to 2M (from 512K on sparc and 1M
on sparc64).
2002-09-03 16:24:35 +00:00
uwe
082c4cf032 Make sun ports use common keyboard/firm events related includes
from dev/sun.
2002-08-27 09:47:41 +00:00
thorpej
8b7cc1c1d2 Protect against multiple inclusion. 2002-08-23 02:45:44 +00:00
thorpej
de6a644cea * Refine the comment describing openprom_addr.
* Add openprom_range and openprom_intr structures.
2002-08-23 01:08:45 +00:00
petrov
e879a86b97 Add sab. 2002-08-16 08:52:48 +00:00
briggs
0b956d0b8b Implement pmc(9) -- An interface to hardware performance monitoring
counters.  These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface.  Initially, the Intel XScale
counters are the only ones supported.
2002-08-07 05:14:47 +00:00
mrg
321856e31b merge with sparc. 2002-07-29 07:07:15 +00:00
mrg
154a2d2a42 use <sparc/foo.h> where appropriate. now these files become very
very difficult to get out of sync.  add bootinfo.h and promlib.h
(using the same method) so that sparc64 headers can build sparc
stand (not yet finished.)
2002-07-20 11:52:21 +00:00
thorpej
29b1d0613b Remove CPU_ISSUN4MOR4U, CPU_ISSUN4OR4C, and CPU_ISSUN4COR4M. 2002-07-17 04:56:49 +00:00
thorpej
011d4d5f44 Add kernel support for having userland provide the signal trampoline:
* struct sigacts gets a new sigact_sigdesc structure, which has the
  sigaction and the trampoline/version.  Version 0 means "legacy kernel
  provided trampoline".  Other versions are coordinated with machine-
  dependent code in libc.
* sigaction1() grows two more arguments -- the trampoline pointer and
  the trampoline version.
* A new __sigaction_sigtramp() system call is provided to register a
  trampoline along with a signal handler.
* The handler is no longer passed to sensig() functions.  Instead,
  sendsig() looks up the handler by peeking in the sigacts for the
  process getting the signal (since it has to look in there for the
  trampoline anyway).
* Native sendsig() functions now select the appropriate trampoline and
  its arguments based on the trampoline version in the sigacts.

Changes to libc to use the new facility will be checked in later.  Kernel
version not bumped; we will ride the 1.6C bump made recently.
2002-07-04 23:32:02 +00:00
thorpej
f427b80c27 Add ENTRY_NOPROFILE(). 2002-06-24 01:13:34 +00:00
eeh
5f3262977c Don't use smaller trapframes. Causes more problems that it's worth right now. CVS: ---------------------------------------------------------------------- 2002-05-16 23:29:42 +00:00
eeh
a48bd3e3b4 Make the PCI code actually work. 2002-05-16 20:28:33 +00:00
thorpej
204183c0fa * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses.  For busses behind a bridge, it points to
  a persistent copy of the bridge's pcitag_t.  This can be very useful
  for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
  uses OFW device nodes to enumerate the bus.  When a PCI bus that is
  behind a bridge is attached, pci_attach_hook() allocates a new PCI
  chipset tag for the new bus and sets it's "curnode" to the OFW node
  of the bridge.  This is used as a starting point when enumerating
  that bus.  Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
2002-05-16 01:01:28 +00:00
thorpej
dada8613e1 Let machine-dependent code specify how to enumerate the bus.
Currently, everyone uses pci_enumerate_bus_generic().
2002-05-15 19:23:51 +00:00
thorpej
11fa11094e Garbage-collect __PCI_DEV_FUNCORDER. 2002-05-15 18:37:54 +00:00
thorpej
a91677eb7b Implement pci_decompose_tag(). 2002-05-15 17:40:11 +00:00
eeh
d295742774 Have CLKF_BASEPRI() always return false for now to prevent hardclock
from being blocked by softclock.
2002-05-14 21:21:45 +00:00
eeh
e8ff5b27c8 Trapframes only have locals or ins if the kernel is compiled DEBUG. 2002-05-14 02:34:14 +00:00
thorpej
8606fff875 Don't define _LP64 here. 2002-05-03 17:56:29 +00:00
thorpej
9cbd451a98 Revert revision 1.20. 2002-05-03 17:55:55 +00:00
eeh
be9ab3e5db Provide _LP64 definition if we are generating LP64 binaries. 2002-05-03 00:06:55 +00:00
eeh
dcb399fc7c Don't need to flush the d$ for MMU bypass accesses. 2002-04-24 23:54:24 +00:00
eeh
bb8f4cc510 Calculate NBPG from PGSHFT. 2002-04-18 16:31:47 +00:00
eeh
690711542d We want pages modulo 16K not modulo 32K. 2002-04-16 23:11:20 +00:00
eeh
15d074fe26 Add a nice 64-bit mstohz() and clean out some cruft. 2002-04-08 21:05:30 +00:00
eeh
a1649fc334 Parenthesise macro arguments. 2002-03-21 00:43:42 +00:00
eeh
47ef6a5146 Overhaul bus space.
bus_space_handle_t now holds an address and two ASIs, one for normal accesses
and one for streaming accesses.  This allows to map individual handles
different ways, so some can use MMU bypass accesses and others use virtual
addresses.  bus_space_map() will now create handles that use bypass accesses
unles BUS_SPACE_MAP_LINEAR is passed in.  So only pass in BUS_SPACE_MAP_LINEAR
if you absolutely *need* to use bus_space_vaddr().  This removes at least one
extra level of indirection and should reduce TLB misses.

32-bit kernels have problems accessing 64-bit addresses, so they always use
virtual addresses.
2002-03-20 18:54:46 +00:00
eeh
bd22d9d0f1 Add PTE_WIRED bit to keep track of wired pages. 2002-03-20 18:41:53 +00:00
eeh
2db5a5e82f Get PCI working with the new bus_space*. 2002-03-15 07:06:23 +00:00
eeh
77de9a3aca Get rid of bus_space_map2(). 2002-03-14 20:46:11 +00:00
chs
b0263218b6 override cn_trap() with zs_abort() so we can drop to the monitor
if there's no DDB.  fixes PR 12547.
2002-03-11 07:11:26 +00:00
martin
7d9d648a64 For aesthetical reasons use bus_addr_t instead of paddr_t in the BUS_ADDR
makro. Requested by uwe.
2002-03-01 11:34:36 +00:00
martin
feaf0ddd87 Cast the "io" parameter of BUS_ADDR to paddr_t before it gets shifted.
This makes this makro work with smaller values passed for io. No functional
change.
2002-03-01 07:19:29 +00:00
simonb
4324f37586 Use "#define<tab>". 2002-02-28 03:17:23 +00:00
christos
6b030ee036 - define other DEV_ constants that the local port uses.
- delete cdev_decl(mm) since <sys/conf.h> does it.
2002-02-27 01:19:03 +00:00
eeh
1eb3484425 Fix PR# port-sparc64/13811: PCITAG_SETNODE() is defined using x' insted of t'.
from URA Hiroshi
2002-02-26 22:39:14 +00:00
simonb
d9ab16ba2f Purge CLSIZE, CLSIZELOG2 and MCLOFSET.
Be consistant in the way that MSIZE, MCLSHIFT, MCLBYTES and NMBCLUSTERS
  are defined.
Remove old VM constants from cesfic port.
Bump MSIZE to 256 on mipsco (the only one that wasn't already 256).
2002-02-26 15:13:19 +00:00
simonb
2d8577fb83 Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
 - Use the above for the __infinity and __nan constants on all
   architectures that use the standard ieee754 representation of
   those constants.
 - Add a single copy of various ieee754 math functions (frexp, isinf,
   isnan, ldexp and modf) that had numerous duplicates among the
   arch-specific directories.
 - Use the above functions on all architectures where the generic C
   versions where used.  Architectures that had local assembly
   routines are untouched (for those functions only).
2002-02-19 13:08:12 +00:00
eeh
c068b28bac Increase NMBCLUSTERS. 2002-02-09 04:58:53 +00:00
eeh
c42bdc6b14 Correctly take into account the satck bias in CLKF_INTR(). 2002-02-09 04:50:13 +00:00
eeh
6390142ec0 Make bus_space_barrier() an inline instead of a function vector. 2002-02-07 21:36:54 +00:00
eeh
59339eac04 Make PHYS_ASI() also recognize little-endian ASIs. 2002-01-14 20:44:30 +00:00
eeh
cc61f43486 Use a more efficient PIC_PROLOG(). 2002-01-14 16:37:36 +00:00