Commit Graph

189 Commits

Author SHA1 Message Date
jruoho 15a9932e12 Update for ACPICA 20110211. 2011-02-17 10:13:35 +00:00
jruoho 72daaf98ee ACPI_THREAD_ID type was changed to uint64_t, which is good enough for us. 2011-02-17 10:12:50 +00:00
jruoho 159c4e26bd Merge ACPICA 20110211. 2011-02-17 10:09:40 +00:00
jruoho 124f4c82e1 Import 20110211. 2011-02-17 10:00:50 +00:00
jruoho aa569730f5 Retire src/sys/external/intel-public. 2011-02-17 08:09:10 +00:00
jruoho ba4af2fdd7 Add the build glue. 2011-02-17 07:27:17 +00:00
jruoho df3b2cd4aa Revert the change made by cegger@ to the GPE reference counting.
The forthcoming version includes a rewritten GPE handling, so it
is unclear how relevant and safe this change is. If needed, this
will be re-applied later.
2011-02-17 07:24:41 +00:00
jruoho 716c1ee010 Apply our local patches. 2011-02-17 07:21:14 +00:00
jruoho 28c506b8f8 Reimport ACPICA 20100528 to a new location. 2011-02-17 07:16:14 +00:00
jmcneill 8f6ebfdd74 map the framebuffer and agp with BUS_SPACE_MAP_PREFETCHABLE 2011-02-15 14:24:23 +00:00
jmcneill 18b8e65603 wsdisplay isn't module friendly so don't add genfb support to the kmod for now 2011-02-12 14:49:54 +00:00
jmcneill 65c6f254b0 Make DRM work with genfb again. 2011-02-11 01:13:02 +00:00
dyoung 3f178d7fdb Protect against a NULL pointer dereference that I've seen in the wild. 2011-01-26 00:55:42 +00:00
dyoung 153bc7928e unifdef -U__linux__ -U__FreeBSD__. No functional change intended. 2011-01-21 21:57:16 +00:00
joerg 664edd5c61 Drop the build date from the iasl binary. 2011-01-12 22:53:16 +00:00
cegger f150925704 recognize Radeon HD 4200. This lets radeondrm(4) attach.
"go ahead" macallan@
2011-01-06 11:07:48 +00:00
cegger b9b1de19e8 previous fixed one HP laptop and broke an other HP laptop.
The one which got fixed RuntimeCount is 1. The one which broke RuntimeCount is 0.
So only decrement RuntimeCount when RuntimeCount is non-zero.
2010-11-18 18:16:15 +00:00
cegger b768b4ed61 fix AcpiEnableGpe:
GPEs get enabled at ACPI initialization. AcpiInstallGpeHandler() disables
GPEs using AcpiEvDisableGpe() w/o decrementing RuntimeCount.
So when acpiec(4) enables the GPE after installing the GPE Handler then
AcpiEnableGpe() does not call AcpiEvEnableGpe() because RuntimeCount
says it is already enabled which is wrong.
So decrement the RuntimeCount in AcpiInstallGpeHandler() right
before calling AcpiEvDisableGpe().
2010-11-18 14:40:31 +00:00
mrg 1109ac3635 use a sysctllog structure, and sysctl_teardown(), to destroy the drm data.
this should actually now fix PR#40029.
2010-11-10 05:22:55 +00:00
mrg a3ccd86a62 call the sysctl destroy functions upon failure and unload, which
should fix PR#40029.  while there, fix the radeon unload, which
was improperly matching mutex init/destroy operations and leading
to trying to destroy lock that was never initialised.
2010-11-06 22:06:10 +00:00
jruoho 38451663e8 There is nothing particularly interesting for users in:
acpicpu0 at acpi0 (CPU0)
ACPI: Dynamic OEM Table Load:
Table [SSDT](id 00EB) - 13 Objects with 0 Devices 1 Methods 0 Regions
ACPI: Dynamic OEM Table Load:
: ACPI CPU

Thus, use ACPI_DEBUG_PRINT() instead of ACPI_INFO() when a table is loaded
dynamically.
2010-08-25 04:58:59 +00:00
jmcneill 3df8768a1c Get viadrm working again 2010-08-21 11:54:36 +00:00
hannken 1664eae7f3 Using vfinddev() leads to vnode races as it returns an unreferenced
vnode that may disappear before the caller has a chance to reference it.

Reference the vnode while the specfs cache is locked.

Welcome to 5.99.37.

No objections on tech-kern.
2010-07-21 09:06:37 +00:00
mrg 857eb74b8b also make radeondrm depend upon firmload, not just r128drm.
should fix kern/43646 from kre.
2010-07-21 03:14:32 +00:00
mrg 7d9a68ec2a radeondrm depends upon firmload now; noted by rjs. 2010-07-06 16:33:31 +00:00
mrg 9dd0ef545a kill these old built-in firmware headers; we use the ones installed into
the filesystem from src/sys/microcode/radeon now.
2010-07-06 04:15:44 +00:00
mrg ad13e17661 move all the radeondrm firmware images into the filesystem. check that
some firmware sizes are the expected size.  (XXX make all.)

based upon similar changes seen in the linux radeon drm driver.

this saves about 250KB in the kernel or module.
2010-07-05 20:32:23 +00:00
rmind 3c507045e2 Remove pfind() and pgfind(), fix locking in various broken uses of these.
Rename real routines to proc_find() and pgrp_find(), remove PFIND_* flags
and have consistent behaviour.  Provide proc_find_raw() for special cases.
Fix memory leak in sysctl_proc_corename().

COMPAT_LINUX: rework ptrace() locking, minimise differences between
different versions per-arch.

Note: while this change adds some formal cosmetics for COMPAT_DARWIN and
COMPAT_IRIX - locking there is utterly broken (for ages).

Fixes PR/43176.
2010-07-01 02:38:26 +00:00
jruoho 398e767108 Silence debug messages related to the AML Debug() opcode. To enable it, only
set the AcpiGbl_EnableAmlDebugObject global. Previously this was enabled
also when ACPI_LV_DEBUG_OBJECT was set for AcpiDbgLevel, but this was too
noisy, even for ACPI_DEBUG kernels, when the AML makes heavy use of Debug().
2010-06-30 06:43:37 +00:00
mrg ca255ec20b add minimal support for radeon 5xxx. there's not enough for it to be
useful yet, but that's not a big deal since the latest xf86-video-ati
doesn't support DRM on these yet.

new microcode images obtained from:
	http://people.freedesktop.org/~agd5f/radeon_ucode/

XXX: need to fix max_hw_contexts handling at the very least.

XXX: should convert radeondrm to use firmload(9)
2010-06-26 23:05:13 +00:00
mrg b274f3a3b2 add the latest generation of radeon cards. 2010-06-26 23:00:19 +00:00
mrg dd166cb036 add CHIP_CEDAR, CHIP_REDWOOD, CHIP_JUNIPER, CHIP_CYPRESS and CHIP_HEMLOCK. 2010-06-26 22:59:31 +00:00
jruoho d0cb358383 Fix a build failure.
Apparently upstream does not bother to test-build their own releases.
2010-06-06 19:42:16 +00:00
jruoho 1b0493cb92 Add new files from ACPICA 20100528. 2010-06-06 18:34:45 +00:00
jruoho 82d8b2ce07 ACPICA does not understand the const type qualifier. 2010-06-06 18:33:14 +00:00
jruoho 55ce606f5a Merge ACPICA 20100528 2010-06-06 18:28:35 +00:00
jruoho ebc86364fb Import ACPICA 20100528. 2010-06-06 18:16:40 +00:00
mrg 280989eb06 use round_page() for PAGE_ALIGN(). from Onno van der Linden
<o.vd.linden@quicknet.nl> in PR#38700, though apparently i didn't
commit it way back when i closed that bug.  oops?
2010-05-24 08:51:53 +00:00
mrg bcf0a7d7e9 add r600_blit.c and radeon_cs.c. 2010-05-24 01:57:06 +00:00
mrg 4351b00b10 implement DRM_RADEON_CS ioctl, necessary for r600_dri to function.
this is mostly from freebsd (though it also exists in other versions
of the drm code) svn commits:

--
SVN rev 196470 on 2009-08-23 14:55:57Z by rnoland

Add kernel support for Radeon R6/7xx 3D.

You will still need Mesa from git and possibly an updated DDX driver,
but this is working fairly well now.
--
SVN rev 196142 on 2009-08-12 12:57:02Z by rnoland

Add support for radeon RS880 IGP chips to drm.
--
SVN rev 195501 on 2009-07-09 16:39:28Z by rnoland

Add support for Radeon HD 4770 (RV740) chips.
--
SVN rev 196471 on 2009-08-23 15:02:58Z by rnoland

Add GET_PARAM support for Z pipes.

This is needed for occulsion queries on rv530 chips.
--
SVN rev 198695 on 2009-10-30 18:07:22Z by rnoland

A bit of cleanup work on radeon_freelist_get()

  * Fix the main loop to search all buffers before sleeping.
  * Remove dead code
--
SVN rev 197606 on 2009-09-28 22:41:28Z by rnoland

Fix offset handling
--
SVN rev 197605 on 2009-09-28 22:40:29Z by rnoland

radeon_family is an enum, so ordering can be important.

sync up with what amd is shipping.
--
SVN rev 197603 on 2009-09-28 22:37:07Z by rnoland

R600 doesn't support IRQs yet, so don't try to use them.
--

special thanks to robert noland @ freebsd for making this an
easy port!
2010-05-24 01:39:06 +00:00
mrg c049f1739e only use bus_space*() on drm_local_map_t's that have been mapped into
some bus space somewhere.  otherwise, just use normal accesses since
it is normal memory.

this fixes radeondrm on x86 since bus_space_tag_t became a pointer.

add the "GEM" and "TTM" mapping types to sysctl support (though right
now we will never have them in our list of maps.)
2010-05-19 22:14:20 +00:00
jruoho 8ad5a4d7de Update the event counters to 64-bit integers. 2010-04-12 12:04:54 +00:00
jruoho 5c7c72ca7e Add new files from ACPICA 20100121. 2010-04-08 04:37:14 +00:00
jruoho 1fc8cacd7d __UNCONST(3). 2010-04-08 04:34:22 +00:00
jruoho bc17fdc088 Merge ACPICA 20100121 2010-04-08 04:31:48 +00:00
jruoho 3ed53cd7df Import ACPICA 20100121.
Selected changes between 20090730 and 20100121:

  * A "post-order callback" was added to AcpiWalkNamespace().

  * The ACPI_INTEGER type was removed and replaced with UINT64. Support for
    this type remains (for the time being) for compatibility reasons.

  * AcpiGetDevices() was optimized to not run extra _STA methods.

  * Fixed possible mutex acquisition errors when running _REG methods.

  * iASL was fixed not to fault when the maximum number of errors is
    reached.

  * Various miscellaneous fixes and improvements, including, for example,
    improved object repair capabilities, memory leak fixes, better type
    conversions, module-level code execution, etc.
2010-04-08 04:27:32 +00:00
mrg c8c2757eb3 don't pass "maxaddr" as a boundary in bus_dmamap_create() like rev 1.8
did for _alloc().
2010-03-20 02:53:35 +00:00
mrg b68c326c4a make suspend/resume actually work:
- we have to DRM_LOCK()/DRM_UNLOCK(), thus s/rad_dev/dev/ in a variable name
- only call into radeon_cp_{stop,resume}() if the device is active

with this my nforce4 dual core amd system is able to suspend/resume with both
X and drm active.
2010-03-03 03:48:39 +00:00
jruoho cd85adf1c0 In preparation for partial modularization of the acpi(4) subtree.
* * *

XXX:	The internal memory tracking of ACPICA, available when
	ACPI_DBG_TRACK_ALLOCATIONS is defined, has been removed
	from ACPI_DEBUG.

	This is due to the instability of the ABI of ACPICA.

	If the memory tracking is enabled, ACPICA will insert a header
	to each memory allocation. As a consequence, when ACPI specific
	code is loaded as a kernel module and the running kernel has
	been compiled with ACPI_DEBUG, the result is an instant panic.
	This happens because of unaligned memory access when the code
	tries to use ACPI_FREE for a buffer obtained via ACPI_ALLOCATE,
	AcpiEvaluateObject(), and related calls.

	If the involved memory statistics are required, a separate constant
	ACPI_DEBUG_ALLOC is available in options(4) for ACPI_DEBUG kernels.

* * *

Discussed with, and ok'ed by, jmcneill@ and pooka@.
2010-02-28 12:57:11 +00:00
dyoung c1b390d493 A pointer typedef entails trading too much flexibility to declare const
and non-const types, and the kernel uses both const and non-const
PMF qualifiers and device suspensors, so change the pmf_qual_t and
device_suspensor_t typedefs from "pointers to const" to non-pointer,
non-const types.
2010-02-24 22:37:54 +00:00
jmorse f3d653714c PR/42262: Support drm drivers (intel G33/G45) submapping pci resources 2010-01-26 08:01:26 +00:00
dyoung 3022acc4eb Expand PMF_FN_* macros. 2010-01-08 19:42:11 +00:00
kefren df341ead56 add suspend/resume hooks for command processor 2009-12-14 21:01:07 +00:00
kefren 498a190b81 add stub pmf hook 2009-12-12 14:15:25 +00:00
dyoung b9e4d3a3cb Delete the do-nothing device-activation hook, drm_activate(). 2009-12-06 22:51:25 +00:00
cegger 370d100bc1 make iasl build again.
patch from tnn@
2009-11-23 17:16:50 +00:00
cegger 9d14eb5043 Update ACPI_SRAT_CPU_AFFINITY to match ACPI specification 4.0.
XXX I don't know if this already happened upstream but it will sooner or later
if not.
2009-11-23 10:50:38 +00:00
jmcneill 00081f593e deregister with pmf on detach 2009-09-27 12:59:38 +00:00
jmcneill ae0ded3a5f register with pmf 2009-09-27 12:58:51 +00:00
jmcneill ef43763f40 Port viadrm to NetBSD and fix a bunch of compile issues:
viadrm0 at vga1: VIA P4M900 / VN896
 viadrm0: AGP at 0xf0000000 128MB
 viadrm0: Initialized via 2.11.1 20070202

xf86-video-openchrome seems happy with it, although 3d acceleration isn't
supported on the P4M900 so I can't test that part.
2009-09-27 12:39:04 +00:00
mrg f4964bc1fa make sure to call pci_intr_*stablish() with the right first argument;
it worked by C-luck on x86, but macppc picked it up.
2009-09-27 03:48:07 +00:00
drochner 1e4e3d1be4 fix some confusion between highest DMA address and the boundary not to
be crossed in a transfer,
back out previous fixes which only added to the confusion
2009-09-12 17:16:41 +00:00
christos 5a2044242f PR/42041: Jasper Wallace: Stopgap fix for kernel assert
("(boundary & (boundary - 1)) == 0") triggers with i915drm in recent -5 kernel

Read the comment in the code for a detailed explanation. This should be fixed
properly in the i386 bus code, but it is too intrusive to do for -5.
XXX: pullup for 5.x
2009-09-10 18:11:21 +00:00
mrg 6769a80c80 - normalize netbsd drm_mtrr_del() with freebsd, removing a few #if's
- make the mtrr code do nothing on non-x86
2009-09-02 01:36:41 +00:00
mrg 2d22194137 remove a memset() that isn't necessary. 2009-09-02 01:34:34 +00:00
mrg 783fe8b458 introduce an ugly but simple hack to work around external software
requirements: set the drm pci "domain" to the pci bus unit number.
this matches what libpciaccess does for netbsd and now drm is much
happier again.
2009-08-26 01:37:10 +00:00
jmcneill cf036af25e Hide the message about an RSDP not being found unless we are debugging. 2009-08-23 14:54:52 +00:00
mrg 60e6e5077b on netbsd with the single final close() action, make sure we clean up
all the files attached to dev->files.  we check for one per "open_count"
that is above 1.  could perhaps assert() that we are empty afterwards.

this fixes restarting X + drm after actually using drm.
2009-08-23 08:55:16 +00:00
jmcneill 932fb37c13 Use ACPI_DEBUG_PRINT instead of ACPI_INFO for AcpiNsExecModuleCodeList
debug message.
2009-08-18 18:34:39 +00:00
jmcneill f9cf269b36 Print table header information with ACPI_DEBUG_PRINT instead of ACPI_INFO. 2009-08-18 18:28:36 +00:00
jmcneill d24e908507 Build fixes for NetBSD. 2009-08-18 17:13:09 +00:00
jmcneill 6d58ca2204 Build fix for amd64. 2009-08-18 17:09:25 +00:00
jmcneill 1448e5faf7 config glue for acpica 2009-08-18 16:38:51 +00:00
jmcneill 2e3763cf26 Build fixes for NetBSD. 2009-08-18 16:26:10 +00:00
jmcneill 70fe0f31af initial import of acpica-20090730 2009-08-18 16:23:28 +00:00
mrg 71b88e73aa - stash the fbmap into the radeon dev_priv handle so we can ..
- call drm_rmmap() in radeon_do_cleanup_cp on the two maps created
- in several vblank functions, check to make sure we have mappings
  enabled before doing something that might blow up.  fixes PR#41715.
2009-08-08 17:59:25 +00:00
mrg 992e698d04 remove some netbsd specific code that does nothing. 2009-08-07 22:51:04 +00:00
sborrill acb87f0c16 NetBSD doesn't support alq(9) and hence ATHHAL_DEBUG_ALQ is unusable.
Nevertheless, remove reference to old binary HAL header file in the
ATHHAL_DEBUG_ALQ section.
2009-08-07 21:01:48 +00:00
mrg 4c99008150 don't include pcidevs_data.h. 2009-06-24 19:47:15 +00:00
mrg c33a588610 convert a DRM_ERROR() to DRM_DEBUG(). its failure is not fatal
and it tends to trigger on almost all cards.
2009-06-24 08:09:26 +00:00
mrg 8ee58c85df add a commented out section for nouveau driver.
(it's very far from being compileable.)
2009-06-23 04:42:58 +00:00
mrg eae636e445 add a bunch of fixes mostly from rafal@.
this fixes the build for all the other drm modules.

use pci_find_device() to kill the one XXX rafal left.
2009-06-23 04:42:01 +00:00
mrg c7c2933c33 make external drm the default. 2009-06-21 20:15:26 +00:00
mrg 44d76def57 some minor clean up:
- reduce diffs to mesa-drm where possible
- fix various formatting issues
- netbsd uses major 180 for drm (XXX)

no functional changes intended.
2009-06-20 01:07:09 +00:00
mrg 6fa8682e45 add a freshly generated drm_pciids.h 2009-06-19 03:52:20 +00:00
mrg 50fcbdf26f merge the changes from drm 85b9f737db0d2a845e4d7e2bbf9ad12ff9e2227c
with our changes and the work recently done by Arto Huusko
<arto.huusko@pp2.inet.fi> and FUKAUMI Naoki <fun@naobsd.org>.

it includes all the changes arto provided from both mesa-drm and
the r6xx-r7xx-support branch.  it does not yet include code to
handle the (deleted) drm_pciids.h file, but i'll probably just
check in a generated one for now.

i have not yet merged the changes from outside this dir.


from arto's messages to tech-x11:

The important change that was needed is that drm_scatter.c was
fixed to return pointer to all allocated pages, not just the
beginning of the allocated segments.

Other changes:

  - drm_scatter maps COHERENT memory
  - drm_drawable: drawable handle allocation is done
    inside lock
  - drm_memory: when mapping "agp" memory, store offset
    of mapped area, so that new requests to same offset
    return the same area instead of trying to remap
    and fail
  - drm_vm: use bus_space_mmap for frame buffer and registers

  - r600_cp.c: ioremapfree allocated gart range
  - radeon_cp.c: use mtsleep
  - some memset calls I had added had their args swapped,
    and no memory was cleared
2009-06-19 03:50:03 +00:00
mrg 57cc1d9fad import the missing file from mesa-drm at git change
85b9f737db0d2a845e4d7e2bbf9ad12ff9e2227c.
2009-06-19 03:38:39 +00:00
mrg d7792ba7fe import mesa-drm git from version 85b9f737db0d2a845e4d7e2bbf9ad12ff9e2227c. 2009-06-19 03:22:23 +00:00
reinoud 8aafc997af Fix prototypes to match the functions. The prototypes had `int' specified for
parameters or result where they should have been the corresponding enums.

gcc won't bitch on them but conceptually they are different and could be
stored in a different width. Compiling with pcc brought this to light.
2009-05-14 09:07:49 +00:00
joerg a0fa8c3062 softc split as needed by the rest of the drm code. Add basic
suspend/resume hooks.
2009-05-09 01:29:01 +00:00
mrg 64b0361105 apply from sys/dev:
revision 1.17
date: 2009/03/29 19:50:17;  author: mrg;  state: Exp;  lines: +7 -7
drm_addmap():
- for _DRM_CONSISTENT mappings, keep the handle.
- use DRM_HANDLE_NEEDS_MASK()

drm_mapbufs():
- use DRM_HANDLE_NEEDS_MASK()

drm_mmap():
- use DRM_HANDLE_NEEDS_MASK()
- for _DRM_SCATTER_GATHER and _DRM_SHM, use vtophys() on the
  adjusted offset. XXX

this is gets radeon working on amd64 with an older PCI 9250 card.

XXX: need to excise vtophys() usage.
XXX: need to finish porting these fixes to external.


yay!  this takes care of one of the XXX's.  still not quite working.
2009-03-30 01:51:40 +00:00
mrg f70233658c XXX: drm_close_pid() went away, and the hack i tried to avoid it
XXX: ended up looping forever.  replace it with a hack that doesn't
XXX: hang the system.
2009-03-30 01:48:31 +00:00
mrg d28a4dfebd - set dev->device to the device_t
- fix a DEBUG message
- apply from sys/dev:
revision 1.20
date: 2009/01/18 10:04:35;  author: mrg;  state: Exp;  lines: +6 -2
Don't attempt to unload a DRM device that's in use.  (Note:
Unloading doesn't work right in any case -- it doesn't clean up the
sysctl tree, among other things.  This code needs Work, but at least
this prevents it crashing randomly due to autounload while X is
running.)  Also, fix the dependency list for radeondrm.

contributed anonymously.
2009-03-30 01:47:36 +00:00
mrg 881136fdf4 apply from sys/dev:
revision 1.11
date: 2009/03/29 19:50:17;  author: mrg;  state: Exp;  lines: +9 -6
drm_addmap():
- for _DRM_CONSISTENT mappings, keep the handle.
- use DRM_HANDLE_NEEDS_MASK()

drm_mapbufs():
- use DRM_HANDLE_NEEDS_MASK()

drm_mmap():
- use DRM_HANDLE_NEEDS_MASK()
- for _DRM_SCATTER_GATHER and _DRM_SHM, use vtophys() on the
  adjusted offset. XXX

this is gets radeon working on amd64 with an older PCI 9250 card.

XXX: need to excise vtophys() usage.
XXX: need to finish porting these fixes to external.



however, this doesn't get radeon working on amd64 here :(
2009-03-30 01:45:41 +00:00
mrg 65df1447f7 - apply from sys/dev:
revision 1.14
date: 2009/03/29 19:39:10;  author: mrg;  state: Exp;  lines: +4 -3
include the size in a falled allocation message.

- use BUS_DMA_ALLOCNOW in bus_dmamap_create() call

- remove a redundant check for NULL
2009-03-30 01:44:41 +00:00
mrg db9cd6b98c - apply from sys/dev:
revision 1.33
date: 2009/03/29 17:00:50;  author: mrg;  state: Exp;  lines: +12 -4
add a comment explaining DRM_NETBSD_ADDR2HANDLE/DRM_NETBSD_HANDLE2ADDR:

 * This hack strips the top bit from amd64 addresses, which avoid
 * udv_attach() returning NULL for "negative" offset.
 * A better hack would be to encode the offset of some kernel data
 * structure..

add a new DRM_HANDLE_NEEDS_MASK macro to check whether the above need to
be applied for various mapping types (_DRM_SHM and _DRM_SCATTER_GATHER.)


also:
- use IPL_VM for now
- use a lot of bus_space
- struct drm_device now has a pointer to the device_t
2009-03-30 01:42:20 +00:00
mrg 4d27c3c2b1 apply from sys/dev:
revision 1.12
date: 2009/03/29 19:37:25;  author: mrg;  state: Exp;  lines: +9 -3
XXX:  for now, add the DRM_NETBSD_HANDLE2ADDR() hack in a few places.
update a debug message.
2009-03-30 01:38:21 +00:00
mrg 3d4337fb88 fix a device_t-ification. 2009-03-29 23:46:34 +00:00
martin bce5c2205a Now that we compile the Atheros HAL from source we pass all the right
flags to the compiler so it obeys the same ABI as the rest of the kernel.
Remove the hacks used to work around the abi differences (using %s7 as
curlwp) intruduced for the binary hal.
2009-03-24 21:36:46 +00:00
mrg 7c9a97ab4a initialise some variables whined about by gcc -O3. 2009-01-06 06:03:57 +00:00