Commit Graph

1331 Commits

Author SHA1 Message Date
mhitch
9b0f085da1 68030 and 68040 processors consider the read portion of a read-modify-write
transfer as a write to ensure the memory is writable before starting any
transfer.  The fault status information does not reflect this in the 'read'
status bit (i.e. it shows up as a read access), so faults with a RMW access
to non-writable memory was not getting the correct protection.  The page would
be read-only and the instruction would fault over and over.

A specific example is when a process forks, and the child process attempts
to execute a RMW access to a data page, which is read-only because it's CoP
Copy-On-Write.

When checking if the page needs to be writablek, also check the locked transfer
and treat any locked transfer as a write.

68060 already handled this correctly, since it has separate read and write
fault bits, and both are set on a RMW access and the trap code was checking
the write status bit.

Fixes PR#36848.
2007-09-01 21:31:55 +00:00
kiyohara
44c89c7646 Replace to Matthew Orgass's slhci(4).
http://mail-index.netbsd.org/tech-kern/2007/06/26/0001.html
2007-08-15 03:53:08 +00:00
ad
9c6535a6de Add ci_cpuid where it's missing. 2007-08-04 09:49:51 +00:00
ad
66fefd117b It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
2007-07-29 12:15:35 +00:00
isaki
d9167e130a Clean up header file. 2007-07-16 07:29:59 +00:00
ad
63811f5275 Generic soft interrupts are mandatory. 2007-07-14 21:48:17 +00:00
isaki
61a446b076 Make it compilable after the merge of some vmlocking branch.
OK'ed by ad@.
2007-07-14 14:13:21 +00:00
ad
d21a1f43dc - Restore com.c 1.45, par.c 1.31. They were trashed due to file system
corruption on my machine.
- Adjust to match callout_init signature change.
2007-07-14 10:46:25 +00:00
isaki
b9fb40c553 Declare candbtimer_ch earlier. 2007-07-14 09:50:04 +00:00
ad
88ab7da936 Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
2007-07-09 20:51:58 +00:00
mhitch
a69c525cfd Ooops - I missed another call to trap. Fixes PR#36567. 2007-06-27 17:55:51 +00:00
isaki
b9c5a4c699 Remove _ZLIB_PRIVATE that should have been removed 10 years ago. 2007-06-23 10:50:24 +00:00
mhitch
d2eac2f631 Pass a frame pointer to trap() rather than the 'entire frame' trick. Gcc4
was optimizing away modifications to the frame contents (it's not nice to
trick gcc).  Pass the pointer as the first argument to reduce the number
of places that would be changed otherwise.  Fixes the getcwd regression
test on most m68k ports.
2007-06-12 03:34:28 +00:00
martin
c2534a819b Add pseudo-device agr to all GENERIC kernels where it might make sense
(commented out in some).
2007-06-04 08:55:18 +00:00
tsutsui
32b0b73c06 Move declarations of m68k common functions
from <machine/cpu.h> to <m68k/m68k.h>.
While here, remove some obsolete function decls.
2007-05-21 16:37:03 +00:00
isaki
d7f5331e03 Make it compilable with FDDEBUG. 2007-05-20 10:52:40 +00:00
mhitch
9385473585 Add missing call to lwp_startup() in lwp_trampoline() (which was renamed
from proc_trampoline to match the other ports).

A DIAGNOSTIC kernel will now boot and run.  LOCKDEBUG still doesn't work yet.
Also, my amiga no longer loses time.
2007-05-20 04:29:47 +00:00
isaki
38bf980ecb Use do { } while (0) to macro. 2007-05-19 14:25:26 +00:00
isaki
2440803ee4 Adapt to the merge of yamt-idlelwp branch.
tested on my X68030.
2007-05-19 14:19:39 +00:00
tsutsui
570ffc1b5b Update comments to sync yamt-km merge (Sysmap has been moved).
See also:
http://mail-index.netbsd.org/source-changes/2005/02/23/0004.html
2007-05-18 10:45:58 +00:00
isaki
23df019b96 Clean up white spaces and tabs. 2007-05-12 06:31:18 +00:00
isaki
9b78dfb5bb Remove a local block for readability. 2007-05-12 06:28:41 +00:00
isaki
5b51f6777d Remove an unnecessary semicolon. 2007-05-12 06:17:38 +00:00
msaitoh
8ce1f4fff2 fix typos 2007-04-29 20:23:34 +00:00
isaki
174e071c25 Remove obsoleted #undef. 2007-04-29 05:31:00 +00:00
isaki
59684b33a0 Make it compilable with DEBUG. 2007-03-21 05:15:50 +00:00
drochner
ab07e481e4 It doesn't make sense to specify "configuration" and "interface"
locators for uhub because a hub can't have sub-devices.
This might be sanity-checked eventually.
Same for ubt now after the change to device attachment.
2007-03-14 12:27:20 +00:00
isaki
e1947f9eb2 Include appropriate header file. 2007-03-11 08:22:33 +00:00
isaki
d30ec9eee3 white space, indent and KNF. 2007-03-11 08:09:23 +00:00
isaki
64e649bb89 Merge #ifdef _KERNEL stuff into one place.
Suggested by tsutsui@.
2007-03-11 07:57:37 +00:00
isaki
2a35e6919b Remove #ifdef _KERNEL since this file is no longer exported.
Suggested by tsutsui@.
2007-03-11 07:57:05 +00:00
isaki
3a58b5c6d0 Stop installing <machine/intr.h> on x68k.
Suggested by simonb@ and tsutsui@.
2007-03-11 06:16:02 +00:00
isaki
16cf7dc30e Include <machine/intr.h> only in _KERNEL.
Suggested by tsutsui@.
2007-03-11 06:15:20 +00:00
isaki
44f16b3b10 Remove an extra white space. 2007-03-11 06:01:05 +00:00
thorpej
32a8b62d33 - Shrink ipl_cookie_t from 32-bits to 16-bits (large enough to hold
an SR value or an IPL_* constant).
- Take advange of the smaller ipl_cookie_t to shrink kmutex_t from
  16 bytes to 8 bytes by overlapping storage where possible.
- Implement a RAS-based _lock_cas() for mc68010 systems (Sun2).  See
  sun68k/sun68k/isr.c.

Tested on various m68k platforms, but NOT Sun2.  In any case, at least
Sun2 compiles now.
2007-03-11 05:22:24 +00:00
he
7ee7450e6f Cast to char* before doing pointer arithmetic. 2007-03-05 20:55:45 +00:00
he
9f6b24c0fa Cast to char* before doing pointer arithmetic. 2007-03-05 20:48:42 +00:00
he
f1f47464be Cast to char* before doing pointer arithmetic. 2007-03-05 20:38:19 +00:00
tsutsui
d5a5c6095d Allocate msgbufaddr in pmap_bootstrap.c where it's initilized,
and move its declaration into <m68k/pmap_motorola.h>.
2007-03-05 12:50:15 +00:00
tsutsui
2735750cca Add (char *) casts on pointer arith. 2007-03-05 12:37:53 +00:00
tsutsui
980acc7d7b Remove an unnecessary cast and use (char *) on pointer arith. 2007-03-05 12:30:37 +00:00
tsutsui
cdfa69a5f8 - add missed '*'
- vmmap is (char *) in pmap_motorola.h
2007-03-05 12:26:55 +00:00
christos
53524e44ef Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
tsutsui
1b20cebad5 Hide #include <m68k/softintr.h> inside #ifdef _KERNEL in <machine/intr.h>
to avoid exporting unnecessary files to userland.
Should fix build.sh failure, which was pointed out by isaki@.

XXX: which userland program would require contents of <machine/intr.h>?
2007-03-04 05:28:38 +00:00
isaki
321252311a Delete old prototypes. 2007-03-04 03:25:33 +00:00
tsutsui
75e46e71a6 Global ssir (similated software intnerrupt request?) is now declared
in softintr.c so remove it from locore.s.
2007-03-04 02:17:15 +00:00
tsutsui
72c70a3609 Add MI softintr(9) support for x68k with common m68k/softintr.c.
Tested by isaki@ and Yasushi Oshima.

XXX: x68k/dev/com.c should be rewritten to use MI com(4).
2007-03-04 02:08:08 +00:00
isaki
c57dd8f6e4 -Wconversion is too strict. 2007-03-03 07:10:30 +00:00
thorpej
ae01c745cb TRUE -> true, FALSE -> false 2007-02-22 06:47:16 +00:00
mrg
4410329b87 add a pair of new bus_dma(9) functions:
int _bus_dmatag_subregion(bus_dma_tag_t tag,
				  bus_addr_t min_addr,
				  bus_addr_t max_addr,
				  bus_dma_tag_t *newtag,
				  int flags)
	void _bus_dmatag_destroy(bus_dma_tag_t tag)

that allow a (normally broken/limited) device to restrict the bus address
range it can talk to.  this is used by bce(4) to limit DMA addresses to
1GB range, the maximum the chip can address.

all this is from Yorick Hardy <yhardy@uj.ac.za> with input from several
people on tech-kern.

XXX: bus_dma(9) needs an update still.
2007-02-21 20:41:23 +00:00