<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/amd64/include/pcpu.h, branch release/7.0.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<id>http://cgit.freebsd.org/src/atom?h=release%2F7.0.0_cvs</id>
<link rel='self' href='http://cgit.freebsd.org/src/atom?h=release%2F7.0.0_cvs'/>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<updated>2008-02-24T05:45:17Z</updated>
<entry>
<title>This commit was manufactured by cvs2svn to create tag</title>
<updated>2008-02-24T05:45:17Z</updated>
<author>
<name>cvs2svn</name>
<email>cvs2svn@FreeBSD.org</email>
</author>
<published>2008-02-24T05:45:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=a9c219fa3cec18ef9f30edec6fa106bf0e2d423d'/>
<id>urn:sha1:a9c219fa3cec18ef9f30edec6fa106bf0e2d423d</id>
<content type='text'>
'RELENG_7_0_0_RELEASE'.

This commit was manufactured to restore the state of the 7.0-RELEASE image.
</content>
</entry>
<entry>
<title>Rework the PCPU_* (MD) interface:</title>
<updated>2007-06-04T21:38:48Z</updated>
<author>
<name>Attilio Rao</name>
<email>attilio@FreeBSD.org</email>
</author>
<published>2007-06-04T21:38:48Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=6759608248f30eb575170c0700cc99140e0bdc35'/>
<id>urn:sha1:6759608248f30eb575170c0700cc99140e0bdc35</id>
<content type='text'>
- Rename PCPU_LAZY_INC into PCPU_INC
- Add the PCPU_ADD interface which just does an add on the pcpu member
  given a specific value.

Note that for most architectures PCPU_INC and PCPU_ADD are not safe.
This is a point that needs some discussions/work in the next days.

Reviewed by: alc, bde
Approved by: jeff (mentor)
</content>
</entry>
<entry>
<title>Push down the implementation of PCPU_LAZY_INC() into the machine-dependent</title>
<updated>2007-03-11T05:54:29Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2007-03-11T05:54:29Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=c640357f04dba4c8a42e43a1c44a85f97d359302'/>
<id>urn:sha1:c640357f04dba4c8a42e43a1c44a85f97d359302</id>
<content type='text'>
header file.  Reimplement PCPU_LAZY_INC() on amd64 and i386 making it
atomic with respect to interrupts.

Reviewed by: bde, jhb
</content>
</entry>
<entry>
<title>Fixed some style bugs.  Routine except:</title>
<updated>2007-02-06T18:04:02Z</updated>
<author>
<name>Bruce Evans</name>
<email>bde@FreeBSD.org</email>
</author>
<published>2007-02-06T18:04:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=1300fd67f384aad66d54301c7cf094257c15973e'/>
<id>urn:sha1:1300fd67f384aad66d54301c7cf094257c15973e</id>
<content type='text'>
- don't use __GNUCLIKE___OFFSETOF, since __offsetof() is a standard
  FreeBSD implementaion detail which has nothing to do with GNUC.
</content>
</entry>
<entry>
<title>Simplified PCPU_GET() and PCPU_SET().  We must copy through a temporary</title>
<updated>2007-02-06T16:21:09Z</updated>
<author>
<name>Bruce Evans</name>
<email>bde@FreeBSD.org</email>
</author>
<published>2007-02-06T16:21:09Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=3764a8237760b1dbb6bb430d39fa5ceabf8019ca'/>
<id>urn:sha1:3764a8237760b1dbb6bb430d39fa5ceabf8019ca</id>
<content type='text'>
variable to avoid invalid constraints in dead code.  Use an array of
u_char's (inside a struct) instead of a char/short/int/long variable so
that the variable and its accesses can be spelled in the same way in all
cases and code doesn't need to be cloned just to hold the spelling
differences.

Fixed strict-aliasing errors in PCPU_SET() and in the amd64 PCPU_GET().
Cast to (void *) as in rev.1.37 of the i386 version where the errors
were fixed for the i386 PCPU_GET() only.  It would be more correct to
copy to and from the temp. variable using memcpy(), but then an
ifdef tangle would be required to ensure using the builtin memcpy().
We depend on fairly aggressive optimization to put the temp. variable
only in a register despite it being copied using
*(type *)(void *)&amp;anothertype and could depend on this when using
memcpy() too.  This seems to work right even for -O0, but the -O0 case
has not been completely tested.

This change gives identical object code for all object files in LINT
on amd64 (except for one file with a __TIME__ stamp).  For LINT on
i386 it gives unimportant differences in instruction order and padding
in a few object files.  This was only tested for -O.

This change (actually a previous version of it) gives the following
reductions in the number of object files in LINT that fail to compile
with -O2 but without the -fno-strict-aliasing kludge:
- amd64: 29 (down from 211)
- i386: 36 (down from 47)

gcc-3.4.6 actually allows the invalid constraints that result from not
using the temp. variable, at least with -O[1-2], but gcc-3.3.3 crashes
on them and I don't want to depend on compiler bugs.
</content>
</entry>
<entry>
<title>Remove diffs to i386 version that came in via the compiler support ifdefs.</title>
<updated>2005-03-11T22:16:09Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>2005-03-11T22:16:09Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=cf4e1c4613cfe253ceb3ca9f19809d9e16176458'/>
<id>urn:sha1:cf4e1c4613cfe253ceb3ca9f19809d9e16176458</id>
<content type='text'>
This changes things like whitespace, inconsistent use of #ifndef vs
#if !defined(), different macro argument orders, mismatched comments, etc.
</content>
</entry>
<entry>
<title>netchild's mega-patch to isolate compiler dependencies into a central</title>
<updated>2005-03-02T21:33:29Z</updated>
<author>
<name>Joerg Wunsch</name>
<email>joerg@FreeBSD.org</email>
</author>
<published>2005-03-02T21:33:29Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=a5f50ef9e43b28e15a7e2a2aec73754456619f17'/>
<id>urn:sha1:a5f50ef9e43b28e15a7e2a2aec73754456619f17</id>
<content type='text'>
place.

This moves the dependency on GCC's and other compiler's features into
the central sys/cdefs.h file, while the individual source files can
then refer to #ifdef __COMPILER_FEATURE_FOO where they by now used to
refer to #if __GNUC__ &gt; 3.1415 &amp;&amp; __BARC__ &lt;= 42.

By now, GCC and ICC (the Intel compiler) have been actively tested on
IA32 platforms by netchild.  Extension to other compilers is supposed
to be possible, of course.

Submitted by:	netchild
Reviewed by:	various developers on arch@, some time ago
</content>
</entry>
<entry>
<title>Argh! Followup to previous commit.  I checked in the patch with an</title>
<updated>2003-11-20T23:49:28Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>2003-11-20T23:49:28Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=b4bae2b0c570d1ba167914f96ef6c50cae36aee3'/>
<id>urn:sha1:b4bae2b0c570d1ba167914f96ef6c50cae36aee3</id>
<content type='text'>
unintended local change.  Change Xurthread back to curthread.
</content>
</entry>
<entry>
<title>Provide a streamlined '#define curthread __curthread()' for amd64 to avoid</title>
<updated>2003-11-20T22:54:44Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>2003-11-20T22:54:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=5dd883833c394d53e7dd086076b94ab84d918109'/>
<id>urn:sha1:5dd883833c394d53e7dd086076b94ab84d918109</id>
<content type='text'>
the compiler having to parse and optimize the PCPU_GET(curthread) so often.
__curthread() is an inline optimized version of PCPU_GET(curthread) that
knows that pc_curthread is at offset zero in the pcpu struct.  Add a
CTASSERT() to catch any possible changes to this.  This accounts for
just over a 1% wall clock speedup for total kernel compile/link time,
and 20% compile time speedup on some specific files depending on which
compile options are used.

Approved by:  re (jhb)
</content>
</entry>
<entry>
<title>Initial landing of SMP support for FreeBSD/amd64.</title>
<updated>2003-11-17T08:58:16Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>2003-11-17T08:58:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=0d2a2989048c676030afdcf7ba3aae9713738395'/>
<id>urn:sha1:0d2a2989048c676030afdcf7ba3aae9713738395</id>
<content type='text'>
- This is heavily derived from John Baldwin's apic/pci cleanup on i386.
- I have completely rewritten or drastically cleaned up some other parts.
  (in particular, bootstrap)
- This is still a WIP.  It seems that there are some highly bogus bioses
  on nVidia nForce3-150 boards.  I can't stress how broken these boards
  are.  I have a workaround in mind, but right now the Asus SK8N is broken.
  The Gigabyte K8NPro (nVidia based) is also mind-numbingly hosed.
- Most of my testing has been with SCHED_ULE.  SCHED_4BSD works.
- the apic and acpi components are 'standard'.
- If you have an nVidia nForce3-150 board, you are stuck with 'device
  atpic' in addition, because they somehow managed to forget to connect the
  8254 timer to the apic, even though its in the same silicon!  ARGH!
  This directly violates the ACPI spec.
</content>
</entry>
</feed>
