Commit Graph

66 Commits

Author SHA1 Message Date
ad
a180c2a1f7 membar_enter was doing the wrong thing. For x86 we can alias:
membar_enter -> membar_consumer
	membar_exit -> membar_producer
2008-02-09 13:42:21 +00:00
matt
350555cd1f Add the .C versions for the atomic ops. 2008-02-03 07:46:38 +00:00
nakayama
da1555e6a7 Search files in arch/sparc64/atomic before arch/sparc/atomic in case of
sparc64 32-bit kernel.

Make sparc64 32-bit kernel works again.
2008-01-22 12:34:58 +00:00
nakayama
b4ed00a22d Use __arch64__ instead of __sparc64__, since -D__sparc64__ is appended
to build option of sparc64 32-bit kernel.
2008-01-22 12:32:07 +00:00
ad
607fd8ae21 atomic_and/atomic_or don't operate on pointers, so don't copy the return
to a0. From thorpej@.
2008-01-12 17:29:03 +00:00
ad
f6c08490ef Don't put membar in the delay slot. thorpej@ says it may be problematic. 2008-01-12 17:27:28 +00:00
simonb
d8de5b102b Remove support for NetBSD/pc532. 2008-01-09 11:25:58 +00:00
mrg
97e461c633 - provide 32 bit versions of the sparc v9 atomic ops.
- use them on sparc64 32 bit kernels.

fixes issues on 32 bit sparc64 kernels that were using sparc v8 ops.
tested by rjs@.
2007-12-22 23:19:40 +00:00
ad
e16a661bf3 - Make __cpu_simple_lock and similar real functions and patch at runtime.
- Remove old x86 atomic ops.
- Drop text alignment back to 16 on i386 (really, this time).
- Minor cleanup.
2007-12-20 23:46:10 +00:00
ad
163e94a67e 64-bit atomic ops for i386. 2007-12-20 01:27:24 +00:00
ad
9e9c09c30a Fix _atomic_cas_64. Noted by bouyer@. 2007-12-10 14:13:12 +00:00
ad
164992f1a5 Add missing strong aliases. 2007-12-09 17:38:51 +00:00
ad
6260baac6e Add missing strong aliases; sure I did this before? 2007-12-09 17:33:56 +00:00
ad
1206a8cb5c Add some goo to make this work in userspace. 2007-12-08 22:53:33 +00:00
ad
96f5ce86b9 objdump -d to the rescue. I think this should work now. 2007-12-08 22:42:46 +00:00
ad
234aa6237e Memory barriers for MIPS. 2007-11-30 22:50:44 +00:00
ad
4d460dc055 This is atomic_dec, not atomic_inc! 2007-11-30 17:11:48 +00:00
ad
f377e7f907 Fix ia32 -> amd64 thinko. 2007-11-29 21:59:47 +00:00
ad
7243d328e1 Atomic ops for sh3. 2007-11-29 17:33:38 +00:00
ad
6f3a041727 atomic_add_* takes signed integers, the others take unsigned. 2007-11-29 17:29:40 +00:00
ad
29d1edb61b Apparently pointers are also returned in %a0. 2007-11-29 17:12:21 +00:00
ad
935eacf351 Pull in m68k atomic ops from the thorpej-atomic branch. 2007-11-29 17:09:31 +00:00
ad
6b0ff77038 Atomic ops for hppa. 2007-11-29 16:14:56 +00:00
ad
881b1b699e Use the CAS-based inc/dec variants, since these CPUs don't have atomic
add in hardware (does arm?).
2007-11-29 15:29:46 +00:00
ad
11f83d35dd Atomic ops for arm. 2007-11-29 15:19:54 +00:00
ad
2da5f5559a Fix the aliases. 2007-11-29 02:16:00 +00:00
ad
ebe806aa11 sparc atomic ops 2007-11-29 02:01:22 +00:00
ad
c69c0e0f91 Make the 64-bit operations available when possible. 2007-11-29 01:04:57 +00:00
ad
7b3b1e0427 Atomic ops for MIPS. Use the CAS functions already provided by the kernel,
and use the generic C code to provide the rest. Unfortunatley the C code
assembles up pretty badly on MIPS but at least it will work.
2007-11-29 00:16:23 +00:00
ad
2f827ecd6a ppc64 atomic ops. 2007-11-28 21:47:00 +00:00
ad
bc7bf35c36 Atomic ops for powerpc. Please review. 2007-11-28 21:39:48 +00:00
ad
44fc0a18e5 A lock prefix on xchg is meaningless. 2007-11-28 18:02:29 +00:00
ad
fb900ec918 Pull in alpha atomic ops from the thorpej-atomic branch. 2007-11-28 17:39:06 +00:00
ad
f1d10eab90 Pull in sparc64 atomic ops from the thorpej-atomic branch. 2007-11-28 17:29:31 +00:00
ad
77ca26a240 Memory barriers for sparc64. XXX Can the 'membar' go in retl delay slot? 2007-11-28 17:29:13 +00:00
ad
0df165c04d Use xchgb, bswapl and not rotate/shift. 2007-11-28 17:03:35 +00:00
ad
b47fc5f5e0 Fix up a few minor problems. 2007-11-28 15:24:38 +00:00
ad
65728ed419 x86 atomic ops. 2007-11-28 01:33:47 +00:00
ad
51a2159851 Don't unconditionally clear the direction flag. The ABI says it must always
be clear when making a function call, and 'cld' takes about 50 clock cyles
on the P4.
2007-11-12 18:41:59 +00:00
he
2a0ce8a57f Improve consistency between <sys/bswap.h> and what's actually
defined by the C library for the various m68k ports by borrowing
some #ifs from the i386 port.

Also, align sun2 with the other m68k ports as to whether they
define __bswap{16,32} or bswap{16,32} in their C library (all
now define the __ variants).

This should make the m68k ports build sys/rump again, except
for sun2 which hits another problem later on.
2007-09-19 20:31:34 +00:00
scw
dba01be393 Apply the patch, with some minor tweaks, supplied in PR/36513.
This prevents a possible prefetch past the end of the source buffer.

Note that the semantics of the pld instruction mean that it is unlikely
that this would have caused any problems except in very specific
circumstances in some types of device drivers.
2007-06-21 21:37:04 +00:00
scw
5092a6592f Apply the patch supplied in PR/36512 to fix the buffer overlap check. 2007-06-20 22:31:21 +00:00
scw
5764a76889 Remove support for NetBSD/{,evb}sh5. 2007-04-08 09:35:21 +00:00
matt
1c1dcb3369 Add these so kernels built -O0 will link. 2007-03-31 06:13:52 +00:00
ross
282f07d643 Fix bug involving addresses >= 4G on ppc64. 2006-08-15 02:23:54 +00:00
ross
12f8dfa169 add reachover ffs and strlen for ppc64 2006-07-07 07:37:44 +00:00
ross
9eb6edc931 revert 2006-07-07 07:31:03 +00:00
ross
a76fa390b6 And yet more .S files... 2006-07-07 07:15:04 +00:00
uwe
13ab2e2a10 Now that bcopy.S doesn't contain the actual implemenation, move it
back to libc.
2006-04-23 00:08:18 +00:00
uwe
c71562d660 Move the code into memcpy.S. Adjust the other files accordingly.
Same binaries are generated.
2006-04-22 23:53:47 +00:00