summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Resolve warnings exposed by LINT.marcel2008-02-245-26/+5
| | | | | o Put prototypes in a single header only. o Fix printf format specifiers.
* After finishing sending file data in sendfile(2), don't forget to sendcperciva2008-02-241-1/+3
| | | | | | | | | the provided trailers. This has been broken since revision 1.240. Submitted by: Dan Nelson PR: kern/120948 "sounds ok to me" from: phk MFC after: 3 days
* The matching in -lname and -ilname are on the contents of the linkimp2008-02-241-5/+10
| | | | | | | | itself, not on the type of the file. As such, do a readlink to get the symbolic link's contents and fail to match if the path isn't a symbolic link. Pointed out by: des@
* Add prototype for __cmpd2().marcel2008-02-231-0/+1
|
* Add FPU_EMU.marcel2008-02-231-0/+2
|
* remove call to kdb_backtrace()kmacy2008-02-231-1/+0
|
* Hook-up the FPU emulator. It's optional upon FPU_EMU.marcel2008-02-232-0/+12
|
* Bring back (without advertising clause) cmpdi2.c. It's needed on PowerPCmarcel2008-02-231-0/+54
| | | | when the FP emulator is compiled-in.
* Add a floating-point emulator so that a single userland or single ABImarcel2008-02-2313-0/+3880
| | | | | | | | | | can run on processors that don't have a FPU. This is typically the case for Book E processors. While a tuned system will probably want to use soft-float (or use a processor that has a FPU if the usage is FP intensive enough), allowing hard-float on FPU-less systems gives great portability and flexibility. Obtained from: NetBSD
* o Build and install the U-Boot loader as ubldr.marcel2008-02-232-10/+6
| | | | | | o Don't build/install the manual pages or configuration files that are already installed by the OFW loader. o Hook the U-Boot loader to the build.
* style(9) commit.marcel2008-02-231-211/+218
|
* Bump the default .Os version to FreeBSD 8.0.ru2008-02-231-1/+1
|
* Setup the new bootinfo structure.marcel2008-02-231-36/+99
| | | | While here, make local function static and update copyright.
* o Keep running on U-Boot's stack.marcel2008-02-231-21/+23
| | | | | | | | | | o Disable interrupts while not running U-Boot code. We clobber registers that the U-Boot interrupt handlers assume to be fixed as per the U-Boot register usage. At this time this only applies to r14. U-Boot uses r2 now for what they used r29 for. After we restore r14 in preparation of doing the syscall, we re-enable interrupts. When we return from the syscall, we disable interrupts and restore the callee-saved r14.
* The NFS file system support is conditional upon LOADER_NFS_SUPPORT,marcel2008-02-231-1/+1
| | | | not LOADER_NET_SUPPORT.
* Add __elfN(relocation_offset). It holds the offset between the virtualmarcel2008-02-232-2/+30
| | | | | | | | | | (link) address and the physical (load) address. Ideally, the mapping between link and load addresses should be abstracted by the copyin(), copyout() and readin() functions, so that we don't have to add kluges in __elfN(loadimage)(). Then, we could also have paged virtual memory for the kernel. This can be important under EFI, where you need to allocate physical memory form the firmware if you want to work in all scenarios.
* Define the bootinfo structure for FreeBSD. It is not used onmarcel2008-02-232-73/+56
| | | | AIM, but it's used for BookE.
* o Include glue.hmarcel2008-02-231-12/+10
| | | | o Support multiple memory regions.
* o Build libuboot with -msoft-float like everything else.marcel2008-02-233-50/+88
| | | | | | | o Move the API prototypes to a separate header (glue.h) o Allow the platform to hint libuboot about where to look for the API signature. The uboot_address variable is expected to be defined by the platform.
* Add the appropriate license information. This file is doublemarcel2008-02-231-1/+55
| | | | | | licensed under GPL and BSD. Thanks to: raj@
* We build ficl and libofw with -msoft-float. Build the loadermarcel2008-02-231-1/+1
| | | | with -msoft-float too.
* Implement a number of primaries present in GNU find, but not presentimp2008-02-235-5/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in our find. The following are nops because they aren't relevant to our find: -ignore_readdir_race -noignore_readdir_race -noleaf The following aliaes were created: -gid -> -group [2] -uid -> -user [2] -wholename -> -path -iwholename -> ipath -mount -> -xdev -d -> -depth [1] The following new primaries were created: -lname like -name, but matches symbolic links only) -ilname like -lname but case insensitive -quit exit(0) -samefile returns true for hard links to the specified file -true Always true I changed one primary to match GNU find since I think our use of it violates POLA -false Always false (was an alias for -not!) Also, document the '+' modifier for -execdir, as well as all of the above. This was previously implemented. Document the remaining 7 primaries that are in GNU find, but aren't yet implemented in find(1) [1] This was done in GNU find for compatibility with FreeBSD, yet they mixed up command line args and primary args. [2] -uid/-gid in GNU find ONLY takes a numeric arg, but that arg does the normal range thing that. GNU find -user and -uid also take a numberic arg, but don't do the range processing. find(1) does both for -user and -group, so making -uid and -gid aliases is compatible for all non-error cases used in GNU find. While not perfect emulation, this seems a reasonable thing for us.
* Fix typo.brueffer2008-02-231-1/+1
|
* Optimize the 9pi/2 < |x| <= 2**19pi/2 case some more by avoiding anbde2008-02-232-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | fabs(), a conditional branch, and sign adjustments of 3 variables for x < 0 when the branch is taken. In double precision, even when the branch is perfectly predicted, this saves about 10 cycles or 10% on amd64 (A64) and i386 (A64) for the negative half of the range, but makes little difference for the positive half of the range. In float precision, it also saves about 4 cycles for the positive half of the range on i386, and many more cycles in both halves on amd64 (28 in the negative half and 11 in the positive half for tanf), but the amd64 times for float precision are anomalously slow so the larger improvement is only a side effect. Previous commits arranged for the x < 0 case to be handled simply: - one part of the rounding method uses the magic number 0x1.8p52 instead of the usual 0x1.0p52. The latter is required for large |x|, but it doesn't work for negative x and we don't need it for large |x|. - another part of the rounding method no longer needs to add `half'. It would have needed to add -half for negative x. - removing the "quick check no cancellation" in the double precision case removed the need to take the absolute value of the quadrant number. Add my noncopyright in e_rem_pio2.c
* Fix tinderbox by removing call to kdb_backtracekmacy2008-02-231-1/+0
| | | | MFC after: 3 days
* Add the groupmod '-d' option to pw to allow the deletion of existing usersscf2008-02-233-16/+92
| | | | | | | | | | from a group without the need to perform the same operation by replacing the existing list via the '-M' option. The '-M' option requires someone to fetch the existing members with pw, deleting the undesired members from the list and sending the altered list back to pw. Approved by: wes (mentor) MFC after: 5 days
* style(9) (verified no object changes)scf2008-02-232-3/+2
| | | | | Approved by: wes (mentor) MFC after: 5 days
* - update firmware to 5.0kmacy2008-02-2346-4080/+5926
| | | | | | | | | | | | | | | | | - add support for T3C - add DDP support (zero-copy receive) - fix TOE transmit of large requests - fix shutdown so that sockets don't remain in CLOSING state indefinitely - register listeners when an interface is brought up after tom is loaded - fix setting of multicast filter - enable link at device attach - exit tick handler if shutdown is in progress - add helper for logging TCB - add sysctls for dumping transmit queues - note that TOE wxill not be MFC'd until after 7.0 has been finalized MFC after: 3 days
* This patch adds a new ktrace(2) record type, KTR_STRUCT, whose payloaddes2008-02-2311-14/+358
| | | | | | | | | | | | | | | | | | | | | | | consists of the null-terminated name and the contents of any structure you wish to record. A new ktrstruct() function constructs and emits a KTR_STRUCT record. It is accompanied by convenience macros for struct stat and struct sockaddr. In kdump(1), KTR_STRUCT records are handled by a dispatcher function that runs stringent sanity checks on its contents before handing it over to individual decoding funtions for each type of structure. Currently supported structures are struct stat and struct sockaddr for the AF_INET, AF_INET6 and AF_UNIX families; support for AF_APPLETALK and AF_IPX is present but disabled, as I am unable to test it properly. Since 's' was already taken, the letter 't' is used by ktrace(1) to enable KTR_STRUCT trace points, and in kdump(1) to enable their decoding. Derived from patches by Andrew Li <andrew2.li@citi.com>. PR: kern/117836 MFC after: 3 weeks
* ip6(4) man page lacks documentation for TCLASS option.bms2008-02-221-2/+13
| | | | | PR: docs/120945 Reviewed by: remko
* Avoid using FP-to-integer conversion for !(amd64 || i386) too. Use thebde2008-02-222-6/+4
| | | | | | | | | | | | | | | | | | | FP-to-FP method to round to an integer on all arches, and convert this to an int using FP-to-integer conversion iff irint() is not available. This is cleaner and works well on at least ia64, where it saves 20-30 cycles or about 10% on average for 9Pi/4 < |x| <= 32pi/2 (should be similar up to 2**19pi/2, but I only tested the smaller range). After the previous commit to e_rem_pio2.c removed the "quick check no cancellation" non-optimization, the result of the FP-to-integer conversion is not needed so early, so using irint() became a much smaller optimization than when it was committed. An earlier commit message said that cos, cosf, sin and sinf were equally fast on amd64 and i386 except for cos and sin on i386. Actually, cos and sin on amd64 are equally fast to cosf and sinf on i386 (~88 cycles), while cosf and sinf on amd64 are not quite equally slow to cos and sin on i386 (average 115 cycles with more variance).
* Remove the "quick check no cancellation" optimization forbde2008-02-221-12/+1
| | | | | | | | | | | | | | | | | | 9pi/2 < |x| < 32pi/2 since it is only a small or negative optimation and it gets in the way of further optimizations. It did one more branch to avoid some integer operations and to use a different dependency on previous results. The branches are fairly predictable so they are usually not a problem, so whether this is a good optimization depends mainly on the timing for the previous results, which is very machine-dependent. On amd64 (A64), this "optimization" is a pessimization of about 1 cycle or 1%; on ia64, it is an optimization of about 2 cycles or 1%; on i386 (A64), it is an optimization of about 5 cycles or 4%; on i386 (Celeron P2) it is an optimization of about 4 cycles or 3% for cos but a pessimization of about 5 cycles for sin and 1 cycle for tan. I think the new i386 (A64) slowness is due to an pipeline stall due to an avoidable load-store mismatch (so the old timing was better), and the i386 (Celeron) variance is due to its branch predictor not being too good.
* Optimize the 9pi/2 < |x| <= 2**19pi/2 case on amd64 and i386 by avoidingbde2008-02-222-0/+18
| | | | | | | | | | | | | | | | | | | | | | the the double to int conversion operation which is very slow on these arches. Assume that the current rounding mode is the default of round-to-nearest and use rounding operations in this mode instead of faking this mode using the round-towards-zero mode for conversion to int. Round the double to an integer as a double first and as an int second since the double result is needed much earler. Double rounding isn't a problem since we only need a rough approximation. We didn't support other current rounding modes and produce much larger errors than before if called in a non-default mode. This saves an average about 10 cycles on amd64 (A64) and about 25 on i386 (A64) for x in the above range. In some cases the saving is over 25%. Most cases with |x| < 1000pi now take about 88 cycles for cos and sin (with certain CFLAGS, etc.), except on i386 where cos and sin (but not cosf and sinf) are much slower at 111 and 121 cycles respectivly due to the compiler only optimizing well for float precision. A64 hardware cos and sin are slower at 105 cycles on i386 and 110 cycles on amd64.
* Fixes a memory leak when VRF's are in play.rrs2008-02-221-0/+4
| | | | | Submitted by: Prasad Narasimha (snprasad@cisco.com) Reviewed by: rrs
* - Takes out stray ifdef code that should not have been present.rrs2008-02-221-5/+0
|
* Add an irint() function in inline asm for amd64 and i386. irint() isbde2008-02-221-0/+30
| | | | | | | | | | | | | the same as lrint() except it returns int instead of long. Though the extern lrint() is fairly fast on these arches, it still takes about 12 cycles longer than the inline version, and 12 cycles is a lot in applications where [li]rint() is used to avoid slow conversions that are only a couple of times slower. This is only for internal use. The libm versions of *rint*() should also be inline, but that would take would take more header engineering. Implementing irint() instead of lrint() also avoids a conflict with the extern declaration of the latter.
* Optimize the conversion to bits a little (by about 11 cycles or 16%bde2008-02-221-5/+13
| | | | | | | | | | | | on i386 (A64), 5 cycles on amd64 (A64), and 3 cycles on ia64). gcc tends to generate very bad code for accessing floating point values as bits except when the integer accesses have the same width as the floating point values, and direct accesses to bit-fields (as is common only for long double precision) always gives such accesses. Use the expsign access method, which is good for 80-bit long doubles and hopefully no worse for 128-bit long doubles. Now the generated code is less bad. There is still unnecessary copying of the arg on amd64 and i386 and mysterious extra slowness on amd64.
* Sanitize arguments to linux_mremap().kib2008-02-222-0/+18
| | | | | | | | Check that only MREMAP_FIXED and MREMAP_MAYMOVE flags are specified. Check for the page alignment of the addr argument. Submitted by: rdivacky MFC after: 1 week
* Fix essential bugs and warnings.ru2008-02-221-5/+4
|
* Optimize the fixup for +-0 by using better classification for this casebde2008-02-221-2/+4
| | | | | and by using a table lookup to avoid a branch when this case occurs. On i386, this saves 1-4 cycles out of about 64 for non-large args.
* Hide BSD ar(1) under the MK_TOOLCHAIN option.ru2008-02-221-1/+2
| | | | Reviewed by: obrien
* Fix rintl() on signaling NaNs and unsupported formats.bde2008-02-221-5/+3
|
* Clean up created turds.obrien2008-02-221-0/+1
|
* We build important toolchain statically. So build BSD 'ar' staticallyobrien2008-02-221-0/+1
| | | | when its replacing GNU 'ar'.
* Re-introduce the new BSDLed 'ar' to the build.obrien2008-02-223-2/+19
| | | | | | It is installed as "bsdar" unless WANT_BSDAR is defined. Discussed with: kaiw
* Fix 'make checkdpadd'.jkoshy2008-02-221-1/+1
|
* s/rcsid/__FBSDID/das2008-02-2279-241/+158
|
* Remove an unused variable.das2008-02-223-3/+3
|
* Eliminate some warnings.das2008-02-223-9/+3
|
* MFC after: 4 weeksdavidch2008-02-223-5555/+7977
| | | | | | | | | - Added loose RX MTU functionality to allow frames larger than 1500 bytes to be accepted even though the interface MTU is set to 1500. - Implemented new TCP header splitting/jumbo frame support which uses two chains for receive traffic rather than the original single recevie chain. - Added additional debug support code.
OpenPOWER on IntegriCloud