Commit Graph

1263 Commits

Author SHA1 Message Date
gmcgarry cc4037a913 Overhaul the emulation facility. We do this by:
- accumulating all emulation code (including floating-point) in one place
- steal MachFPInterrupt() back from SOFTFLOAT for use only with interrupts
  and traps from *real* FPUs
- introducing MachEmulateInst() as a common dispatch point for all
  emulated instructions
- cleaning up emulation dispatch in trap()

Also, while we're here, implement MIPS2 LL/SC/SYNC emulation for MIPS1.

Tested on r3k with and without SOFTFLOAT enabled.
2002-07-06 23:59:18 +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 bf7d5bca07 Eliminate 4 unused sigframe members. 2002-07-04 19:20:01 +00:00
simonb a441a7dffa Remove some clocktick debug code. 2002-06-27 04:09:15 +00:00
simonb 7471732325 Add the 20Kc processor ID. 2002-06-27 03:43:45 +00:00
simonb 8e38e28f7f White space nits: space after a comma. 2002-06-24 05:52:28 +00:00
simonb d4068eac65 Add 64MB and 256MB tlb page masks. 2002-06-24 05:46:47 +00:00
manu d0c5097f05 Typo 2002-06-23 20:36:36 +00:00
simonb 4cf248e04b Fix tyop. 2002-06-17 22:48:45 +00:00
christos 3b50728cf4 MD systrace gluons. 2002-06-17 16:32:57 +00:00
simonb 4d304073f1 Add some ifdef's around the usage of mips_wait_idle; fixes builds for
playstations2 and MIPS1-only kernels.
Based on patch from Bill Squier.
2002-06-07 02:05:22 +00:00
simonb e36c88d696 Introduce CHIP_ACCESSTYPE which (if defined) is used as the type for
performing the accesses, regardless of the size of the data type
requested.  Useful for chips which require fixed-width accesses to all
registers.

Cast arguments printed using %lx to u_long all the time, not just
sometimes.

Include a few extra files here so they don't need to be included by the
files that include this one.
2002-06-05 06:27:10 +00:00
simonb 8492ceb1ff White space nits. 2002-06-05 06:09:28 +00:00
simonb db50a069f8 Remove an ELF-related comment that isn't needed any more. 2002-06-05 06:02:52 +00:00
simonb 2100183aff For the CP0 status register bit definitions- add the MX, PX and NMI bits
and rename TLB_SHUTDOWN and SOFT_RESET to TS and SR (the abbreviations
in the MIPS documentation).

XXX: this file really needs to be cleaned up one day...
2002-06-05 05:56:48 +00:00
thorpej 04076e5943 Make this work with an ISO C preprocessor. 2002-06-04 21:44:40 +00:00
thorpej d941ddfee0 Don't use -traditional-cpp if HAVE_GCC3. 2002-06-04 21:39:09 +00:00
simonb f4e42e7eb6 Add an extremely rough SMBus handler and RTC driver. This will be
cleaned up significantly when we have an MI SMBus framework, but at
least we can see the RTC on the swarm now.
2002-06-04 08:32:41 +00:00
simonb 9cc65a96d0 3 ports are now using the reciprocal count divisor code now, move it
to <mips/cpu.h>, and add MIPS_SET_CI_RECIPRICAL and MIPS_COUNT_TO_MHZ
macros to use it.
2002-06-04 05:42:41 +00:00
simonb 8b4906e391 Add prototypes for the 64-bit pagezero functions.
Bracket some function prototypes with #ifdef/#endif.
2002-06-03 01:51:05 +00:00
drochner d2b9876081 move initialization of the "struct pglist" returned by uvm_pglistalloc()
from the calling code into uvm_pglistalloc() itself for consistency
and easier error handling
2002-06-02 14:44:35 +00:00
simonb 4cb13fbec6 There's two SMBuses in the BCM1250; list them both on the on-board device
list.
Get rid of some magic numbers.
2002-06-01 13:56:56 +00:00
simonb 51a91ebabb KNF; make some function static; other minor cleanups. 2002-06-01 13:55:48 +00:00
simonb 1e10b4d4ad Split USE_64BIT_FUNCTIONS into USE_64BIT_INSTRUCTIONS and
USE_64BIT_CP0_FUNCTIONS.
Add 64-bit pagezero function.
2002-06-01 13:52:23 +00:00
simonb 341ed8c0d3 Use CPU_MIPS_USE_WAIT and CPU_MIPS_NO_WAIT in the CPU table, and use
the generic name "mips_wait_idle" for the old function that had both
rm52xx_idle and mipsNN_idle entry points.
2002-06-01 13:45:45 +00:00
simonb 3611959ac8 Remove some unnecessary nops after some mfc0's. 2002-06-01 13:16:44 +00:00
simonb cf5f852d1c Standardise on the name "MIPS_SR_BEV" instead of a couple of different
#defines for the same status bit.
2002-06-01 12:27:03 +00:00
simonb 5b5cc1ebb8 Add two new cpu capability flags: CPU_MIPS_USE_WAIT for CPUs that use a
"wait" instruction based cpu_idle(), and CPU_MIPS_NO_WAIT for specific
CPUs that don't use this (applicable to mips32/64 mainly).
2002-06-01 12:10:45 +00:00
simonb d75c18b050 Use the current MIPS in_cksum for in4_cksum too. 2002-06-01 11:41:33 +00:00
thorpej 80f6433965 Fix printf format issues. 2002-05-31 21:09:03 +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
simonb ada33c9eac Oops, remove an #endif leftover from the previous change. 2002-05-13 06:11:52 +00:00
simonb c790dd34b6 Add a comment after an #endif to match up with an #ifdef. 2002-05-13 04:15:40 +00:00
simonb ee2264c945 All MIPS ports have been ELF for a long time (most since they were
created); remove non-ELF assembly support.
2002-05-13 01:39:17 +00:00
rafal 13c470a169 R4600 and R5000 count registers count at half-cpu-speed as well. 2002-05-03 03:50:11 +00:00
simonb fa61e6cd3b In the LOCKDEBUG case, call exit2() before sched_lock_idle() so
that the exitting process pointer in a0 doesn't get overwritten by
sched_lock_idle().
2002-04-25 06:55:53 +00:00
manu 33d1091e95 Removed the IRIX signal trampoline, which is useless now we use the signal
trampoline provided by IRIX libc.
2002-04-14 21:52:25 +00:00
manu c56e133974 More comments on the new signal frame/trampoline 2002-04-13 10:52:59 +00:00
manu 5ee554064d Reworked IRIX signal delivery so that ucontext is used instead of sigcontext
when SA_SIGINFO is used. The IRIX process will hence find the expected
information using the third argument of the signal handler.

We do not provide code and siginfo yet.
2002-04-12 18:44:57 +00:00
manu 79166f2808 iAdded warning printtf just in case something calls the stubs functions here 2002-04-06 18:03:17 +00:00
simonb 2d7c87ebfb Add a "CPU_MIPS_DOUBLE_COUNT" flag for CPUs where the cp0 count register
ticks over at half the CPU clock speed, and set this flag for the known
CPUs with this behaviour.  Better names for this flag gratefully accepted!

Also adjust comment about known R4000/R4400 revisions.
2002-04-05 01:22:16 +00:00
simonb fab269a0eb Backout the .sdata to .data change for now; this broke compiling of
hpcmips kernels.
2002-04-03 13:57:47 +00:00
simonb 2548187935 Don't make arch/mips/mips/mips_mcclock.c mandatory for all mips ports
with an mcclock - pmax is the only one currently using this.
2002-04-03 13:16:13 +00:00
simonb ccc73cca48 Put a couple of variables in the data section, not the sdata section. 2002-04-03 04:04:31 +00:00
simonb 6fbaedb430 Use the new 2way mips{32,64} cache ops. 2002-04-03 03:55:07 +00:00
simonb 67fd901d75 Include 2way cache ops for mips{32,64} CPUs. 2002-04-03 03:51:00 +00:00
simonb 078e9477f0 Add prototype for badaddr64(). 2002-04-03 03:48:33 +00:00
simonb 85c30a703d Remove a commented-out debug printf. 2002-04-03 03:47:53 +00:00
manu 5f93fe2017 undef SYSCALL_SHIFT after using it so that it is possible to define both
COMPAT_IRIX and COMPAT_LINUX without getting warnings about SYSCALL_SHIFT
being redefined.
2002-04-01 21:06:21 +00:00
manu 2e2ba05d0d Moved errno translation so that errno get translated correctly in any case,
and so that EJUSTRETURN and ERESTART get proprely reported.
2002-03-28 18:48:31 +00:00