Commit Graph

379 Commits

Author SHA1 Message Date
is 8e9fc838dc In the OS glue code for the 060SP, replace the copyin()/copyout() glue by
movs.
XXX As our CPP seems to hate the 060SP, I couldn't use assym.h for the
PCB_ONFAULT definition, but had to hardwire 64 in the code. This needs
to  be fixed ASAP, and will be done in the upcoming reorganization of
the 060sp Makefiles.
1997-09-28 12:57:57 +00:00
is b325cdd771 Build this in ${KERNEL_BUILD_DIRECTORY}/lib/fpsp, similar to libkern. 1997-09-21 17:33:36 +00:00
leo c5ba7a3102 Move the definition of MSGBUFSIZE up to the machine-arch level if
possible. Pointed out by Bernd Ernesti.
1997-09-20 12:06:37 +00:00
jeremy f5c0dfebd6 Use ${CC} instead of cc and don't explicitly set AR and LD unless they are
unset.
1997-09-18 22:55:56 +00:00
leo 00a1b6300f Add DCFA() definitions. 1997-09-15 11:12:13 +00:00
is d8e09ca5ea Align some comments, so that I'll be able to track changes better. 1997-07-28 19:01:13 +00:00
is 95370c73b8 Make us pass the full ieeefp except regression test.
XXX This is probably a horrible hack, and wrong. FPU signal handling needs
to be further evaluated.
1997-07-20 12:39:17 +00:00
is f8ce8a3693 Fix my own PR port-m68k/3871, nee port-amiga/3871:
- don't erase FPSR exception bits _after_ doing most of the operations in
fpu_implode(), erase them before doing arith and store operations. This fixes
losing the DZ bit.
- create FPSR_OVFL and FPSR_UNFL bits in fpu_implode(). This showed up when
the first error was fixed.
XXX some more work needs to be done. E.g., creating OPERR together with
OVFL looks bogus, but I'm too tired know to re-check docs; and at least we
pass our own regression tests know.
1997-07-19 22:28:48 +00:00
veego 76371b8a9d include <m68k/db_machdep.h> to get the prototype for kdb_trap if DDB and
DEBUG are defined and add a cast for the second argument to the
kdb_trap call.
1997-07-17 06:27:08 +00:00
thorpej b88b183ab5 Don't have kernel vs. non-kernel versions of _ENTRY(); there's no
reason to omit the .type directive in the kernel case.
1997-07-14 07:44:56 +00:00
veego 78996821fa Move the defines of UPAGES and NPTEPG back to the MD param.h, execpt that
the sun3[x] doesn't use NPTEPG.
1997-07-10 08:22:09 +00:00
is de025de65f Add support for T-racing of emulated instructions. (Yes, gdb uses this.) 1997-06-27 23:32:09 +00:00
is f3efbb406a The recent buserr handler cleanup in the Amiga locore.s made the label
_buserr point to the 68020/030 buserr code _only_. This has broken access
error handling in the 060 support code.
This is repaired by jumping to _buserr60 from the 060SP, and by providing
a _buserr60 label identical to the _buserr in the unchanged m68k ports
using the 68060.
1997-06-26 22:28:42 +00:00
thorpej 0404c01c46 #define DB_AOUT_SYMBOLS 1997-06-26 01:26:56 +00:00
scottr ecc68fd60f Disassemble the MOVE16 instruction. Also, correct the spelling of
`unknown' while were here, as suggested.  From Denny Gentry
<denny1@home.com>, PR 3567.
1997-06-19 17:39:38 +00:00
veego a8536aa57a Use <sys/param.h> and not <machine/param.h> 1997-06-12 09:57:04 +00:00
veego f7d1a9f167 Add the 'Mach derived conversion macros' from <arch>/include/param.h. 1997-06-10 18:21:23 +00:00
veego 451bfcbc85 New MI include file. Based on the param.h from all m68k ports. 1997-06-10 07:51:43 +00:00
veego 68bc1316cc Initialize machine_arch from MACHINE_ARCH. 1997-06-09 00:04:03 +00:00
veego de7e49a954 Add 'char machine_arch[] = "xxx";' for the new sysctl hw.machine_arch. 1997-06-06 23:26:01 +00:00
veego d04fe1f439 add src/sys/arch/m68k/m68k/m68k_machdep.c 1997-06-06 23:15:28 +00:00
is 6d6e724440 Reorganize buserr/addrerr stuff, to allow omitting unused code in single-cpu
kernels, at the same time getting rid of up to 3 conditional branches and a
bit over one cacheline fetch (for the 68060; the saving is a bit smaller for
040 and yet smaller for the 020/30).
While we're here, also get rid of an redundant lea (using SP-relative
addressing) and of two redundant pushes.
While we're here, also fix a panic which would tear us down on 68060 machines
if a branch prediction error ever occured.
1997-06-04 22:12:43 +00:00
leo 6793c446f0 An attempt to make a generic m68k implementation for cache control operations.
Not yet completely finished.
1997-06-02 20:26:37 +00:00
jtc 8ab87a1df9 fix tipo 1997-05-30 01:34:49 +00:00
jtc 9d04fc8ed1 New zeropage() implementation based on code contributed by Hiroshi Horitomo
<horimoto@cs-aoi.cs.sist.ac.jp> in PR #3641.   I changed the code slightly.
Instead of clearing 13 registers (d1-d7,a1-a6) and zeroing 512 bytes per
loop iteration, I clear 8 registers (d1-d7,a1) and zero 256 bytes.  This
reduces the size and complexity of the function.

On the '020, the simpler code is less than 1% slower.  Surprisingly, it
is ~3% faster on the '040.
1997-05-30 01:20:23 +00:00
jtc 9442b0fcda Use movw when loading countdown registers. 1997-05-29 16:31:33 +00:00
jeremy 8253e6e107 Comment for susword was from fusword and hadn't been changed. 1997-05-21 03:51:04 +00:00
mycroft fd8daf980e Add .MAKE to the .OBJDIR hacks, so they work with `make -n'. 1997-05-07 07:15:34 +00:00
mycroft 90f17dd8ab Oops; put the __attribute__ in the right place. 1997-05-03 12:49:05 +00:00
mycroft a60739aacf Make sure struct trapframe is packed tightly. 1997-05-03 10:16:58 +00:00
gwr 7a80e420ed Remove unused part of sun3_kcore_hdr. 1997-05-01 22:48:09 +00:00
gwr 5e11440dae Fix printf format vs. arg type warnings (in DEBUG sections). 1997-04-30 23:28:03 +00:00
veego 560544f47c Add a -I${.CURDIR} to build netbsd.sa with a obj dir 1997-04-25 22:17:33 +00:00
thorpej 1a3df57d81 Preprocess .s files before assembling them. 1997-04-25 02:26:48 +00:00
thorpej ffd2acc819 Minimalistic changes to not make assumptions about how C labels
are handled.  This file's ".s" counterpart must now be pre-processed.
1997-04-25 02:26:04 +00:00
thorpej dcca39c0f1 - Don't make assumptions about how C labels are handled.
- Use PANIC() where appropriate.
1997-04-25 02:22:00 +00:00
thorpej deb6fcac46 Add several common trap vector stubs. Not all of them are here (yet),
but several are.
1997-04-25 01:33:18 +00:00
thorpej 658ce85446 Add several useful macros:
- ENTRY_NOPROFILE() and ASENTRY_NOPROFILE(), similar to ENTRY() and
  ASENTRY(), but without the profiling prologue.
- GLOBAL()/ASGLOBAL() and LOCAL()/ASLOCAL(), for defining global and
  local variables with C and ASM labels.
- BSS()/ASBSS(), for defining items in the BSS segment, with C or
  ASM labels.
- PANIC("panic message") - shorthand for calling panic() from assembly code.
- VECTOR(), ASVECTOR(), VECTOR_UNUSED - shorthand for defining entries
  in the vector table.
Also, change RCSID() to pad out the string to even boundary.
1997-04-24 22:49:39 +00:00
thorpej 434a6008fe Common m68k sigcode. 1997-04-13 02:30:02 +00:00
thorpej e59a1e5e15 Garbage-collect some things no longer needed since there are no longer
m68k4k ports.
1997-04-09 23:34:29 +00:00
thorpej c739bf6e79 New kcore.h for m68k, includes all possible m68k formats in a self-describing
layout, facilitating sharing libkvm on all m68ks.

NOTE: This changes the crash dump format of all m68k ports that use the
new libkvm!
1997-04-09 19:25:00 +00:00
thorpej 309169617d Factor out a few process manipulation routines found in all m68k
locore.s's.  Currently includes run queue manipulation.
1997-04-09 19:22:49 +00:00
thorpej 175da6b4a7 Factor out the regdump() function used by all m68k ports. 1997-04-09 19:21:47 +00:00
thorpej 2f5b398ad4 Prototype regdump(). 1997-04-09 19:21:06 +00:00
thorpej 0a089bceec Add bcopy.s, copy.s, copypage.s, and regdump.c; they're common to all
m68k ports.
1997-04-09 19:20:23 +00:00
leo 92b96871ea Turn the 'extern' definition of mcount() into a full prototype. 1997-04-08 20:39:01 +00:00
gwr b43ee24829 Need a common <m68k/pcb.h> for gdb. 1997-03-31 21:32:26 +00:00
gwr 08f7a407f9 Separate bcopy and copypage stuff from copy.s 1997-03-17 19:46:36 +00:00
gwr 521683f862 Separate bcopy and the copypage/zeropage stuff out of copy.s
so they can be used separately, and so the copyrights are
attributed to the right owners.  (Catch-all files are bad)
1997-03-17 19:44:33 +00:00
gwr d531b1ed42 s/fpu_type/fputype/g 1997-03-17 19:03:11 +00:00
thorpej f88e127939 Some misc. m68k asm support routines. This file currently contains
setjmp/longjmp and _insque/_remque.  More to come.
1997-03-16 10:47:33 +00:00
is 07b064e02e New ARP system, supports IPv4 over any hardware link.
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.

For the detailed change history, look at the commit log entries for
the is-newarp branch.
1997-03-15 18:09:08 +00:00
gwr 5c553cfd2f Factor out sendsig() and sys_sigreturn() from $arch/machdep.c 1997-03-13 19:14:35 +00:00
gwr 0a928acbfc Remove some unnecessary <vm/*> headers. Have to keep <vm/vm_param.h>,
at least until boolean_t moves to <sys/types.h> or someplace...
Also make ddb_regs extern here.  Closes PR#3213
1997-02-18 22:29:58 +00:00
gwr 25c5ca44ce Define ddb_regs here (and extern in db_machdep.h) 1997-02-18 22:27:32 +00:00
gwr 2d1b2f72cd Add m68k/kgdb_m68k.c 1997-02-12 01:01:07 +00:00
gwr 09cc42f318 Add kgdb_reg_t, KGDB_NUMREGS, KGDB_BUFLEN 1997-02-12 00:59:46 +00:00
gwr 64b7559e4f Machine-dependent KGDB sharable on all m68k machines. 1997-02-12 00:58:01 +00:00
gwr ea3925f508 FIXUP_PC_AFTER_BREAK now takes an arg of type db_regs_t * 1997-02-06 21:16:28 +00:00
scottr 6d39698236 db_expr_t is now a long. 1997-02-05 05:10:24 +00:00
gwr 599d8811dc Adapt to changed definition of struct db_variable. 1997-02-04 18:15:18 +00:00
thorpej de70c1051d prototype mappedcopy{in,out}(), {copy,zero}page(). 1997-02-02 06:56:57 +00:00
thorpej 9568fcee35 Build mappedcopy.c conditional on "options MAPPEDCOPY" 1997-02-02 06:55:15 +00:00
thorpej e9eba07a8f Add the Utah mappedcopyin/mappedcopyout functions to a common m68k
area.  These functions are designed to improve performance of large
copyin/copyout operations by mapping the user page in to the kernel
address space and using bcopy(), rather then copying across protection
boundaries.

XXX This doesn't work yet -- the way it's called doesn't obey C calling
XXX conventions.  That will be fixed soon.
1997-02-02 06:54:10 +00:00
thorpej 7dae9fb29b Add two optimized functions used by pmap.c:
- copypage() -- a single page-aligned NBPG-byte copy.
- zeropage() -- a single page-aligned NBPG-byte zero.
These functions don't play around with alignment, etc.  Their use
causes a measureable performance improvement in pmap_copy_page()
and pmap_copy_page().

A few m68k ports already had copypage() in their locore.s.  It has
been moved here so it can be shared.
1997-02-02 06:50:06 +00:00
thorpej 5885fe6b78 This file is now obsolete. 1997-01-30 17:29:23 +00:00
gwr c7fd1435c6 Update for new struct member names in db_regs_t. 1997-01-27 23:07:04 +00:00
gwr b0f4781a3d Include <machine/frame.h> and typedef db_regs_t using struct trapframe
(instead of replicating trapframe here by a different name).  Update the
macros that refer to members of db_regs_t to use the trapframe members.
1997-01-27 23:02:55 +00:00
gwr 09fa19ebb5 Protect this agains multiple includes so it can be included by db_machdep.h 1997-01-27 22:58:45 +00:00
gwr 6e961cf5de Use db_regs_t instead of struct mc68020_saved_state 1997-01-15 23:11:46 +00:00
veego fd4d6f207d Add '-I${.CURDIR} ${.CURDIR}/' before netbsd.S to compile it with
object dirs.
1996-12-31 22:44:13 +00:00
scottr 3ac126bc23 Work around another uninitialized variable warning 1996-12-18 05:44:31 +00:00
gwr b8c288d184 Fix warnings. 1996-12-17 19:27:51 +00:00
gwr 661c8f1ae0 CTL_MACHDEP definitions. (Common to all m68k ports.)
This should be included by each m68k port's cpu.h so
/usr/sbin/sysctl can be shared on all of them.
1996-12-17 19:26:51 +00:00
gwr a25e8be772 Add prototypes for process_read_regs, etc. (fix warnings) 1996-12-17 19:24:31 +00:00
jtc 9da5f60715 PROF -> GPROF 1996-11-30 02:48:57 +00:00
jtc 16b48272c4 Define _BSD_CLOCKID_T_ and _BSD_TIMER_T_ 1996-11-15 22:38:45 +00:00
is e4d7a09a2a Bug fix for FSINCOS: wouldn't handle FPc == FP1 earlier. 1996-10-30 14:44:47 +00:00
is a747e15eed Add the 68060 bus control register to the list of known cpu superisor mode
registers.
1996-10-30 08:22:39 +00:00
is be08e182af In my earlier patch to the m68k fmovem disassembler, I repaired the register
naming for fmovem, while breaking it for fmove. We probably never will
see normal fmove in the kernel, nevertheless it should be corrected while
somebody remembers.
Besides, the correct patch is smaller and thus easier to verify than the
origininal one.
1996-10-30 08:11:21 +00:00
scottr 531802b5dd cpp -> ${CPP} 1996-10-29 00:11:27 +00:00
is 072b7020c4 * Fix a few wrong fallthroughs in switch cases:
- add a missing return; at the end of a case, leading to wrong disassembly
  of the next few instructions after fmovem.
- while we're here, correct the same bug in PBcc.

  XXX there are a few other dubious fallthroughs in this file (which are
  not explicitly marked with /* FALLTHROUGH */), which I didn't yet analyze.

* Fix other FMOVEM interpretation bugs:
- correct printing of FP data register lists if all are used (only FP0
  would be mentioned)
- correct printing of FP data register lists in the case the list is reversed
  (would have printed nothing)
- correct mapping of fp0-fp7 to register list bits (was reversed)
- correct printing of FP control register lists (this list is never reversed)
- correct printing of FMOVEM with FP control registers (the data direction
  was interpreted the wrong way)

* While we're here, enhance the comments in MOVC's list of cpu control
  registers
1996-10-28 08:43:18 +00:00
is 6e74f35ac9 First small hack at 68060 support: processor configuration register.
(We don't use the new instructions lpstop and plpa in our kernel, so no hurry.)
1996-10-24 18:30:17 +00:00
scottr fb42630e15 Eliminate fusword() prototype, as it's now in <sys/systm.h> 1996-10-16 06:27:05 +00:00
christos 9dc680b6a4 backout previous kprintf change 1996-10-13 03:19:10 +00:00
christos cabe1f09ff use in_addr_t and in_port_t 1996-10-13 02:59:54 +00:00
christos 60dd5ceebe printf -> kprintf, sprintf -> ksprintf 1996-10-11 00:06:28 +00:00
cgd 472889f8e4 moved to aout_machdep.h (via repository copy) 1996-10-08 12:57:37 +00:00
scottr f8b0c86aa8 The 68LC040 generates a format 4 stack frame for floating point
exceptions, which puts the address of the instruction we faulted
on in a different location.  Copy it and handle as we normally would,
restoring the saved PC before returning.

The FPE should probably be reworked to take advantage of the 68LC040's
precalculated effective address, at some point.
1996-10-07 03:16:47 +00:00
scottr d12b257695 Fix FMOVEM emulation; postincrement modes use different ordering than
predecrement modes, per 68K Programmer's Manual p. 5-88.  Pointed out
by Takeshi Nakayama <takeshi@sakabe.nuie.nagoya-u.ac.jp>, verified by me.
1996-10-04 18:07:24 +00:00
ws 5804d3f648 PowerPC port 1996-09-30 16:34:14 +00:00
jtc d137b0e8ba Added new macro _PROF_PROLOG which contains the code sequence needed
to call mcount().  This is needed because the ``link a6,#0'' insn used
trips up gcc's ANSI preprocessor (A # in a function-type macro must be
followed by a macro argument).  _PROF_PROLOG is also used in the i386
asm.h.

Solaris' asm_linkage.h has a MCOUNT macro similar to _PROF_PROLOG
except it expands to different code sequences based on whether a
function is being compiled with "prof" or "gprof" instrumentation.

I also discovered that the m68k ALTENTRY is very different than the
implementation used by other NetBSD ports.  Usually ALTENTRY simply
provides an alternate function entry point.  The m68k version takes a
second argument and jumps inside the second function when profiling is
enabled.  The m68k behavior is similar to the ENTRY2 macro found in
solaris.

Providing ENTRY2 and changing all the code that uses ALTENTRY to use
it would be a desirable change.
1996-09-24 00:05:55 +00:00
leo 2eccad6548 Add macro's that do bclr/bset in a single instruction. 1996-09-16 06:03:58 +00:00
thorpej 22adc20819 Add an FPU_UNKNOWN constant; just a placeholder for any unknown FPU. 1996-09-12 02:52:34 +00:00
thorpej 521a717f6d Factor out common Motorola 68k CPU definitions from the m68k port
cpu.h header files.

Some more work could be done here, but it's a good start.
1996-09-11 00:08:52 +00:00
thorpej 73a5b90800 Pull in the COMPAT_M68K4K stuff when appropriate. 1996-09-10 22:07:10 +00:00
thorpej c5e5dec3b7 All of the m68k ports' exec.h's were essentially the same. Merge them.
Override the N_PAGSIZ() macro; this one checks the MID of the executable
and returns the appropriate page size.
1996-09-08 00:57:29 +00:00
thorpej f124a6aaa9 Back out previous; this is a bigger problem than I expected. 1996-08-14 00:32:53 +00:00
thorpej a05a1045f7 The htonl(), htons(), etc. functions return u_long and u_short. Add
casts to the big-endian versions of these calls so that the compiler
won't complain when they're passed as arguments to printf().
1996-08-14 00:07:35 +00:00
jtc d69119311f Provide alternate memmove() entrypoint for memcpy(). This will help
in the transition from b*() to mem*().
1996-07-20 01:53:42 +00:00