summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Boor <florian.boor@kernelconcepts.de>2007-06-12 14:45:27 +0000
committerFlorian Boor <florian.boor@kernelconcepts.de>2007-06-12 14:45:27 +0000
commitb1f4d34f8541f039d72d423223c91e32540a2fc5 (patch)
treec50f34a595a58cb31a25d96727c3e2c9c27c0a91 /packages
parent10013e9ed4e79a2f6ca0ceb6451787aaa47c46e5 (diff)
parentb655c71aac44af6eab2a52774ea810a945592cee (diff)
merge of '30c320b2f51c86226580e5bbf68fa8b0896a0655'
and '8dfee9b2427785432e4161eb7cc749155230e08e'
Diffstat (limited to 'packages')
-rw-r--r--packages/abiword/abiword.inc5
-rw-r--r--packages/alsa/alsa-state.bb13
-rw-r--r--packages/alsa/alsa-utils_1.0.13.bb9
-rw-r--r--packages/altboot/README.txt3
-rw-r--r--packages/altboot/altboot.inc19
-rw-r--r--packages/altboot/altboot_1.0.5.bb154
-rw-r--r--packages/altboot/altboot_1.0.8+1.0.9_pre1.bb76
-rw-r--r--packages/altboot/altboot_1.0.8.bb47
-rw-r--r--packages/altboot/altboot_1.1.1+wip-20061123.bb99
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR59.bb (renamed from packages/altboot/altboot_1.1.1+wip-SVNR48.bb)54
-rw-r--r--packages/altboot/altboot_svn.bb50
-rw-r--r--packages/angstrom/angstrom-console-image.bb4
-rw-r--r--packages/angstrom/angstrom-e-image.bb2
-rw-r--r--packages/angstrom/angstrom-x11-image.bb5
-rw-r--r--packages/anthy/anthy-native_7811.bb7
-rw-r--r--packages/apex/apex_1.2.19.bb28
-rw-r--r--packages/apex/apex_1.4.11.bb58
-rw-r--r--packages/apex/apex_1.5.6.bb (renamed from packages/apex/apex_1.4.7.bb)22
-rw-r--r--packages/apex/nslu2/defconfig28
-rw-r--r--packages/apmd/apmd-3.2.2/unlinux.patch12
-rw-r--r--packages/apmd/apmd_3.2.2.bb1
-rw-r--r--packages/arm-kernel-shim/arm-kernel-shim_1.3.bb77
-rw-r--r--packages/arm-kernel-shim/arm-kernel-shim_1.5.bb (renamed from packages/arm-kernel-shim/arm-kernel-shim_1.4.bb)14
-rw-r--r--packages/arm-kernel-shim/files/cmdline_if_none.patch45
-rw-r--r--packages/arm-kernel-shim/files/config-dsmg600.h6
-rw-r--r--packages/arm-kernel-shim/files/config-fsg3.h2
-rw-r--r--packages/arm-kernel-shim/files/config-nas100d.h4
-rw-r--r--packages/arm-kernel-shim/files/config-nslu2.h4
-rw-r--r--packages/arm-kernel-shim/files/passthrough-atags.patch20
-rw-r--r--packages/base-files/base-files_3.0.14.bb8
-rw-r--r--packages/billiardz/files/.mtn2git_empty (renamed from packages/clamav/clamav-0.88.7/.mtn2git_empty)0
-rw-r--r--packages/billiardz/files/gcc4.patch45
-rw-r--r--packages/binutils/binutils-2.17/avr32-config.sub.patch11
-rw-r--r--packages/binutils/binutils_2.17.bb5
-rw-r--r--packages/bluez/bluez-libs_3.11.bb1
-rw-r--r--packages/bluez/bluez-utils_3.11.bb (renamed from packages/bluez/bluez-utils_3.10.1.bb)2
-rw-r--r--packages/boost-asio/boost-asio_0.3.7.bb1
-rw-r--r--packages/busybox/busybox-static-1.2.1/.mtn2git_empty (renamed from packages/clamav/clamav-0.90.2/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-static_1.2.1.bb6
-rw-r--r--packages/busybox/slingbox-1.3.1/fdisk-readhex.patch20
-rw-r--r--packages/busybox/slingbox_1.3.1.bb7
-rw-r--r--packages/c3110x/cx3110x_1.1.bb48
-rw-r--r--packages/c3110x/files/.mtn2git_empty (renamed from packages/elfutils/elfutils-0.108/.mtn2git_empty)0
-rw-r--r--packages/c3110x/files/umac_binary.patch69
-rw-r--r--packages/cairo/cairo_1.4.8.bb6
-rw-r--r--packages/clamav/clamav-0.88.7/clamd.conf25
-rw-r--r--packages/clamav/clamav-0.88.7/cross-compile-fix.patch74
-rw-r--r--packages/clamav/clamav-0.88.7/freshclam.conf19
-rw-r--r--packages/clamav/clamav-0.88.7/libtool-fix.patch23
-rw-r--r--packages/clamav/clamav.inc8
-rw-r--r--packages/clamav/clamav_0.88.7.bb5
-rw-r--r--packages/clamav/clamav_0.90.2.bb16
-rw-r--r--packages/clamav/clamav_0.90.3.bb3
-rw-r--r--packages/clamav/files/clamd.conf (renamed from packages/clamav/clamav-0.90.2/clamd.conf)0
-rw-r--r--packages/clamav/files/cross-compile-fix.patch (renamed from packages/clamav/clamav-0.90.2/cross-compile-fix.patch)0
-rw-r--r--packages/clamav/files/freshclam.conf (renamed from packages/clamav/clamav-0.90.2/freshclam.conf)0
-rw-r--r--packages/classpath/classpath-gtk_0.90.bb16
-rw-r--r--packages/classpath/classpath-gtk_0.93.bb18
-rw-r--r--packages/classpath/classpath-gtk_cvs.bb46
-rw-r--r--packages/classpath/classpath-minimal-native_0.93.bb20
-rw-r--r--packages/classpath/classpath.inc21
-rw-r--r--packages/classpath/classpath_0.14.bb26
-rw-r--r--packages/classpath/classpath_0.15.bb26
-rw-r--r--packages/classpath/classpath_0.17.bb26
-rw-r--r--packages/classpath/classpath_0.18.bb25
-rw-r--r--packages/classpath/classpath_0.19.bb25
-rw-r--r--packages/classpath/classpath_0.20.bb25
-rw-r--r--packages/classpath/files/disable-automake-checks-v2.patch11
-rw-r--r--packages/classpath/files/gconf_version.patch11
-rw-r--r--packages/clish/clish_0.7.1.bb6
-rw-r--r--packages/curl/curl_7.15.1.bb8
-rw-r--r--packages/debianutils/debianutils_2.19.bb5
-rw-r--r--packages/display-brightness/display-brightness.sh2
-rw-r--r--packages/display-brightness/display-brightness_1.0.0.bb2
-rw-r--r--packages/e17/e-wm_0.16.999.038.bb (renamed from packages/e17/e-wm_0.16.999.037.bb)2
-rw-r--r--packages/e17/entrance-0.9.0.009/.mtn2git_empty (renamed from packages/gcc/gcc-4.2-20060513/.mtn2git_empty)0
-rw-r--r--packages/e17/entrance-0.9.0.009/Xserver.patch22
-rw-r--r--packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch19
-rw-r--r--packages/e17/entrance-0.9.0.009/config-db.patch119
-rw-r--r--packages/e17/entrance-0.9.0.009/disable-autodetect.patch8
-rw-r--r--packages/e17/entrance-0.9.0.009/fix-auth-mode.patch13
-rw-r--r--packages/e17/entrance-0.9.0.009/run-Xinit.patch17
-rw-r--r--packages/e17/entrance-0.9.0.009/set-display-env.patch11
-rw-r--r--packages/e17/entrance-0.9.0.009/use-bash.patch57
-rw-r--r--packages/e17/entrance_0.9.0.009.bb40
-rw-r--r--packages/efl/ecore-fb_0.9.9.038.bb (renamed from packages/efl/ecore-fb_0.9.9.037.bb)0
-rw-r--r--packages/efl/ecore-native_0.9.9.038.bb (renamed from packages/efl/ecore-native_0.9.9.037.bb)0
-rw-r--r--packages/efl/ecore-x11_0.9.9.038.bb (renamed from packages/efl/ecore-x11_0.9.9.037.bb)0
-rw-r--r--packages/efl/ecore.inc11
-rw-r--r--packages/efl/ecore/configure-abstract-sockets.patch26
-rw-r--r--packages/efl/edje-native_0.5.0.038.bb (renamed from packages/efl/edje-native_0.5.0.037.bb)0
-rw-r--r--packages/efl/edje-utils_0.5.0.038.bb (renamed from packages/efl/edje-utils_0.5.0.037.bb)0
-rw-r--r--packages/efl/edje_0.5.0.038.bb (renamed from packages/efl/edje_0.5.0.037.bb)0
-rw-r--r--packages/efl/eet-native_0.9.10.038.bb (renamed from packages/efl/eet-native_0.9.10.037.bb)0
-rw-r--r--packages/efl/eet_0.9.10.038.bb (renamed from packages/efl/eet_0.9.10.037.bb)0
-rw-r--r--packages/efl/efreet-native_0.0.3.002.bb3
-rw-r--r--packages/efl/efreet_0.0.3.002.bb8
-rw-r--r--packages/efl/embryo-native_0.9.1.038.bb (renamed from packages/efl/embryo-native_0.9.1.037.bb)0
-rw-r--r--packages/efl/embryo-utils_0.9.1.038.bb (renamed from packages/efl/embryo-utils_0.9.1.037.bb)0
-rw-r--r--packages/efl/embryo_0.9.1.038.bb (renamed from packages/efl/embryo_0.9.1.037.bb)0
-rw-r--r--packages/efl/epeg_0.9.0.008.bb (renamed from packages/efl/epeg_0.9.0.007.bb)0
-rw-r--r--packages/efl/epsilon_0.3.0.008.bb (renamed from packages/efl/epsilon_0.3.0.007.bb)2
-rw-r--r--packages/efl/esmart-fb_0.9.0.008.bb (renamed from packages/efl/esmart-fb_0.9.0.007.bb)0
-rw-r--r--packages/efl/esmart-x11_0.9.0.008.bb (renamed from packages/efl/esmart-x11_0.9.0.007.bb)0
-rw-r--r--packages/efl/evas-fb_0.9.9.038.bb (renamed from packages/efl/evas-fb_0.9.9.037.bb)0
-rw-r--r--packages/efl/evas-native_0.9.9.038.bb (renamed from packages/efl/evas-native_0.9.9.037.bb)0
-rw-r--r--packages/efl/evas-x11_0.9.9.038.bb (renamed from packages/efl/evas-x11_0.9.9.037.bb)0
-rw-r--r--packages/efl/evas.inc2
-rw-r--r--packages/efl/ewl_0.5.1.008.bb (renamed from packages/efl/ewl_0.0.4.007.bb)0
-rw-r--r--packages/efl/imlib2-fb_1.3.0.001.bb (renamed from packages/efl/imlib2-fb_1.2.2.001.bb)0
-rw-r--r--packages/efl/imlib2-native_1.3.0.001.bb (renamed from packages/efl/imlib2-native_1.2.2.001.bb)0
-rw-r--r--packages/efl/imlib2-x11_1.3.0.001.bb (renamed from packages/efl/imlib2-x11_1.2.2.001.bb)0
-rw-r--r--packages/elfutils/elfutils-0.127/.mtn2git_empty (renamed from packages/gspcav1/gspcav1-20070110/.mtn2git_empty)0
-rw-r--r--packages/elfutils/elfutils-0.127/warnings.patch (renamed from packages/elfutils/elfutils-0.108/warnings.patch)46
-rw-r--r--packages/elfutils/elfutils_0.108.bb36
-rw-r--r--packages/elfutils/elfutils_0.127.bb15
-rw-r--r--packages/evince/evince/no-help-dir.patch12
-rw-r--r--packages/evince/evince_0.9.0.bb5
-rw-r--r--packages/fbreader/fbreader_0.8.2a.bb8
-rwxr-xr-xpackages/ftpd-topfield/ftpd-topfield_0.7.4.bb (renamed from packages/ftpd-topfield/ftpd-topfield_0.7.3.bb)4
-rw-r--r--packages/gaim/pidgin.inc19
-rw-r--r--packages/gaim/pidgin_2.0.1.bb (renamed from packages/gaim/pidgin_2.0.0.bb)2
-rw-r--r--packages/gcc/gcc-4.0.2/gcc-4.0.2-atmel.0.99.2.patch21330
-rw-r--r--packages/gcc/gcc-4.1.2/cache-amnesia.patch13
-rw-r--r--packages/gcc/gcc-4.2-20060513/armeb-fix.patch62
-rw-r--r--packages/gcc/gcc-4.2.0/.mtn2git_empty (renamed from packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty)0
-rw-r--r--packages/gcc/gcc-4.2.0/100-uclibc-conf.patch200
-rw-r--r--packages/gcc/gcc-4.2.0/110-arm-eabi.patch27
-rw-r--r--packages/gcc/gcc-4.2.0/200-uclibc-locale.patch2790
-rw-r--r--packages/gcc/gcc-4.2.0/300-libstdc++-pic.patch46
-rw-r--r--packages/gcc/gcc-4.2.0/301-missing-execinfo_h.patch11
-rw-r--r--packages/gcc/gcc-4.2.0/302-c99-snprintf.patch11
-rw-r--r--packages/gcc/gcc-4.2.0/303-c99-complex-ugly-hack.patch12
-rw-r--r--packages/gcc/gcc-4.2.0/304-index_macro.patch24
-rw-r--r--packages/gcc/gcc-4.2.0/602-sdk-libstdc++-includes.patch20
-rw-r--r--packages/gcc/gcc-4.2.0/740-sh-pr24836.patch25
-rw-r--r--packages/gcc/gcc-4.2.0/800-arm-bigendian.patch67
-rw-r--r--packages/gcc/gcc-4.2.0/801-arm-bigendian-eabi.patch14
-rw-r--r--packages/gcc/gcc-4.2.0/README4
-rw-r--r--packages/gcc/gcc-4.2.0/arm-nolibfloat.patch (renamed from packages/gcc/gcc-4.2-20060513/arm-nolibfloat.patch)0
-rw-r--r--packages/gcc/gcc-4.2.0/arm-softfloat.patch (renamed from packages/gcc/gcc-4.2-20060513/arm-softfloat.patch)0
-rw-r--r--packages/gcc/gcc-4.2.0/arm-thumb-cache.patch29
-rw-r--r--packages/gcc/gcc-4.2.0/arm-thumb.patch64
-rw-r--r--packages/gcc/gcc-4.2.0/cache-amnesia.patch13
-rw-r--r--packages/gcc/gcc-4.2.0/fix-ICE-in-arm_unwind_emit_set.diff18
-rw-r--r--packages/gcc/gcc-4.2.0/gcc41-configure.in.patch22
-rw-r--r--packages/gcc/gcc-4.2.0/ldflags.patch (renamed from packages/gcc/gcc-4.2-20060513/ldflags.patch)0
-rw-r--r--packages/gcc/gcc-4.2.0/sdk-libstdc++-includes.patch22
-rw-r--r--packages/gcc/gcc-4.2.0/sh3-installfix-fixheaders.patch11
-rw-r--r--packages/gcc/gcc-4.2.0/unbreak-armv4t.patch12
-rw-r--r--packages/gcc/gcc-4.2.0/zecke-no-host-includes.patch (renamed from packages/gcc/gcc-4.2-20060513/zecke-no-host-includes.patch)0
-rw-r--r--packages/gcc/gcc-4.2.0/zecke-xgcc-cpp.patch (renamed from packages/gcc/gcc-4.2-20060513/zecke-xgcc-cpp.patch)10
-rw-r--r--packages/gcc/gcc-cross-initial_4.1.2.bb30
-rw-r--r--packages/gcc/gcc-cross-sdk_4.2.0.bb40
-rw-r--r--packages/gcc/gcc-cross_4.0.2.bb2
-rw-r--r--packages/gcc/gcc-cross_4.2.0.bb (renamed from packages/gcc/gcc-cross_4.2-20060513.bb)4
-rw-r--r--packages/gcc/gcc_4.0.2.bb6
-rw-r--r--packages/gcc/gcc_4.1.2.bb2
-rw-r--r--packages/gcc/gcc_4.2-20060513.bb27
-rw-r--r--packages/gcc/gcc_4.2.0.bb52
-rw-r--r--packages/gdb/gdb_6.6.bb5
-rw-r--r--packages/gizmod/gizmod_2.3.bb1
-rw-r--r--packages/glibc/glibc-initial_2.6.bb46
-rw-r--r--packages/glibc/glibc-intermediate_2.6.bb18
-rw-r--r--packages/glibc/glibc-package.bbclass14
-rw-r--r--packages/glibc/glibc_2.2.5.bb2
-rw-r--r--packages/glibc/glibc_2.6.bb204
-rw-r--r--packages/glibmm/glibmm_2.8.4.bb4
-rw-r--r--packages/gnome/gnome-desktop/no-desktop-docs.patch10
-rw-r--r--packages/gnome/gnome-desktop_2.16.1.bb6
-rw-r--r--packages/gnu-config/gnu-config/avr32.patch20
-rw-r--r--packages/gnu-config/gnu-config_20050701.bb3
-rw-r--r--packages/gnuchess/.mtn2git_empty (renamed from packages/ipsec-tools/ipsec-tools-0.6.6/.mtn2git_empty)0
-rw-r--r--packages/gnuchess/gnuchess_5.05.bb10
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.55.bb4
-rw-r--r--packages/gpe-calendar/gpe-calendar_0.90.bb18
-rw-r--r--packages/gpe-contacts/gpe-contacts_0.47.bb13
-rw-r--r--packages/gpe-login/files/brightness-adjust-keyluanchrc.patch10
-rw-r--r--packages/gpe-login/gpe-login-0.90/.mtn2git_empty (renamed from packages/kismet/kismet-2006-04-R1/.mtn2git_empty)0
-rw-r--r--packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch12
-rw-r--r--packages/gpe-login/gpe-login_0.88.bb9
-rw-r--r--packages/gpe-login/gpe-login_0.90.bb23
-rw-r--r--packages/gpe-timesheet/gpe-timesheet.inc10
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.30.bb8
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.31.bb8
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.32.bb3
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_svn.bb9
-rw-r--r--packages/gpe-what/gpe-what.inc8
-rw-r--r--packages/gpe-what/gpe-what_0.30.bb7
-rw-r--r--packages/gpe-what/gpe-what_0.31.bb5
-rw-r--r--packages/gpe-what/gpe-what_0.33.bb5
-rw-r--r--packages/gpe-what/gpe-what_0.41.bb9
-rw-r--r--packages/gpe-what/gpe-what_0.42.bb9
-rw-r--r--packages/gpe-what/gpe-what_0.43.bb8
-rw-r--r--packages/gpe-what/gpe-what_svn.bb7
-rw-r--r--packages/gpephone/connect_0.1.bb4
-rw-r--r--packages/gpephone/gpe-session-scripts-phone_0.67.bb2
-rw-r--r--packages/gpesyncd/gpe-synctool_0.2.bb8
-rw-r--r--packages/gpesyncd/gpe-synctool_svn.bb4
-rwxr-xr-xpackages/gpsd/files/gpsd2
-rw-r--r--packages/gpsd/gpsd.inc4
-rw-r--r--packages/gpsd/gpsd_2.28.bb2
-rw-r--r--packages/gpsd/gpsd_2.32.bb2
-rw-r--r--packages/gpsd/gpsd_2.33.bb2
-rw-r--r--packages/gpsd/gpsd_2.34.bb2
-rw-r--r--packages/gsm/files/alive-start-if-interpreter-ready.patch39
-rw-r--r--packages/gsm/files/extreplychars.patch70
-rw-r--r--packages/gsm/files/getopt-wait-interpreter-ready.patch57
-rw-r--r--packages/gsm/files/plugin.patch935
-rw-r--r--packages/gsm/files/qualcomm-extreply.patch13
-rw-r--r--packages/gsm/files/tihtc-csq-fix.patch27
-rw-r--r--packages/gsm/libgsmd_svn.bb13
-rw-r--r--packages/gsoap/gsoap_2.7.7.bb1
-rw-r--r--packages/gspcav1/files/.mtn2git_empty (renamed from packages/libmpeg2/.mtn2git_empty)0
-rw-r--r--packages/gspcav1/files/MS.patch (renamed from packages/gspcav1/gspcav1-20070110/MS.patch)0
-rw-r--r--packages/gspcav1/files/Makefile.patch (renamed from packages/gspcav1/gspcav1-20070110/Makefile.patch)0
-rw-r--r--packages/gspcav1/gspcav1_20070110.bb4
-rw-r--r--packages/gspcav1/gspcav1_20070508.bb29
-rw-r--r--packages/gtk+/composite-pixbuf_0.0.bb18
-rw-r--r--packages/gtk+/gtk-2.10.inc8
-rw-r--r--packages/gtk-engines/gtk-engines_2.2.0.bb17
-rw-r--r--packages/gtk-engines/gtk-engines_2.6.1.bb29
-rw-r--r--packages/gtk-engines/gtk-engines_2.6.3.bb29
-rw-r--r--packages/gtk-engines/gtk-engines_2.6.5.bb11
-rw-r--r--packages/gtk-engines/gtk-smooth-engine_0.5.8.bb21
-rw-r--r--packages/gtkhtml/gtkhtml-2.0_2.6.3.bb13
-rw-r--r--packages/gtkhtml/gtkhtml-3.0_3.0.10.bb10
-rw-r--r--packages/gtkhtml/gtkhtml-3.1_3.1.16.bb10
-rw-r--r--packages/gtkhtml/gtkhtml-3.6_3.6.2.bb10
-rw-r--r--packages/gtkhtml/gtkhtml-3.8_3.8.2.bb10
-rw-r--r--packages/gtkhtml/gtkhtml-lite-3.0_3.0.10.bb10
-rw-r--r--packages/gtkhtml/gtkhtml.inc10
-rw-r--r--packages/gtkmm/gtkmm.inc2
-rw-r--r--packages/hal/hal.inc10
-rw-r--r--packages/hal/hal_0.2.98.bb11
-rw-r--r--packages/hal/hal_0.5.2.bb11
-rw-r--r--packages/hal/hal_0.5.4.bb11
-rw-r--r--packages/hal/hal_0.5.7.bb12
-rw-r--r--packages/hal/hal_0.5.8.1.bb12
-rw-r--r--packages/hal/hal_0.5.9.bb12
-rw-r--r--packages/helloworld/helloworld_1.0.0.bb26
-rw-r--r--packages/iana-etc/.mtn2git_empty (renamed from packages/libmpeg2/libmpeg2-0.4.0b/.mtn2git_empty)0
-rw-r--r--packages/iana-etc/iana-etc_2.20.bb15
-rw-r--r--packages/icu/icu_3.6.bb9
-rw-r--r--packages/images/angstrom-minimal-image.bb6
-rw-r--r--packages/images/hentges-console-image.bb37
-rw-r--r--packages/images/hentges-x11-image.bb47
-rw-r--r--packages/images/initramfs-image.bb15
-rw-r--r--packages/initrdscripts/.mtn2git_empty (renamed from packages/linux/linux-dht-walnut-2.6.12.6/.mtn2git_empty)0
-rw-r--r--packages/initrdscripts/files/.mtn2git_empty (renamed from packages/linux/linux-dht-walnut-2.6.12/.mtn2git_empty)0
-rw-r--r--packages/initrdscripts/files/nfsboot.sh10
-rw-r--r--packages/initrdscripts/initramfs-nfsboot_0.1.bb8
-rwxr-xr-xpackages/initscripts/initscripts-1.0/mountall.sh12
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/intltool/intltool-native_0.30.bb2
-rw-r--r--packages/intltool/intltool-native_0.31.bb2
-rw-r--r--packages/intltool/intltool-native_0.34.bb2
-rw-r--r--packages/intltool/intltool-native_0.35.0.bb4
-rw-r--r--packages/intltool/intltool.inc13
-rw-r--r--packages/intltool/intltool_0.30.bb13
-rw-r--r--packages/intltool/intltool_0.31.bb13
-rw-r--r--packages/intltool/intltool_0.34.bb13
-rw-r--r--packages/intltool/intltool_0.35.0.bb14
-rw-r--r--packages/intltool/intltool_0.35.2.bb14
-rw-r--r--packages/iperf/iperf_2.0.2.bb1
-rw-r--r--packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb5
-rw-r--r--packages/ipkg-utils/ipkg-utils/index_speedup.patch53
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch97
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch (renamed from packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch)0
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch309
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-utils-fix.patch (renamed from packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch)17
-rw-r--r--packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb13
-rw-r--r--packages/ipsec-tools/files/cross.patch75
-rw-r--r--packages/ipsec-tools/files/gcc-4.2.patch47
-rw-r--r--packages/ipsec-tools/files/racoon-search-missing.patch (renamed from packages/ipsec-tools/ipsec-tools-0.6.6/racoon-search-missing.patch)0
-rw-r--r--packages/ipsec-tools/ipsec-tools.inc65
-rw-r--r--packages/ipsec-tools/ipsec-tools_0.4+0.5-rc1.bb6
-rw-r--r--packages/ipsec-tools/ipsec-tools_0.4+0.5-rc2.bb6
-rw-r--r--packages/ipsec-tools/ipsec-tools_0.6.6.bb48
-rw-r--r--packages/ipsec-tools/ipsec-tools_0.6.7.bb3
-rw-r--r--packages/kazehakase/kazehakase_0.4.7.bb11
-rw-r--r--packages/keylaunch/files/akita/keylaunchrc22
-rw-r--r--packages/keylaunch/files/makefile-fix.patch14
-rw-r--r--packages/keylaunch/files/spitz/keylaunchrc26
-rw-r--r--packages/keylaunch/keylaunch_2.0.10.bb13
-rw-r--r--packages/kismet/kismet-2006-04-R1/no-chmod.patch173
-rw-r--r--packages/kismet/kismet_2005-04-R1.bb30
-rw-r--r--packages/kismet/kismet_2005-08-R1.bb30
-rw-r--r--packages/kismet/kismet_2006-04-R1.bb28
-rw-r--r--packages/kismet/kismet_2007-01-R1b.bb2
-rw-r--r--packages/konqueror/konqueror-embedded-20070212/.mtn2git_empty (renamed from packages/pointercal/files/h2200/.mtn2git_empty)0
-rw-r--r--packages/konqueror/konqueror-embedded-20070212/konqe-kapplication.patch12
-rw-r--r--packages/konqueror/konqueror-embedded-20070212/konqe_new_opie.patch756
-rw-r--r--packages/konqueror/konqueror-embedded-20070212/konqueror.desktop6
-rw-r--r--packages/konqueror/konqueror-embedded-20070212/konqueror.pngbin0 -> 2996 bytes
-rw-r--r--packages/konqueror/konqueror-embedded_20070212.bb94
-rw-r--r--packages/lftp/lftp_3.5.1.bb4
-rw-r--r--packages/liba52/liba52_0.7.4.bb13
-rw-r--r--packages/libcap/libcap-1.10/syscall.patch20
-rw-r--r--packages/libcap/libcap_1.10.bb4
-rw-r--r--packages/libeventdb/libeventdb_0.90.bb14
-rw-r--r--packages/libeventdb/libeventdb_svn.bb2
-rw-r--r--packages/libfakekey/libfakekey_svn.bb4
-rw-r--r--packages/libgpepimc/libgpepimc_0.9.bb1
-rw-r--r--packages/libgpevtype/libgpevtype_0.50.bb17
-rw-r--r--packages/libgpevtype/libgpevtype_svn.bb2
-rw-r--r--packages/libhandoff/libhandoff_0.1.bb13
-rw-r--r--packages/libhangul/.mtn2git_empty (renamed from packages/pointercal/files/hx4700/.mtn2git_empty)0
-rw-r--r--packages/libhangul/libhangul_0.0.4.bb14
-rw-r--r--packages/libiconv/libiconv_1.11.bb (renamed from packages/libiconv/libiconv_1.9.2.bb)9
-rw-r--r--packages/libmpeg2/libmpeg2-0.4.0b/Makefile.patch12
-rw-r--r--packages/libmpeg2/libmpeg2_0.4.0b.bb35
-rw-r--r--packages/librcf/librcf_0.4.bb1
-rw-r--r--packages/libschedule/libschedule_0.17.bb14
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch22
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/no-PAGE_SIZE.patch11
-rw-r--r--packages/libsdl/libsdl-qpe_1.2.9.bb4
-rw-r--r--packages/libsdl/libsdl-x11_1.2.9.bb6
-rw-r--r--packages/libsoundgen/libsoundgen_0.5.bb13
-rw-r--r--packages/libtododb/libtododb_0.11.bb18
-rw-r--r--packages/libtool/libtool-1.5.10/never-ever-do-rpath.patch32
-rw-r--r--packages/libtool/libtool-cross_1.5.10.bb3
-rw-r--r--packages/lighttpd/lighttpd/configure.in.patch4
-rw-r--r--packages/lighttpd/lighttpd_1.4.13.bb2
-rw-r--r--packages/lighttpd/lighttpd_1.4.15.bb40
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.20.bb4
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.21.1.bb2
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12.6/dht-walnut_defconfig2024
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12.6/iw_we18-5.diff462
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12.6/linux-2.6.12-mppe-mppc-1.3.patch1559
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12.6/ppc_40x_uboot.patch693
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12/dht-walnut_defconfig1963
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12/iw_we18-5.diff462
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12/linux-2.6.12-mppe-mppc-1.3.patch1559
-rw-r--r--packages/linux/linux-dht-walnut-2.6.12/ppc_40x_uboot.patch693
-rw-r--r--packages/linux/linux-dht-walnut_2.6.12.6.bb74
-rw-r--r--packages/linux/linux-dht-walnut_2.6.12.bb92
-rw-r--r--packages/linux/linux-dht-walnut_2.6.20.bb25
-rw-r--r--packages/linux/linux-efika/defconfig1530
-rw-r--r--packages/linux/linux-efika_2.6.21+git.bb3
-rw-r--r--packages/linux/linux-epia-2.6.19.2/epia_defconfig109
-rw-r--r--packages/linux/linux-h6300-omap1_2.6.12-rc5.bb2
-rw-r--r--packages/linux/linux-h6300-omap1_2.6.14.3.bb2
-rw-r--r--packages/linux/linux-h6300-omap1_2.6.16.16.bb2
-rw-r--r--packages/linux/linux-handhelds-2.6/h2200/.mtn2git_empty (renamed from packages/pointercal/files/magician/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-handhelds-2.6/h2200/defconfig1437
-rw-r--r--packages/linux/linux-handhelds-2.6/h3600/.mtn2git_empty (renamed from packages/pptp-linux/pptp-linux/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-handhelds-2.6/h3600/defconfig1267
-rw-r--r--packages/linux/linux-handhelds-2.6/h3800/.mtn2git_empty (renamed from packages/vera-fonts/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-handhelds-2.6/h3800/defconfig1268
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/defconfig103
-rw-r--r--packages/linux/linux-handhelds-2.6/h4000/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/defconfig119
-rw-r--r--packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/htcblueangel/defconfig1462
-rw-r--r--packages/linux/linux-handhelds-2.6/htcuniversal/defconfig50
-rw-r--r--packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/htcwallaby/defconfig1269
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig50
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/defconfig388
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh5.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.21-hh2.bb)0
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh6.bb11
-rw-r--r--packages/linux/linux-magicbox_2.6.19.2.bb23
-rw-r--r--packages/linux/linux-mtx-1_2.4.27.bb1
-rw-r--r--packages/linux/linux-mtx-1u_2.4.27.bb2
-rw-r--r--packages/linux/linux-mtx-2_2.4.27.bb1
-rw-r--r--packages/linux/linux-mtx-3_2.6.15.4.bb1
-rw-r--r--packages/linux/linux-mtx-3_2.6.15.bb2
-rw-r--r--packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi102
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-collie4
-rw-r--r--packages/linux/linux-rp_2.6.20.bb8
-rw-r--r--packages/linux/linux-sequoia-2.6.21/.mtn2git_empty0
-rw-r--r--packages/linux/linux-sequoia_2.6.21.bb60
-rw-r--r--packages/linux/linux-tornado-omap2_2.6.16.16.bb2
-rw-r--r--packages/linux/linux-x86-2.6.20/i486-defconfig (renamed from packages/linux/linux-x86-2.6.20/defconfig)2
-rw-r--r--packages/linux/linux-x86-2.6.20/i586-defconfig2705
-rw-r--r--packages/linux/linux-x86-2.6.20/i686-defconfig2705
-rw-r--r--packages/linux/linux-x86_2.6.20.bb26
-rw-r--r--packages/linux/linux/at32stk1000/.mtn2git_empty0
-rw-r--r--packages/linux/linux/at32stk1000/defconfig849
-rw-r--r--packages/linux/linux/kb9202/.mtn2git_empty0
-rw-r--r--packages/linux/linux/kb9202/defconfig780
-rw-r--r--packages/linux/linux_2.6.21.bb23
-rw-r--r--packages/linux/unslung-kernel/defconfig10
-rw-r--r--packages/linux/unslung-kernel_2.4.22.l2.3r63.bb2
-rw-r--r--packages/linux/xanadux-ba-2.6_2.6.12.bb1
-rw-r--r--packages/linux/xanadux-un-2.6_2.6.12.bb2
-rw-r--r--packages/lirc/lirc-modules_0.8.1+cvs20070307.bb3
-rw-r--r--packages/lirc/lirc_0.8.1+cvs20070307.bb3
-rw-r--r--packages/llvm/llvm-native_2.0.bb12
-rw-r--r--packages/lua/lua.inc14
-rw-r--r--packages/lua/lua_5.0.2.bb2
-rw-r--r--packages/m4/m4_1.4.8.bb2
-rw-r--r--packages/mISDN/.mtn2git_empty0
-rw-r--r--packages/mISDN/files/.mtn2git_empty0
-rw-r--r--packages/mISDN/files/Makefile4
-rw-r--r--packages/mISDN/files/hfcs_usb_endianchecks.diff58
-rw-r--r--packages/mISDN/misdn_cvs.bb35
-rw-r--r--packages/madwifi/madwifi-ng_r.inc3
-rw-r--r--packages/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch91
-rw-r--r--packages/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch94
-rw-r--r--packages/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch65
-rw-r--r--packages/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch197
-rw-r--r--packages/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch111
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard_svn.bb10
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb9
-rw-r--r--packages/mdk/mdk2_v33.bb1
-rw-r--r--packages/mediatomb/mediatomb_0.9.1.bb30
-rw-r--r--packages/mesa/mesa-6.5.2/fix-host-compile.patch30
-rw-r--r--packages/mesa/mesa-mesa.inc2
-rw-r--r--packages/mesa/mesa_6.5.2.bb7
-rw-r--r--packages/meta/meta-toolchain.bb24
-rw-r--r--packages/meta/oplinux-packages.bb646
-rw-r--r--packages/mpeg2dec/mpeg2dec_0.4.0b.bb16
-rw-r--r--packages/mplayer/mplayer_0.0+1.0rc1.bb17
-rw-r--r--packages/nabi/.mtn2git_empty0
-rw-r--r--packages/nabi/nabi_0.17.bb9
-rw-r--r--packages/netbase/netbase/interfaces34
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/mkfs.ext313
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb7
-rw-r--r--packages/ntp/ntp-ssl_4.1.2.bb2
-rw-r--r--packages/ntp/ntp.inc32
-rw-r--r--packages/ntp/ntp_4.1.2.bb19
-rw-r--r--packages/ntp/ntp_4.2.0.bb26
-rw-r--r--packages/ntp/ntp_4.2.2p3.bb26
-rw-r--r--packages/nunome/files/timer.patch21
-rw-r--r--packages/nunome/nunome_1.0.2.bb4
-rw-r--r--packages/nylon/simple-firewall.bb1
-rw-r--r--packages/openmoko-base/files/session12
-rw-r--r--packages/openmoko-base/openmoko-session_svn.bb4
-rw-r--r--packages/opensp/opensp-1.5/fix-docdir.patch11
-rw-r--r--packages/opensp/opensp-1.5/rangmap-fix.patch12
-rw-r--r--packages/opensp/opensp-native_1.5.bb4
-rw-r--r--packages/opensp/opensp_1.5.bb27
-rw-r--r--packages/openssl/openssl.inc2
-rwxr-xr-xpackages/opie-init/opie-init/opie15
-rw-r--r--packages/opie-init/opie-init_1.2.2.bb2
-rw-r--r--packages/opie-multikey/files/ru.keymap255
-rw-r--r--packages/opie-multikey/opie-multikey.inc1
-rw-r--r--packages/opie-reader/files/.mtn2git_empty0
-rw-r--r--packages/opie-reader/files/opie-reader-unicode-copy.patch11
-rw-r--r--packages/opie-reader/files/qt4.patch2572
-rw-r--r--packages/opie-reader/opie-reader_cvs.bb4
-rw-r--r--packages/opie-reader/uqtreader_cvs.bb72
-rw-r--r--packages/opie-tinykate/opie-tinykate.inc4
-rw-r--r--packages/opie-tinykate/opie-tinykate_1.2.2.bb2
-rw-r--r--packages/ossie/ossie-c-wavloader_svn.bb16
-rw-r--r--packages/ossie/ossie-channeldemo_svn.bb20
-rw-r--r--packages/ossie/ossie-demo_svn.bb20
-rw-r--r--packages/ossie/ossie-gpp-device_svn.bb20
-rw-r--r--packages/ossie/ossie-interpolator_svn.bb20
-rw-r--r--packages/ossie/ossie-modulator_svn.bb20
-rw-r--r--packages/ossie/ossie-nodebooter_svn.bb15
-rw-r--r--packages/ossie/ossie-randombits_svn.bb19
-rw-r--r--packages/ossie/ossie-rxdemo_svn.bb20
-rw-r--r--packages/ossie/ossie-sigproc_svn.bb23
-rw-r--r--packages/ossie/ossie-soundout-device_svn.bb22
-rw-r--r--packages/ossie/ossie-standardinterfaces_svn.bb23
-rw-r--r--packages/ossie/ossie-tx-random-data_svn.bb20
-rw-r--r--packages/ossie/ossie-usrp-device_svn.bb20
-rw-r--r--packages/ossie/ossie-usrp-tx-control_svn.bb20
-rw-r--r--packages/ossie/ossiecf_svn.bb24
-rw-r--r--packages/patcher/patcher-native_20040913.bb1
-rw-r--r--packages/patcher/patcher_20040913.bb1
-rw-r--r--packages/pcmcia-cs/pcmcia-cs_3.2.8.bb3
-rw-r--r--packages/pcmciautils/pcmciautils-014/makefile_fix.patch73
-rw-r--r--packages/perl/libalgorithm-diff-perl_1.1902.bb2
-rw-r--r--packages/perl/libarchive-tar-perl_1.30.bb2
-rw-r--r--packages/perl/libcache-cache-perl_1.05.bb2
-rw-r--r--packages/perl/libclass-container-perl_0.12.bb2
-rw-r--r--packages/perl/libclass-data-inheritable-perl_0.06.bb2
-rw-r--r--packages/perl/libcompress-zlib-perl_1.42.bb2
-rw-r--r--packages/perl/libdata-optlist-perl_0.101.bb2
-rw-r--r--packages/perl/libdevel-stacktrace-perl_1.13.bb2
-rw-r--r--packages/perl/libdigest-sha1-perl_2.11.bb2
-rw-r--r--packages/perl/liberror-perl_0.17004.bb2
-rw-r--r--packages/perl/libexception-class-perl_1.23.bb2
-rw-r--r--packages/perl/libextutils-cbuilder-perl_0.18.bb2
-rw-r--r--packages/perl/libextutils-depends-perl-native_0.205.bb5
-rw-r--r--packages/perl/libextutils-depends-perl_0.205.bb10
-rw-r--r--packages/perl/libextutils-parsexs-perl_2.16.bb2
-rw-r--r--packages/perl/libextutils-pkgconfig-perl-native_1.07.bb5
-rw-r--r--packages/perl/libextutils-pkgconfig-perl_1.07.bb10
-rw-r--r--packages/perl/libhtml-mason-perl_1.35.bb35
-rw-r--r--packages/perl/libintl-perl_1.16.bb2
-rw-r--r--packages/perl/libio-zlib-perl_1.04.bb2
-rw-r--r--packages/perl/libipc-sharelite-perl_0.09.bb2
-rw-r--r--packages/perl/liblocale-gettext-perl_1.05.bb2
-rw-r--r--packages/perl/liblog-dispatch-perl_2.13.bb2
-rw-r--r--packages/perl/liblog-log4perl-perl_1.06.bb2
-rw-r--r--packages/perl/libmail-sendmail-perl_0.79.bb2
-rw-r--r--packages/perl/libmath-bigint-gmp-perl_1.18.bb2
-rw-r--r--packages/perl/libmodule-build-perl_0.2805.bb2
-rw-r--r--packages/perl/libnet-ip-perl_1.25.bb2
-rw-r--r--packages/perl/libnetserver-generic-perl_1.03.bb2
-rw-r--r--packages/perl/libparams-util-perl_0.20.bb2
-rw-r--r--packages/perl/libparams-validate-perl_0.86.bb2
-rw-r--r--packages/perl/libperl6-junction-perl_1.10.bb2
-rw-r--r--packages/perl/libsub-exporter-perl_0.970.bb2
-rw-r--r--packages/perl/libsub-install-perl_0.922.bb2
-rw-r--r--packages/perl/libsub-uplevel-perl_0.13.bb2
-rw-r--r--packages/perl/libtest-builder-tester-perl_1.01.bb2
-rw-r--r--packages/perl/libtest-differences-perl_0.47.bb2
-rw-r--r--packages/perl/libtest-exception-perl_0.22.bb2
-rw-r--r--packages/perl/libtest-mockmodule-perl_0.05.bb2
-rw-r--r--packages/perl/libtest-output-perl_0.10.bb2
-rw-r--r--packages/perl/libtext-diff-perl_0.35.bb2
-rw-r--r--packages/perl/liburi-perl_1.35.bb1
-rw-r--r--packages/perl/libversion-perl_0.6701.bb2
-rw-r--r--packages/perl/libxml-parser-perl-native_2.34.bb3
-rw-r--r--packages/perl/libxml-parser-perl_2.34.bb2
-rw-r--r--packages/perl/libyaml-perl_0.62.bb2
-rw-r--r--packages/perl/perl-5.8.8/generate-sh.patch40
-rw-r--r--packages/perl/perl-5.8.8/native-makedepend-dash.patch13
-rw-r--r--packages/perl/perl-5.8.8/native-perlinc.patch16
-rw-r--r--packages/perl/perl-5.8.8/native-ssp.patch14
-rw-r--r--packages/perl/perl-native_5.8.8.bb23
-rw-r--r--packages/perl/perl_5.8.8.bb30
-rw-r--r--packages/pointercal/files/h2200/pointercal1
-rw-r--r--packages/pointercal/files/hx4700/pointercal1
-rw-r--r--packages/pointercal/files/magician/pointercal1
-rw-r--r--packages/pointercal/pointercal_0.0.bb2
-rw-r--r--packages/powertop/powertop_1.5.bb (renamed from packages/powertop/powertop_1.2.bb)8
-rw-r--r--packages/pptp-linux/pptp-linux-1.5.0/.mtn2git_empty0
-rw-r--r--packages/pptp-linux/pptp-linux-1.5.0/makefile.patch (renamed from packages/pptp-linux/pptp-linux/makefile.patch)0
-rw-r--r--packages/pptp-linux/pptp-linux-1.5.0/options.pptp (renamed from packages/pptp-linux/pptp-linux/options.pptp)0
-rw-r--r--packages/pptp-linux/pptp-linux-1.7.1/.mtn2git_empty0
-rw-r--r--packages/pptp-linux/pptp-linux-1.7.1/options.pptp30
-rw-r--r--packages/pptp-linux/pptp-linux_1.7.1.bb25
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/wireless.patch12
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb5
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3.bb2
-rw-r--r--packages/pulseaudio/libatomics-ops_1.2.bb11
-rw-r--r--packages/pulseaudio/pulse.inc108
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.5.bb96
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.6.bb3
-rw-r--r--packages/python/fix-path.inc22
-rw-r--r--packages/python/python-gst_0.10.7.bb5
-rw-r--r--packages/python/python-pygtk2_2.10.3.bb4
-rw-r--r--packages/python/python-pyqt4_4.2.bb (renamed from packages/python/python-pyqt4_4.0.bb)0
-rw-r--r--packages/python/python-pysqlite2_2.2.2.bb13
-rw-r--r--packages/qmake/qmake2-native-2.01a/0001-fix-mkspecs.patch123
-rw-r--r--packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf91
-rw-r--r--packages/qmake/qmake2-native_2.01a.bb18
-rw-r--r--packages/qpegps/qpegps.inc35
-rw-r--r--packages/qpegps/qpegps_0.9.2.3.3.bb34
-rw-r--r--packages/qpegps/qpegps_0.9.3.bb36
-rw-r--r--packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb (renamed from packages/vera-fonts/qpf-bitstream-vera-sans-mono_1.10.bb)0
-rw-r--r--packages/qpf-fonts/qpf-bitstream-vera_1.10.bb (renamed from packages/vera-fonts/qpf-bitstream-vera_1.10.bb)0
-rw-r--r--packages/qsvn/files/.mtn2git_empty0
-rw-r--r--packages/qsvn/files/build.patch23
-rw-r--r--packages/qsvn/qsvn_0.3.0.bb3
-rw-r--r--packages/qt/qt-x11-free-common.inc3
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/.mtn2git_empty0
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0001-cross-compile.patch174
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0002-fix-resinit-declaration.patch25
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0003-no-tools.patch25
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0004-no-qmake.patch25
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0005-fix-mkspecs.patch123
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0006-freetype-host-includes.patch23
-rw-r--r--packages/qt/qt4-x11-free-4.3.0/0007-openssl-host-includes.patch23
-rw-r--r--packages/qt/qt4-x11-free_4.1.2.bb13
-rw-r--r--packages/qt/qt4-x11-free_4.3.0.bb183
-rw-r--r--packages/qt/qt4_arch.inc13
-rw-r--r--packages/quake/quetoo_0.6.1.bb26
-rw-r--r--packages/rfakeap/rfakeap_0.2.bb1
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch66
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.default22
-rwxr-xr-xpackages/rp-pppoe/rp-pppoe-3.8/pppoe-server.init59
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/top-autoconf.patch25
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/update-config.patch30
-rw-r--r--packages/rp-pppoe/rp-pppoe_3.8.bb48
-rw-r--r--packages/rt2x00/rt2570-k2wrlz_1.6.0.bb17
-rw-r--r--packages/rt2x00/rt73-k2wrlz_1.0.0.bb19
-rw-r--r--packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb1
-rw-r--r--packages/s3c2410-utils/sjf2410-linux-native_20060807.bb1
-rw-r--r--packages/salsa-lib/.mtn2git_empty0
-rw-r--r--packages/salsa-lib/salsa-lib_0.0.1.bb12
-rw-r--r--packages/scummvm/scummvm-qpe_0.6.1b.bb5
-rw-r--r--packages/scummvm/scummvm.inc2
-rw-r--r--packages/scummvm/scummvm_0.6.0.bb2
-rw-r--r--packages/scummvm/scummvm_0.6.1b.bb2
-rw-r--r--packages/scummvm/scummvm_0.9.0.bb2
-rw-r--r--packages/scummvm/scummvm_0.9.1.bb16
-rw-r--r--packages/sdlperl/sdl-perl_1.20.3.bb40
-rw-r--r--packages/slugos-init/files/turnup132
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb2
-rw-r--r--packages/sqlite/sqlite3-3.3.17/.mtn2git_empty0
-rw-r--r--packages/sqlite/sqlite3-3.3.17/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3.inc5
-rw-r--r--packages/sqlite/sqlite3_3.3.12.bb3
-rw-r--r--packages/sqlite/sqlite3_3.3.13.bb3
-rw-r--r--packages/sqlite/sqlite3_3.3.17.bb3
-rw-r--r--packages/starling/starling_0.2.bb20
-rw-r--r--packages/subversion/subversion_1.4.3.bb6
-rw-r--r--packages/sysconf/files/sysconfsetup6
-rw-r--r--packages/tasks/task-base.bb75
-rw-r--r--packages/tasks/task-boot.bb53
-rw-r--r--packages/tasks/task-hentges-base.bb28
-rw-r--r--packages/tasks/task-hentges-x11.bb29
-rw-r--r--packages/tasks/task-ossie.bb15
-rw-r--r--packages/telepathy/empathy-0.5/.mtn2git_empty0
-rw-r--r--packages/telepathy/empathy-0.5/no-gnome.diff146
-rw-r--r--packages/telepathy/empathy_0.4.bb18
-rw-r--r--packages/telepathy/empathy_0.5.bb18
-rw-r--r--packages/telepathy/telepathy-mission-control_4.22.bb42
-rw-r--r--packages/tree/.mtn2git_empty0
-rw-r--r--packages/tree/tree_1.5.1.bb11
-rw-r--r--packages/ttf-fonts/ttf-bitstream-vera_1.10.bb (renamed from packages/vera-fonts/ttf-bitstream-vera_1.10.bb)0
-rw-r--r--packages/ttyrec/ttyrec_1.0.8.bb1
-rw-r--r--packages/twisted/twisted-2.5.0/.mtn2git_empty0
-rw-r--r--packages/twisted/twisted-2.5.0/remove-zope-check.patch18
-rw-r--r--packages/twisted/twisted_1.2.0.bb11
-rw-r--r--packages/twisted/twisted_2.5.0.bb180
-rw-r--r--packages/uboot/u-boot.inc4
-rw-r--r--packages/uboot/u-boot_git.bb4
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uClibc.config177
-rw-r--r--packages/uclibc/uclibc-0.9.29/bfin/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine58
-rw-r--r--packages/uclibc/uclibc-0.9.29/collie/uClibc.machine2
-rw-r--r--packages/uclibc/uclibc-0.9.29/h3600/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/h3600/uClibc.machine70
-rw-r--r--packages/uclibc/uclibc-0.9.29/h3800/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/h3800/uClibc.machine70
-rw-r--r--packages/uclibc/uclibc-0.9.29/simpad/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/simpad/uClibc.machine70
-rw-r--r--packages/uclibc/uclibc-0.9.29/uClibc.distro (renamed from packages/uclibc/uclibc-0.9.29/angstrom/uClibc.distro)0
-rw-r--r--packages/uclibc/uclibc-initial_0.9.29.bb32
-rw-r--r--packages/uclibc/uclibc_0.9.28.bb29
-rw-r--r--packages/uclibc/uclibc_0.9.29.bb2
-rw-r--r--packages/udev/udev_092.bb4
-rw-r--r--packages/uicmoc/uicmoc4-native_4.3.0.bb41
-rw-r--r--packages/usb-gadget-mode/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/akita/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/akita/usb-gadget.conf3
-rw-r--r--packages/usb-gadget-mode/files/c7x0/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/c7x0/usb-gadget.conf3
-rw-r--r--packages/usb-gadget-mode/files/collie/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/collie/usb-gadget.conf3
-rw-r--r--packages/usb-gadget-mode/files/spitz/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/tosa/.mtn2git_empty0
-rw-r--r--packages/usb-gadget-mode/files/tosa/usb-gadget.conf3
-rwxr-xr-xpackages/usb-gadget-mode/files/usb-gadget59
-rw-r--r--packages/usb-gadget-mode/files/usb-gadget.conf3
-rwxr-xr-xpackages/usb-gadget-mode/files/usb-gadget.init16
-rw-r--r--packages/usb-gadget-mode/usb-gadget-mode.bb50
-rw-r--r--packages/vsftpd/vsftpd-2.0.5/syscall.patch12
-rw-r--r--packages/vsftpd/vsftpd_2.0.5.bb6
-rw-r--r--packages/watchdog/watchdog_5.3.1.bb9
-rw-r--r--packages/webcam-server/webcam-server_0.50.bb1
-rw-r--r--packages/webkit/.mtn2git_empty0
-rw-r--r--packages/webkit/webkit/.mtn2git_empty0
-rw-r--r--packages/webkit/webkit/Makefile22
-rw-r--r--packages/webkit/webkit/Makefile.shared20
-rw-r--r--packages/webkit/webkit/WebKit.pri55
-rw-r--r--packages/webkit/webkit/WebKit.pro12
-rw-r--r--packages/webkit/webkit_svn.bb54
-rw-r--r--packages/wget/wget-1.9.1/ipv6-fix.patch31
-rw-r--r--packages/wget/wget_1.9.1.bb5
-rw-r--r--packages/wireless-tools/wireless-tools.inc36
-rw-r--r--packages/wireless-tools/wireless-tools_26.bb34
-rw-r--r--packages/wireless-tools/wireless-tools_27.bb43
-rw-r--r--packages/wireless-tools/wireless-tools_28+29pre10.bb14
-rw-r--r--packages/wireless-tools/wireless-tools_28+29pre21.bb14
-rw-r--r--packages/wireless-tools/wireless-tools_28-pre13.bb43
-rw-r--r--packages/wireless-tools/wireless-tools_28.bb14
-rw-r--r--packages/wireless-tools/wireless-tools_29-pre10.bb45
-rwxr-xr-xpackages/wpa-supplicant/files/functions.sh841
-rwxr-xr-xpackages/wpa-supplicant/files/ifupdown.sh132
-rw-r--r--packages/wpa-supplicant/wpa-supplicant-0.5.inc36
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.5.bb2
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.7.bb2
-rw-r--r--packages/xorg-app/xrandr/.mtn2git_empty0
-rw-r--r--packages/xorg-app/xrandr/resolve_symbol_clash.patch35
-rw-r--r--packages/xorg-app/xrandr_1.2.0.bb2
-rw-r--r--packages/xorg-lib/files/errordb-keysymdb-path-fix.patch22
-rw-r--r--packages/xorg-xserver/xorg-xserver-common.inc9
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch194
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch39
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch11
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch12
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch101
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/fix_default_mode.patch26
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch307
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch58
-rw-r--r--packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb4
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.2.0.bb5
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb17
-rw-r--r--packages/xorg-xserver/xserver-xorg_1.2.0.bb4
-rw-r--r--packages/xorg-xserver/xserver-xorg_1.3.0.0.bb10
-rw-r--r--packages/xqt2/xqt2_20060509.bb6
-rw-r--r--packages/xserver-common/files/Xserver-udev-input-helper.patch11
-rw-r--r--packages/xserver-common/files/at-fix-slcxxxx.patch8
-rw-r--r--packages/xserver-common/files/load-xmodmap-k26.patch23
-rw-r--r--packages/xserver-common/files/sl-cxx00-modmap.patch113
-rw-r--r--packages/xserver-common/files/softkeys-c7x0.patch52
-rw-r--r--packages/xserver-common/files/softkeys-slcxxxx-xmodmap.patch20
-rw-r--r--packages/xserver-common/xserver-common_1.16.bb9
-rw-r--r--packages/xserver-common/xserver-common_svn.bb9
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver2
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb2
-rw-r--r--packages/yeaphone/yeaphone_0.1.bb1
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-off10
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-on10
-rw-r--r--packages/zaurusd/files/zaurusd-mixer-callback.patch11
-rw-r--r--packages/zaurusd/zaurusd_svn.bb13
-rw-r--r--packages/zope/zope_3.3.1.bb41
711 files changed, 53940 insertions, 15173 deletions
diff --git a/packages/abiword/abiword.inc b/packages/abiword/abiword.inc
index 8569845394..58f712aca9 100644
--- a/packages/abiword/abiword.inc
+++ b/packages/abiword/abiword.inc
@@ -3,8 +3,9 @@ HOMEPAGE = "http://www.abiword.org""
SECTION = "x11/office"
LICENSE = "GPLv2"
DEPENDS = "perl-native libgsf libgnomeprint libgnomeprintui libglade libfribidi enchant jpeg libpng libxml2"
-RDEPENDS = "enchant glibc-gconv-ibm850 glibc-gconv-cp1252 \
- glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
+RDEPENDS = "enchant "
+RDEPENDS_linux += "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+ glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
PR = "r2"
SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz"
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index 1eacf4269f..e4d23285f3 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -8,31 +8,19 @@
# Date: 20070308 (YMD)
DESCRIPTION = "Default ALSA configuration"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-HOMEPAGE = "<homepage>"
LICENSE = "GPL"
-######################################################################################
-
PV = "0.0.3"
PR = "r0"
-######################################################################################
-
SRC_URI = "file://asound.state \
file://alsa-state"
-FILES_${PN} = "/etc/*"
-
-######################################################################################
-
inherit update-rc.d
INITSCRIPT_NAME = "alsa-state"
INITSCRIPT_PARAMS = "defaults 10"
-######################################################################################
-
do_install() {
install -d ${D}${sysconfdir}/init.d
@@ -40,6 +28,7 @@ do_install() {
install -m 0755 ${WORKDIR}/alsa-state ${D}${sysconfdir}/init.d
}
+FILES_${PN} = "${sysconfdir}/*"
pkg_postinst_${PN}() {
if test -x /usr/sbin/alsactl
diff --git a/packages/alsa/alsa-utils_1.0.13.bb b/packages/alsa/alsa-utils_1.0.13.bb
index 93054a3ab6..e1ae7aa399 100644
--- a/packages/alsa/alsa-utils_1.0.13.bb
+++ b/packages/alsa/alsa-utils_1.0.13.bb
@@ -3,10 +3,17 @@ HOMEPAGE = "http://www.alsa-project.org"
SECTION = "console/utils"
LICENSE = "GPL"
DEPENDS = "alsa-lib ncurses"
-PR = "r0"
+PR = "r1"
SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2"
+# lazy hack. needs proper fixing in gettext.m4, see
+# http://bugs.openembedded.org/show_bug.cgi?id=2348
+# please close bug and remove this comment when properly fixed
+#
+EXTRA_OECONF_linux-uclibc = "--disable-nls"
+EXTRA_OECONF_linux-uclibcgnueabi = "--disable-nls"
+
inherit autotools
# This are all packages that we need to make. Also, the now empty alsa-utils
diff --git a/packages/altboot/README.txt b/packages/altboot/README.txt
index ed71b03957..bba16027ff 100644
--- a/packages/altboot/README.txt
+++ b/packages/altboot/README.txt
@@ -1,5 +1,4 @@
-altboot_1.0.5.bb - Last known-working version for clamshell
- Zauruses running kernel 2.4
altboot_1.0.8.bb - Last known-working version for all Zauruses
altboot_1.1.1+wip-20061123.bb - Last known-working version for neo1973
altboot_svn.bb - Altboot developer snapshot - avoid ;)
+altboot_1.0.8+1.0.9_pre1 - Development version with new menu
diff --git a/packages/altboot/altboot.inc b/packages/altboot/altboot.inc
new file mode 100644
index 0000000000..9e0b3e3df9
--- /dev/null
+++ b/packages/altboot/altboot.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "The altboot bootmanager"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "GPL"
+RDEPENDS_${PN} = "${PN}-conf"
+RDEPENDS_${PN}-conf = "${PN}"
+RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools kexec-tools"
+RRECOMMENDS_${PN}_spitz += " kernel-module-jffs2"
+
+S = "${WORKDIR}/trunk/"
+
+PACKAGE_ARCH_${PN} = "${MACHINE}"
+PACKAGE_ARCH_${PN}-doc = "all"
+PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+
+FILES_${PN}-conf = "/etc/altboot*cfg"
+
+MACHINE_DIR = "${MACHINE}"
+MACHINE_DIR_nslu2be = "nslu2le"
diff --git a/packages/altboot/altboot_1.0.5.bb b/packages/altboot/altboot_1.0.5.bb
deleted file mode 100644
index 094a6de3ff..0000000000
--- a/packages/altboot/altboot_1.0.5.bb
+++ /dev/null
@@ -1,154 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
-
-DESCRIPTION = "The altboot bootmanager"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-PR = "r1"
-
-######################################################################################
-
-PACKAGE_ARCH = "${MACHINE}"
-
-TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
-
-SRC_URI = "svn://hentges.net/public/altboot/tags/;module=${TAG};proto=svn"
-
-S = "${WORKDIR}/${TAG}/"
-
-######################################################################################
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot-menu/Advanced
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
-
- if test -d ${S}/${MACHINE}
- then
- install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc
- else
- install -m 0644 ${S}/altboot*.cfg ${D}/etc
- fi
-
- install -m 0644 ${S}/altboot.func ${D}/etc
- install -m 0755 ${S}/init.altboot ${D}/sbin
-
- if test -d ${S}/${MACHINE}/altboot-menu/
- then
- install -m 0755 ${S}/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
- else
- install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
- fi
-
- if test -d ${S}/${MACHINE}/altboot-menu/Advanced/
- then
- install -m 0755 ${S}/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- else
- install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- fi
-
- install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
-}
-
-######################################################################################
-
-do_configure() {
- cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
- mv ${S}/init.altboot_ ${S}/init.altboot
-}
-
-######################################################################################
-
-pkg_postinst() {
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
-}
-
-pkg_postinst_spitz() {
- # Note: Spitz support is a royal pain in the ass.
- # Since Spitz pivot_roots by default, there is no real way
- # a user can install an altboot.ipk into the flash FS.
- # So we need to do that manually (*SIGH*)
-
- # the 2.6 kernel for spitz boots from HDD, no need to copy to flash
- if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
- # no need to copy to flash if we're installing to flash already
- elif mount | grep ' / ' | grep -q mtdblock; then
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
- else
- # /l/m only exists on the HDD on spitz
- if test -d /lib/modules
- then
- if [ -e /media/realroot/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/realroot"
- elif [ -e /media/ROM/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/ROM"
- fi
- if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
- ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
- if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
- mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
- cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
- cp /sbin/init.altboot $ROOT_MOUNT_POINT/sbin
- if [ -f $ROOT_MOUNT_POINT/sbin/init ]; then
- mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
- fi
- ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
- fi
- fi
- fi
- fi
-}
-
-######################################################################################
-
-pkg_postrm() {
- update-alternatives --remove init /sbin/init.altboot
-}
-
-pkg_postrm_spitz() {
- # the 2.6 kernel for spitz boots from HDD, no need to remove from flash
- if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
- update-alternatives --remove init /sbin/init.altboot
- # no need to copy to flash if we're removing from flash already
- elif mount | grep ' / ' | grep -q mtdblock; then
- update-alternatives --remove init /sbin/init.altboot
- else
- if test -d /lib/modules
- then
- if [ -e /media/realroot/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/realroot"
- elif [ -e /media/ROM/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/ROM"
- fi
- if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
- ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
- if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
- mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
- if [ -f $ROOT_MOUNT_POINT/sbin/init.orig ]; then
- rm $ROOT_MOUNT_POINT/sbin/init
- rm $ROOT_MOUNT_POINT/sbin/init.altboot
- mv $ROOT_MOUNT_POINT/sbin/init.orig $ROOT_MOUNT_POINT/sbin/init
- else
- echo "$ROOT_MOUNT_POINT/sbin/init.orig not found, not uninstalling altboot!"
- fi
- fi
- fi
- fi
- fi
-}
-
-
-
-
diff --git a/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb b/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb
new file mode 100644
index 0000000000..4611d345e2
--- /dev/null
+++ b/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb
@@ -0,0 +1,76 @@
+require altboot.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+## Laibsch: The following DEPENDS lines seem broken in light of the fact that
+## they have circular dependencies and depend on stuff that is recommended
+## elsewhere. Let's activate them only after further discussion
+#RDEPENDS_${PN} = "${PN}-conf kexec-tools ncurses"
+#RDEPENDS_${PN}_append_poodle = " kexec-tools"
+#RDEPENDS_${PN}-conf = "${PN}"
+
+PR = "r0"
+
+SVN_REV="65"
+#TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
+TAG = '1.0.x'
+SRC_URI = "svn://hentges.net/public/altboot/branches/;module=${TAG};rev=${SVN_REV};proto=svn"
+
+LDFLAGS += "-lncurses -lmenu"
+
+S = "${WORKDIR}/${TAG}/"
+
+do_configure() {
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
+}
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} ${S}curses_menu/altboot_menu.c -o altboot_menu
+}
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+ install -d ${D}/usr/share/sounds
+
+ if test -d ${S}/${MACHINE}
+ then
+ install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc
+ else
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc
+ fi
+
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
+ install -m 0755 ${S}/altboot_menu ${D}/sbin
+
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
+}
+
+pkg_postinst_${PN}() {
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+pkg_postrm_${PN}() {
+ update-alternatives --remove init /sbin/init.altboot
+}
+
+do_rm_work() {
+}
+
+PACKAGE_ARCH_${PN} = "all"
+PACKAGE_ARCH_${PN}-doc = "all"
+PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+
+FILES_${PN}-conf = "/etc/altboot*.cfg"
diff --git a/packages/altboot/altboot_1.0.8.bb b/packages/altboot/altboot_1.0.8.bb
index 16dace6a22..96758871f9 100644
--- a/packages/altboot/altboot_1.0.8.bb
+++ b/packages/altboot/altboot_1.0.8.bb
@@ -1,49 +1,11 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
-
-DESCRIPTION = "The altboot bootmanager"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-RDEPENDS_${PN}-conf = "${PN}"
-
-######################################################################################
+require altboot.inc
PR = "r2"
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "all"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-
TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
-
SRC_URI = "svn://hentges.net/public/altboot/tags/;module=${TAG};proto=svn"
-
S = "${WORKDIR}/${TAG}/"
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*.cfg"
-
-######################################################################################
-
do_install() {
install -d ${D}/sbin
install -d ${D}/etc/altboot-menu
@@ -71,22 +33,17 @@ do_install() {
install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
}
-######################################################################################
-
do_configure() {
cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
mv ${S}/init.altboot_ ${S}/init.altboot
}
-######################################################################################
-
pkg_postinst_${PN}() {
update-alternatives --install /sbin/init init /sbin/init.altboot 55
}
-######################################################################################
-
pkg_postrm_${PN}() {
update-alternatives --remove init /sbin/init.altboot
}
+PACKAGE_ARCH_${PN} = "all"
diff --git a/packages/altboot/altboot_1.1.1+wip-20061123.bb b/packages/altboot/altboot_1.1.1+wip-20061123.bb
deleted file mode 100644
index 1745273209..0000000000
--- a/packages/altboot/altboot_1.1.1+wip-20061123.bb
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
-
-DESCRIPTION = "The altboot bootmanager"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-RDEPENDS_${PN}-conf = "${PN}"
-
-######################################################################################
-
-WIP_DATE = "20061123"
-
-PV = "1.1.1+wip-${WIP_DATE}"
-PR = "r1"
-
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "all"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-
-TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-').replace('+', '-')}"
-
-SRC_URI = "svn://hentges.net/public/altboot/tags/;module=${TAG};rev=2"
-
-S = "${WORKDIR}/${TAG}/"
-
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*cfg"
-
-######################################################################################
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot-menu/Advanced
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
- install -d ${D}/usr/share/sounds
- install -d ${D}/etc/skel/altboot
-
- if test -d ${S}/${MACHINE}
- then
- install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc/
- else
- install -m 0644 ${S}/altboot*.cfg ${D}/etc/
- fi
-
- install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
- install -m 0644 ${S}/altboot.func ${D}/etc
- install -m 0644 ${S}/altbootctl.conf ${D}/etc
- install -m 0755 ${S}/init.altboot ${D}/sbin
- install -m 0755 ${S}/altbootctl ${D}/sbin
-
- install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
-
- install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
-
- install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
-}
-
-######################################################################################
-
-do_configure() {
- cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
- mv ${S}/init.altboot_ ${S}/init.altboot
-}
-
-######################################################################################
-
-pkg_postinst_${PN}() {
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
-}
-
-######################################################################################
-
-pkg_postrm_${PN}() {
- update-alternatives --remove init /sbin/init.altboot
-}
-
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR48.bb b/packages/altboot/altboot_1.1.1+wip-SVNR59.bb
index 2e1fd38acc..4af0a7c630 100644
--- a/packages/altboot/altboot_1.1.1+wip-SVNR48.bb
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR59.bb
@@ -1,52 +1,10 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
+require altboot.inc
-DESCRIPTION = "The altboot bootmanager"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools kernel-module-jffs2"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-RDEPENDS_${PN}-conf = "${PN}"
-
-######################################################################################
-
-SVN_REV = "48"
-PR = "r1"
-
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "${MACHINE}"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+PR = "r9"
+SVN_REV = "59"
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV}"
-S = "${WORKDIR}/trunk/"
-
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*cfg"
-
-######################################################################################
-
-MACHINE_DIR = "${MACHINE}"
-MACHINE_DIR_nslu2be = "nslu2le"
-
do_install() {
install -d ${D}/sbin
install -d ${D}/etc/altboot-menu
@@ -99,23 +57,17 @@ do_install() {
fi
}
-######################################################################################
-
do_configure() {
cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
mv ${S}/init.altboot_ ${S}/init.altboot
}
-######################################################################################
-
pkg_postinst_${PN}() {
test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
update-alternatives --install /sbin/init init /sbin/init.altboot 55
}
-######################################################################################
-
pkg_postrm_${PN}() {
test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
diff --git a/packages/altboot/altboot_svn.bb b/packages/altboot/altboot_svn.bb
index 6de92bf420..0d3c869482 100644
--- a/packages/altboot/altboot_svn.bb
+++ b/packages/altboot/altboot_svn.bb
@@ -1,52 +1,10 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
-
-DESCRIPTION = "The altboot bootmanager"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools kernel-module-jffs2"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-RDEPENDS_${PN}-conf = "${PN}"
-
-######################################################################################
+require altboot.inc
PV = "1.1.1+wip-${SRCDATE}"
PR = "r2"
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "${MACHINE}"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;proto=svn"
-S = "${WORKDIR}/trunk/"
-
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*cfg"
-
-######################################################################################
-
-MACHINE_DIR = "${MACHINE}"
-MACHINE_DIR_nslu2be = "nslu2le"
-
do_install() {
install -d ${D}/sbin
install -d ${D}/etc/altboot-menu
@@ -98,23 +56,17 @@ do_install() {
fi
}
-######################################################################################
-
do_configure() {
cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
mv ${S}/init.altboot_ ${S}/init.altboot
}
-######################################################################################
-
pkg_postinst_${PN}() {
test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
update-alternatives --install /sbin/init init /sbin/init.altboot 55
}
-######################################################################################
-
pkg_postrm_${PN}() {
test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
diff --git a/packages/angstrom/angstrom-console-image.bb b/packages/angstrom/angstrom-console-image.bb
index ebded64b24..da467561b1 100644
--- a/packages/angstrom/angstrom-console-image.bb
+++ b/packages/angstrom/angstrom-console-image.bb
@@ -1,10 +1,10 @@
#Angstrom bootstrap image
LICENSE = "MIT"
-PR = "r6"
+PR = "r7"
ANGSTROM_EXTRA_INSTALL ?= ""
-DEPENDS = "task-base \
+DEPENDS = "task-base-extended \
${@base_contains("MACHINE_FEATURES", "screen", "psplash-zap", "",d)} \
"
diff --git a/packages/angstrom/angstrom-e-image.bb b/packages/angstrom/angstrom-e-image.bb
index 4c9bb83507..6db89788ce 100644
--- a/packages/angstrom/angstrom-e-image.bb
+++ b/packages/angstrom/angstrom-e-image.bb
@@ -21,7 +21,7 @@ export IMAGE_BASENAME = "e-image"
DEPENDS = "task-base"
RDEPENDS = "\
${XSERVER} \
- task-base \
+ task-base-extended \
angstrom-e-base-depends \
angstrom-e-depends \
angstrom-gpe-task-settings \
diff --git a/packages/angstrom/angstrom-x11-image.bb b/packages/angstrom/angstrom-x11-image.bb
index 4fe6468e0e..2bf37db5dc 100644
--- a/packages/angstrom/angstrom-x11-image.bb
+++ b/packages/angstrom/angstrom-x11-image.bb
@@ -1,6 +1,6 @@
#Angstrom X11 image
LICENSE = "MIT"
-PR = "r10"
+PR = "r11"
PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
PREFERRED_PROVIDER_tslib ?= "tslib"
@@ -18,8 +18,7 @@ export IMAGE_BASENAME = "x11-image"
DEPENDS = "task-base"
RDEPENDS = "\
${XSERVER} \
- task-base \
- task-base-wifi \
+ task-base-extended \
angstrom-x11-base-depends \
angstrom-gpe-task-base \
angstrom-gpe-task-settings \
diff --git a/packages/anthy/anthy-native_7811.bb b/packages/anthy/anthy-native_7811.bb
index 138abe87c8..38305ddf84 100644
--- a/packages/anthy/anthy-native_7811.bb
+++ b/packages/anthy/anthy-native_7811.bb
@@ -1,4 +1,9 @@
require anthy_${PV}.bb
-PACKAGES = ""
+
DEPENDS = ""
+PACKAGES = ""
+PR = "r1"
+
+S = "${WORKDIR}/anthy-${PV}"
+
inherit native
diff --git a/packages/apex/apex_1.2.19.bb b/packages/apex/apex_1.2.19.bb
deleted file mode 100644
index 027dfaa194..0000000000
--- a/packages/apex/apex_1.2.19.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "APEX Boot Loader"
-SECTION = ""
-PRIORITY = "optional"
-HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
- file://defconfig"
-
-EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
-
-oe_runmake() {
- #FIXME: /home/slug/openslug/tmp/cross/bin/armeb-linux- is incorrect, but
- # the cross bin directory should be on the PATH
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=/home/slug/openslug/tmp/cross/bin/armeb-linux- "$@"
- make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=/home/slug/openslug/tmp/cross/bin/armeb-linux- "$@" || die "oe_runmake failed"
-}
-
-do_configure() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- oe_runmake oldconfig
-}
-
-do_populate_staging() {
- install -d ${STAGING_LOADER_DIR}
- install -m 0755 src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex.bin
-}
diff --git a/packages/apex/apex_1.4.11.bb b/packages/apex/apex_1.4.11.bb
deleted file mode 100644
index 713cc833fd..0000000000
--- a/packages/apex/apex_1.4.11.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-DESCRIPTION = "APEX Boot Loader"
-SECTION = ""
-PRIORITY = "optional"
-HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
- file://defconfig"
-
-EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
-
-oe_runmake() {
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@"
- make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
-}
-
-# FIXME - make this the same as the distro kernel compilation
-CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug"
-
-# Set the correct CONFIG_USER_xxx_ENDIAN and CONFIG_CMDLINE at the head
-# of the .config file and remove any settings in defconfig then append
-# defconfig to .config
-do_configure() {
- rm -f ${S}/.config
- . ${CONFIG_SITE}
- if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
- sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
- -e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
- -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
- ${WORKDIR}/defconfig > ${S}/.config
- elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
- sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
- -e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
- -e 's/.*CONFIG_ENV_REGION_KERNEL_SWAP.*/CONFIG_ENV_REGION_KERNEL_SWAP=y/' \
- -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
- ${WORKDIR}/defconfig > ${S}/.config
- else
- oefatal do_configure cannot determine endianess
- fi
- oe_runmake oldconfig
-}
-
-DEPENDS += "devio-native"
-
-do_populate_staging() {
- install -d ${STAGING_LOADER_DIR}
- . ${CONFIG_SITE}
- if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
- cp src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex.bin
- elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
- devio '<<'src/arch-arm/rom/apex.bin >${STAGING_LOADER_DIR}/apex.bin 'xp $,4'
- else
- oefatal do_populate_staging cannot determine endianess
- fi
-}
diff --git a/packages/apex/apex_1.4.7.bb b/packages/apex/apex_1.5.6.bb
index 713cc833fd..ccf08ca9a0 100644
--- a/packages/apex/apex_1.4.7.bb
+++ b/packages/apex/apex_1.5.6.bb
@@ -3,11 +3,22 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r1"
+# PR = "r1"
+
+# Note that this recipe only works for the NSLU2 at the moment.
+# Patches to make it more generic are welcome.
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
file://defconfig"
+CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
+
+CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
+
+CMDLINE_ROOT_nslu2 = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT_dsmg600 = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT_nas100d = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+
EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
oe_runmake() {
@@ -15,9 +26,6 @@ oe_runmake() {
make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
}
-# FIXME - make this the same as the distro kernel compilation
-CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug"
-
# Set the correct CONFIG_USER_xxx_ENDIAN and CONFIG_CMDLINE at the head
# of the .config file and remove any settings in defconfig then append
# defconfig to .config
@@ -27,13 +35,15 @@ do_configure() {
if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
-e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
- -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2 (big endian)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
${WORKDIR}/defconfig > ${S}/.config
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_ENV_REGION_KERNEL_SWAP.*/CONFIG_ENV_REGION_KERNEL_SWAP=y/' \
- -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2 (little endian)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
${WORKDIR}/defconfig > ${S}/.config
else
oefatal do_configure cannot determine endianess
diff --git a/packages/apex/nslu2/defconfig b/packages/apex/nslu2/defconfig
index ccec463e98..cc92ce16dd 100644
--- a/packages/apex/nslu2/defconfig
+++ b/packages/apex/nslu2/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version:
-# Tue Jan 9 22:31:18 2007
+# Fri Jun 1 17:35:34 2007
#
CONFIG_ARM=y
CONFIG_CPU_ARMV5=y
@@ -17,6 +17,7 @@ CONFIG_EXPERIMENTAL=y
#
# General Setup
#
+CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2 (bigendian)"
CONFIG_CROSS_COMPILE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_CC_OPTIMIZE_FOR_SPEED is not set
@@ -70,6 +71,7 @@ CONFIG_DEL_IS_BS=y
CONFIG_ANSI_KEYS=y
CONFIG_COMMAND_HISTORY=y
CONFIG_COMMAND_EDITING=y
+# CONFIG_TIME_COMMANDS is not set
CONFIG_CMD_ALIAS=y
CONFIG_CMD_CHECKSUM=y
CONFIG_CMD_COPY=y
@@ -85,7 +87,8 @@ CONFIG_CMD_INFO=y
# CONFIG_CMD_PAUSE is not set
CONFIG_CMD_WAIT=y
CONFIG_CMD_XRECEIVE=y
-# CONFIG_CMD_MEMLIMIT is not set
+CONFIG_CMD_MEMLIMIT=y
+CONFIG_CMD_MEMSCAN=y
#
# Generic Drivers
@@ -97,6 +100,10 @@ CONFIG_DRIVER_FIS=y
CONFIG_DRIVER_FIS_BLOCKDEVICE="nor:0x7e0000+4k"
CONFIG_DRIVER_NOR_CFI=y
# CONFIG_DRIVER_NOR_CFI_NO_BUFFERED is not set
+# CONFIG_DRIVER_NOR_CFI_USE_CACHE is not set
+CONFIG_DRIVER_NOR_CFI_TYPE_INTEL=y
+# CONFIG_DRIVER_NOR_CFI_TYPE_SPANSION is not set
+# CONFIG_DRIVER_ONENAND is not set
# CONFIG_DRIVER_IXP4XX_NPE_ETH is not set
CONFIG_USES_NOR_CFI=y
CONFIG_USES_PATHNAME_PARSER=y
@@ -106,15 +113,16 @@ CONFIG_USES_IXP4XX_NPE_ETH=y
# Environment
#
CONFIG_ENV=y
-CONFIG_ENV_MUTABLE=y
CONFIG_ENV_LINK=y
-CONFIG_ENV_REGION="nor:0x7fc000+15k"
+CONFIG_ENV_MUTABLE=y
+CONFIG_ENV_REGION="nor:0x7f8000+16k"
+# CONFIG_ENV_SAVEATONCE is not set
CONFIG_ENV_CHECK_LEN=1024
-CONFIG_VARIATIONS=y
-CONFIG_VARIATION_SUFFIX="-alt"
+# CONFIG_VARIATIONS is not set
# CONFIG_NO_BOOTSTRAP is not set
CONFIG_NOR_BOOT=y
# CONFIG_NAND_BOOT is not set
+# CONFIG_ONENAND_BOOT is not set
# CONFIG_COMPANION_EVT1_BOOT is not set
# CONFIG_COMPANION_EVT2_BOOT is not set
@@ -130,16 +138,16 @@ CONFIG_ENV_STARTUP_KERNEL_COPY=y
# Regions
#
CONFIG_ENV_REGION_KERNEL="fis://kernel"
-# CONFIG_ENV_REGION_KERNEL_ALT_P is not set
#
# Overrides
#
CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
-CONFIG_ENV_DEFAULT_CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug"
-# CONFIG_ENV_DEFAULT_CMDLINE_ALT_P is not set
+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200"
# CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
-# CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
CONFIG_USES_NOR_BOOTFLASH=y
+CONFIG_RELOCATE_SIMPLE=y
+# CONFIG_BIGENDIAN is not set
+# CONFIG_LITTLEENDIAN is not set
CONFIG_CLEAR_STACKS=y
CONFIG_ALIASES=y
diff --git a/packages/apmd/apmd-3.2.2/unlinux.patch b/packages/apmd/apmd-3.2.2/unlinux.patch
new file mode 100644
index 0000000000..f7eec6eb03
--- /dev/null
+++ b/packages/apmd/apmd-3.2.2/unlinux.patch
@@ -0,0 +1,12 @@
+--- apmd-3.2.2.orig/Makefile
++++ apmd-3.2.2/Makefile
+@@ -43,8 +43,7 @@
+
+ CC=gcc
+ CFLAGS=-O -g
+-XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include \
+- -I/usr/src/linux-2.2/include -I /usr/src/linux-2.0/include \
++XTRACFLAGS=-Wall -pipe -I. \
+ -DVERSION=\"$(VERSION)\" \
+ -DDEFAULT_PROXY_NAME=\"$(PROXY_DIR)/apmd_proxy\"
+ LDFLAGS=
diff --git a/packages/apmd/apmd_3.2.2.bb b/packages/apmd/apmd_3.2.2.bb
index 4313115c91..5402e67632 100644
--- a/packages/apmd/apmd_3.2.2.bb
+++ b/packages/apmd/apmd_3.2.2.bb
@@ -9,6 +9,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz; \
file://debian.patch;patch=1 \
file://workaround.patch;patch=1 \
file://zaurus24.patch;patch=1 \
+ file://unlinux.patch;patch=1 \
file://init \
file://default \
file://apmd_proxy \
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb
deleted file mode 100644
index 339f663e25..0000000000
--- a/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb
+++ /dev/null
@@ -1,77 +0,0 @@
-DESCRIPTION = "ARM Kernel Shim"
-SECTION = ""
-PRIORITY = "optional"
-HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
-LICENSE = "GPL"
-PR = "r5"
-
-COMPATIBLE_MACHINE = "(ixp4xx|nslu2)"
-
-SRC_URI = "ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${PV}.tar.gz \
- file://passthrough-atags.patch;patch=1 \
- file://cmdline_if_none.patch;patch=1 \
- file://config-nslu2.h \
- file://config-nas100d.h \
- file://config-dsmg600.h \
- file://config-fsg3.h"
-
-S = ${WORKDIR}/arm-kernel-shim-${PV}/${PV}
-
-EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
-
-oe_runmake() {
- mv ${S}/config.h ${S}/config.h.orig
- # NSLU2
- if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
- sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
- ${WORKDIR}/config-nslu2.h > ${S}/config.h
- else
- sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
- ${WORKDIR}/config-nslu2.h > ${S}/config.h
- fi
- rm -f ${S}/main.o
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2
- make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2 || die "oe_runmake failed"
- # NAS100d
- if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
- sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
- ${WORKDIR}/config-nas100d.h > ${S}/config.h
- else
- sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
- ${WORKDIR}/config-nas100d.h > ${S}/config.h
- fi
- rm -f ${S}/main.o
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d
- make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d || die "oe_runmake failed"
- # DSMG-600
- if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
- sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
- ${WORKDIR}/config-dsmg600.h > ${S}/config.h
- else
- sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
- ${WORKDIR}/config-dsmg600.h > ${S}/config.h
- fi
- rm -f ${S}/main.o
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600
- make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600 || die "oe_runmake failed"
- # FSG-3
- if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
- sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
- ${WORKDIR}/config-fsg3.h > ${S}/config.h
- else
- sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
- ${WORKDIR}/config-fsg3.h > ${S}/config.h
- fi
- rm -f ${S}/main.o
- oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3
- make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3 || die "oe_runmake failed"
- mv ${S}/config.h.orig ${S}/config.h
-}
-
-do_populate_staging() {
- install -d ${STAGING_LOADER_DIR}
- cp ${S}/arm-kernel-shim-nslu2.bin ${STAGING_LOADER_DIR}/
- cp ${S}/arm-kernel-shim-nas100d.bin ${STAGING_LOADER_DIR}/
- cp ${S}/arm-kernel-shim-dsmg600.bin ${STAGING_LOADER_DIR}/
- cp ${S}/arm-kernel-shim-fsg3.bin ${STAGING_LOADER_DIR}/
-}
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.4.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb
index 2b285f3b90..4bdf7a86e3 100644
--- a/packages/arm-kernel-shim/arm-kernel-shim_1.4.bb
+++ b/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb
@@ -3,26 +3,24 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r2"
+# PR = "r1"
COMPATIBLE_MACHINE = "(ixp4xx|nslu2)"
SRC_URI = "ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${PV}.tar.gz \
- file://passthrough-atags.patch;patch=1 \
- file://cmdline_if_none.patch;patch=1 \
file://config-nslu2.h \
file://config-nas100d.h \
file://config-dsmg600.h \
file://config-fsg3.h"
-S = ${WORKDIR}/arm-kernel-shim-${PV}/1.3
+S = ${WORKDIR}/arm-kernel-shim-${PV}
CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
-CMDLINE_ROOT_DSMG600 = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
-CMDLINE_ROOT_NAS100D = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
-CMDLINE_ROOT_NSLU2 = "root=/dev/mtdblock4 rootfstype=jffs2 rw"
-CMDLINE_ROOT_FSG3 = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
+CMDLINE_ROOT_DSMG600 = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT_NAS100D = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT_NSLU2 = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT_FSG3 = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
diff --git a/packages/arm-kernel-shim/files/cmdline_if_none.patch b/packages/arm-kernel-shim/files/cmdline_if_none.patch
deleted file mode 100644
index 460f7be090..0000000000
--- a/packages/arm-kernel-shim/files/cmdline_if_none.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- arm-kernel-shim-1.3/main.c.orig 2007-02-14 19:05:35.000000000 -0600
-+++ arm-kernel-shim-1.3/main.c 2007-02-14 22:48:06.000000000 -0600
-@@ -153,6 +153,42 @@
- p->hdr.tag = ATAG_NONE;
- p->hdr.size = 0;
-
-+#else
-+
-+#ifdef CMDLINE_IF_NONE
-+
-+ /* Walk over the ATAG list, we need to find the end of the list.
-+ * If we find a command line tag, stash away the pointer to the
-+ * actual command line itself. Note that the implementation
-+ * below assumes a single ATAG_CMDLINE passed in from the
-+ * bootloader, which may not be a good assumption in all cases.
-+ */
-+ {
-+ char *c = 0;
-+ for_each_tag(p, (struct tag*) PHYS_PARAMS)
-+ if (p->hdr.tag == ATAG_CMDLINE) c = p->u.cmdline.cmdline;
-+
-+ /* p -> final tag (ATAG_NONE), and c -> command line if found */
-+ /* if no ATAG_CMDLINE, or command line is empty, add the default one. */
-+
-+ if ((c == 0) || (*c == 0)) {
-+ p->hdr.tag = ATAG_CMDLINE;
-+ p->hdr.size = tag_size (tag_cmdline)
-+ + (sizeof (cmdline)+3)/4 - 1;
-+ {
-+ const char* sz = cmdline + offset;
-+ int i;
-+ for (i = 0; i < sizeof (cmdline); ++i)
-+ p->u.cmdline.cmdline[i] = sz[i];
-+ }
-+ p = tag_next (p);
-+ p->hdr.tag = ATAG_NONE;
-+ p->hdr.size = 0;
-+ }
-+ }
-+
-+#endif
-+
- #endif
-
- /* Pass control to the kernel */
diff --git a/packages/arm-kernel-shim/files/config-dsmg600.h b/packages/arm-kernel-shim/files/config-dsmg600.h
index c320dc1b3b..eda1e9c264 100644
--- a/packages/arm-kernel-shim/files/config-dsmg600.h
+++ b/packages/arm-kernel-shim/files/config-dsmg600.h
@@ -18,12 +18,6 @@
#define MACH_TYPE 964
-/* The DSM-G600 RedBoot sets up the ATAGs correctly */
-#define PASSTHROUGH_ATAGS
-
-/* but if the command line passed in is empty, use the default. */
-#define CMDLINE_IF_NONE
-
/* Uncomment one of these to switch the CPU into a specific mode. */
//#define FORCE_LITTLEENDIAN
//#define FORCE_BIGENDIAN
diff --git a/packages/arm-kernel-shim/files/config-fsg3.h b/packages/arm-kernel-shim/files/config-fsg3.h
index fa894e89ac..9b88462e89 100644
--- a/packages/arm-kernel-shim/files/config-fsg3.h
+++ b/packages/arm-kernel-shim/files/config-fsg3.h
@@ -21,6 +21,8 @@
#define MACH_TYPE 1091
+#define CREATE_ATAGS
+
/* Uncomment one of these to switch the CPU into a specific mode. */
//#define FORCE_LITTLEENDIAN
//#define FORCE_BIGENDIAN
diff --git a/packages/arm-kernel-shim/files/config-nas100d.h b/packages/arm-kernel-shim/files/config-nas100d.h
index 90f5520e7d..99bc91fb7a 100644
--- a/packages/arm-kernel-shim/files/config-nas100d.h
+++ b/packages/arm-kernel-shim/files/config-nas100d.h
@@ -21,6 +21,10 @@
#define MACH_TYPE 865
+#define CREATE_ATAGS
+
+#define GUARANTEE_ATAG_CMDLINE
+
/* Uncomment one of these to switch the CPU into a specific mode. */
//#define FORCE_LITTLEENDIAN
//#define FORCE_BIGENDIAN
diff --git a/packages/arm-kernel-shim/files/config-nslu2.h b/packages/arm-kernel-shim/files/config-nslu2.h
index 73566d061d..c751d84a44 100644
--- a/packages/arm-kernel-shim/files/config-nslu2.h
+++ b/packages/arm-kernel-shim/files/config-nslu2.h
@@ -21,6 +21,10 @@
#define MACH_TYPE 597
+#define CREATE_ATAGS
+
+#define GUARANTEE_ATAG_CMDLINE
+
/* Uncomment one of these to switch the CPU into a specific mode. */
//#define FORCE_LITTLEENDIAN
//#define FORCE_BIGENDIAN
diff --git a/packages/arm-kernel-shim/files/passthrough-atags.patch b/packages/arm-kernel-shim/files/passthrough-atags.patch
deleted file mode 100644
index 194279df89..0000000000
--- a/packages/arm-kernel-shim/files/passthrough-atags.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- arm-kernel-shim-1.3/main.c~ 2007-02-11 05:52:32.000000000 +1030
-+++ arm-kernel-shim-1.3/main.c 2007-02-14 16:39:40.000000000 +1030
-@@ -100,6 +100,8 @@
- : "+r" (offset)
- :: "lr", "cc");
-
-+#if !defined (PASSTHROUGH_ATAGS)
-+
- p = (struct tag*) PHYS_PARAMS;
-
- /* Always start with the CORE tag */
-@@ -151,6 +153,8 @@
- p->hdr.tag = ATAG_NONE;
- p->hdr.size = 0;
-
-+#endif
-+
- /* Pass control to the kernel */
- boot (0, MACH_TYPE, PHYS_PARAMS);
- }
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index 37068780fd..74c4c33711 100644
--- a/packages/base-files/base-files_3.0.14.bb
+++ b/packages/base-files/base-files_3.0.14.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Miscellaneous files for the base system."
SECTION = "base"
PRIORITY = "required"
-PR = "r66"
+PR = "r68"
LICENSE = "GPL"
SRC_URI = " \
@@ -80,9 +80,11 @@ do_install () {
echo ${hostname} > ${D}${sysconfdir}/hostname
fi
+ install -m 644 ${WORKDIR}/issue* ${D}${sysconfdir}
+
if [ -n "${DISTRO_NAME}" ]; then
- echo -n "${DISTRO_NAME} " > ${D}${sysconfdir}/issue
- echo -n "${DISTRO_NAME} " > ${D}${sysconfdir}/issue.net
+ echo -n "${DISTRO_NAME} " >> ${D}${sysconfdir}/issue
+ echo -n "${DISTRO_NAME} " >> ${D}${sysconfdir}/issue.net
if [ -n "${DISTRO_VERSION}" ]; then
echo -n "${DISTRO_VERSION} " >> ${D}${sysconfdir}/issue
echo -n "${DISTRO_VERSION} " >> ${D}${sysconfdir}/issue.net
diff --git a/packages/clamav/clamav-0.88.7/.mtn2git_empty b/packages/billiardz/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/clamav/clamav-0.88.7/.mtn2git_empty
+++ b/packages/billiardz/files/.mtn2git_empty
diff --git a/packages/billiardz/files/gcc4.patch b/packages/billiardz/files/gcc4.patch
new file mode 100644
index 0000000000..30d7eda9e8
--- /dev/null
+++ b/packages/billiardz/files/gcc4.patch
@@ -0,0 +1,45 @@
+diff -Naur billiardz-0.1.4-orig/src/ButtonListener.h billiardz-0.1.4/src/ButtonListener.h
+--- billiardz-0.1.4-orig/src/ButtonListener.h 2002-11-05 07:01:51.000000000 +0100
++++ billiardz-0.1.4/src/ButtonListener.h 2007-03-26 21:10:11.000000000 +0200
+@@ -9,6 +9,7 @@
+ {
+ public:
+ virtual void buttonClicked(Button *button) = 0;
++ virtual ~ButtonListener() {}
+ };
+
+ #endif /* _BUTTONLISTENER_H_ */
+diff -Naur billiardz-0.1.4-orig/src/CueStickListener.h billiardz-0.1.4/src/CueStickListener.h
+--- billiardz-0.1.4-orig/src/CueStickListener.h 2002-09-13 02:02:23.000000000 +0200
++++ billiardz-0.1.4/src/CueStickListener.h 2007-03-26 21:11:14.000000000 +0200
+@@ -12,6 +12,7 @@
+ virtual bool cueBallHit(CueStick *stick, Ball *ball) = 0;
+ virtual void stickMoved(CueStick *stick, Fixed oldAngle,
+ Fixed newAngle) = 0;
++ virtual ~CueStickListener() {}
+ };
+
+ #endif /* _CUESTICKLISTENER_H_ */
+diff -Naur billiardz-0.1.4-orig/src/PoolGame.h billiardz-0.1.4/src/PoolGame.h
+--- billiardz-0.1.4-orig/src/PoolGame.h 2002-11-05 07:01:36.000000000 +0100
++++ billiardz-0.1.4/src/PoolGame.h 2007-03-26 21:40:58.000000000 +0200
+@@ -6,6 +6,7 @@
+
+ class Player;
+ class PoolTable;
++class PoolRoom;
+ class Physics;
+ class Rules;
+ class Sprite;
+diff -Naur billiardz-0.1.4-orig/src/main.cpp billiardz-0.1.4/src/main.cpp
+--- billiardz-0.1.4-orig/src/main.cpp 2003-11-03 07:56:29.000000000 +0100
++++ billiardz-0.1.4/src/main.cpp 2007-03-26 23:27:11.000000000 +0200
+@@ -51,7 +51,7 @@
+
+ return interval;
+ }
+-
++#define SDL_main main
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/packages/binutils/binutils-2.17/avr32-config.sub.patch b/packages/binutils/binutils-2.17/avr32-config.sub.patch
new file mode 100644
index 0000000000..f4166e9423
--- /dev/null
+++ b/packages/binutils/binutils-2.17/avr32-config.sub.patch
@@ -0,0 +1,11 @@
+--- /tmp/config.sub 2007-06-01 15:29:41.000000000 +0200
++++ binutils-2.17/config.sub 2007-06-01 15:37:19.885251000 +0200
+@@ -305,7 +305,7 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* \
++ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
diff --git a/packages/binutils/binutils_2.17.bb b/packages/binutils/binutils_2.17.bb
index 9610634959..8d38f3a459 100644
--- a/packages/binutils/binutils_2.17.bb
+++ b/packages/binutils/binutils_2.17.bb
@@ -1,6 +1,6 @@
require binutils.inc
-PR = "r0"
+PR = "r1"
SRC_URI = \
"http://ftp.gnu.org/gnu/binutils/binutils-${PV}.tar.bz2 \
@@ -18,6 +18,9 @@ SRC_URI += "\
file://300-012_check_ldrunpath_length.patch;patch=1 \
file://300-001_ld_makefile_patch.patch;patch=1 \
file://400-mips-ELF_MAXPAGESIZE-4K.patch;patch=1 \
+ http://avr32linux.org/twiki/pub/Main/DevelopmentTools/500-avr32.patch.gz;patch=1 \
+ http://avr32linux.org/twiki/pub/Main/DevelopmentTools/501-avr32-sreldyn-fix.patch.gz;patch=1 \
+ http://avr32linux.org/twiki/pub/Main/DevelopmentTools/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch.gz;patch=1 \
"
# Zecke's OSX fixes
diff --git a/packages/bluez/bluez-libs_3.11.bb b/packages/bluez/bluez-libs_3.11.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.11.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/packages/bluez/bluez-utils_3.10.1.bb b/packages/bluez/bluez-utils_3.11.bb
index 44827dc2d0..6ac6c8f977 100644
--- a/packages/bluez/bluez-utils_3.10.1.bb
+++ b/packages/bluez/bluez-utils_3.11.bb
@@ -8,7 +8,7 @@ SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
file://hcid.conf \
file://02dtl1_cs.sh \
"
-PR = "r3"
+PR = "r0"
EXTRA_OECONF = " \
--enable-bccmd \
diff --git a/packages/boost-asio/boost-asio_0.3.7.bb b/packages/boost-asio/boost-asio_0.3.7.bb
index 45b7e22eb1..947f89cae2 100644
--- a/packages/boost-asio/boost-asio_0.3.7.bb
+++ b/packages/boost-asio/boost-asio_0.3.7.bb
@@ -1,6 +1,5 @@
DESCRIPTION = "Asio 0.3.7 for work with boost, should be moved into boost package once integrated into the boost distribution."
HOMEPAGE = "http://asio.sf.net/"
-MAINTAINER = "Martin Dietze <dietze@4g-systems.com>"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "Boost Software License"
diff --git a/packages/clamav/clamav-0.90.2/.mtn2git_empty b/packages/busybox/busybox-static-1.2.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/clamav/clamav-0.90.2/.mtn2git_empty
+++ b/packages/busybox/busybox-static-1.2.1/.mtn2git_empty
diff --git a/packages/busybox/busybox-static_1.2.1.bb b/packages/busybox/busybox-static_1.2.1.bb
new file mode 100644
index 0000000000..f3bff07530
--- /dev/null
+++ b/packages/busybox/busybox-static_1.2.1.bb
@@ -0,0 +1,6 @@
+require busybox_${PV}.bb
+PR = "r0"
+
+S = "${WORKDIR}/busybox-1.2.1"
+
+export CFLAGS:="${CFLAGS} -static"
diff --git a/packages/busybox/slingbox-1.3.1/fdisk-readhex.patch b/packages/busybox/slingbox-1.3.1/fdisk-readhex.patch
new file mode 100644
index 0000000000..d8e32c40e7
--- /dev/null
+++ b/packages/busybox/slingbox-1.3.1/fdisk-readhex.patch
@@ -0,0 +1,20 @@
+--- busybox-1.3.1/util-linux/fdisk.c.orig 2007-06-06 21:18:45.000000000 -0500
++++ busybox-1.3.1/util-linux/fdisk.c 2007-06-06 21:17:20.000000000 -0500
+@@ -331,13 +331,16 @@
+ read_hex(const struct systypes *sys)
+ {
+ unsigned long v;
++ char *e;
+ while (1) {
+ read_nonempty(_("Hex code (type L to list codes): "));
+ if (*line_ptr == 'l' || *line_ptr == 'L') {
+ list_types(sys);
+ continue;
+ }
+- v = bb_strtoul(line_ptr, NULL, 16);
++ v = bb_strtoul(line_ptr, &e, 16);
++ /* Clear out EINVAL code if it's because of the trailing \n */
++ if ((errno == EINVAL) && (*e == '\n')) errno = 0;
+ if (errno || v > 0xff) continue;
+ return v;
+ }
diff --git a/packages/busybox/slingbox_1.3.1.bb b/packages/busybox/slingbox_1.3.1.bb
index 89b189e325..62d150a9fe 100644
--- a/packages/busybox/slingbox_1.3.1.bb
+++ b/packages/busybox/slingbox_1.3.1.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.busybox.net"
LICENSE = "GPL"
SECTION = "base"
PRIORITY = "required"
-PR = "r0"
+PR = "r1"
COMPATIBLE_MACHINE = "nslu2"
SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
@@ -12,12 +12,11 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://shadow_h_is_required.patch;patch=1 \
file://df_rootfs.patch;patch=1 \
file://lazy_umount.patch;patch=1 \
- file://halt.patch;patch=1" \
+ file://halt.patch;patch=1 \
+ file://fdisk-readhex.patch;patch=1 \
file://slingbox_name.patch;patch=1 \
file://slingbox.patch;patch=1"
-# file://wget-long-options.patch;patch=1 \
-
S = "${WORKDIR}/busybox-${PV}"
export EXTRA_CFLAGS = "${CFLAGS}"
diff --git a/packages/c3110x/cx3110x_1.1.bb b/packages/c3110x/cx3110x_1.1.bb
index b3a9ce87e3..15cf51427d 100644
--- a/packages/c3110x/cx3110x_1.1.bb
+++ b/packages/c3110x/cx3110x_1.1.bb
@@ -1,18 +1,30 @@
-DESCRIPTION = "cx3110x wifi support as found in the Nokia 770/800"
-SECTION = "kernel/modules"
-LICENSE = "GPL"
-PR = "r0"
-
-export KERNEL_SRC_DIR = ${STAGING_KERNEL_DIR}
-export LDFLAGS = ""
-
-SRC_URI = "https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz"
-
-S = "${WORKDIR}/cx3110x-${PV}"
-
-inherit module
-
-do_compile() {
- oe_runmake modules
-}
-
+DESCRIPTION = "cx3110x wifi support as found in the Nokia 770/800"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+PR = "r4"
+
+COMPATIBLE_MACHINE = "(nokia770|nokia800)"
+
+export KERNEL_SRC_DIR = ${STAGING_KERNEL_DIR}
+export LDFLAGS = ""
+
+SRC_URI = "https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz \
+ file://umac_binary.patch;patch=1 \
+ http://use.the.umac.ko.from.your.own.nokia800/umac.ko"
+
+S = "${WORKDIR}/cx3110x-${PV}"
+
+inherit module
+
+do_compile() {
+ cp ${WORKDIR}/umac.ko ${S}/src/binary_umac.o
+ ${OBJCOPY} ${S}/src/binary_umac.o -R __ksymtab
+ ${OBJCOPY} ${S}/src/binary_umac.o -R __ksymtab_strings
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .gnu.linkonce.this_module
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .modinfo
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .init.text
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .exit.text
+
+ oe_runmake modules
+}
+
diff --git a/packages/elfutils/elfutils-0.108/.mtn2git_empty b/packages/c3110x/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/elfutils/elfutils-0.108/.mtn2git_empty
+++ b/packages/c3110x/files/.mtn2git_empty
diff --git a/packages/c3110x/files/umac_binary.patch b/packages/c3110x/files/umac_binary.patch
new file mode 100644
index 0000000000..bffe69bca5
--- /dev/null
+++ b/packages/c3110x/files/umac_binary.patch
@@ -0,0 +1,69 @@
+ src/Makefile.k26 | 4 ++--
+ src/dummy_umac.c | 38 ++------------------------------------
+ 2 files changed, 4 insertions(+), 38 deletions(-)
+
+Index: cx3110x-1.1/src/Makefile.k26
+===================================================================
+--- cx3110x-1.1.orig/src/Makefile.k26 2007-05-25 17:51:15.000000000 +0100
++++ cx3110x-1.1/src/Makefile.k26 2007-05-25 22:44:36.000000000 +0100
+@@ -8,8 +8,8 @@ cx3110x-objs = $(SM_OBJECTS) $(SM_UMAC_O
+ #MTUM module
+ cx3110x_mt-objs = $(SM_OBJECTS) $(SM_MTUM_OBJECTS)
+
+-umac-objs = dummy_umac.o
+-mtum-objs = dummy_umac.o
++umac-objs = dummy_umac.o binary_umac.o
++mtum-objs = dummy_umac.o binary_umac.o
+
+ obj-$(CONFIG_CX3110X_STA) += cx3110x.o umac.o
+ obj-$(CONFIG_CX3110X_PROD) += cx3110x_mt.o mtum.o
+Index: cx3110x-1.1/src/dummy_umac.c
+===================================================================
+--- cx3110x-1.1.orig/src/dummy_umac.c 2007-05-25 17:51:15.000000000 +0100
++++ cx3110x-1.1/src/dummy_umac.c 2007-05-25 22:50:59.000000000 +0100
+@@ -15,43 +15,9 @@
+ */
+ #include <linux/module.h>
+ #include "softmac2.h"
++#include "sm_drv.h"
+
+-SM_API int32_t SM_FDECL prism_softmac_parse_bra(const uint8_t* bra,
+- struct s_sm_initdata *data) { return 0; }
+-
+-SM_API int32_t SM_FDECL prism_softmac_describe(struct s_sm_descr *descr,
+- struct s_sm_initdata *data) { return 0; }
+-
+-SM_API int32_t SM_FDECL prism_softmac_create(uint32_t *context,
+- struct s_sm_setup *setup,
+- struct s_pda *pda,
+- struct s_sm_initdata *data) { return 0; }
+-
+-SM_API int32_t SM_FDECL prism_softmac_destroy(uint32_t *context) { return 0; }
+-
+-SM_API int32_t SM_FDECL prism_softmac_conf( uint32_t *context, struct s_sm_conf *conf ){ return 0; }
+-SM_API int32_t SM_FDECL prism_softmac_trap( uint32_t *context, struct s_sm_conf *conf ){ return 0; }
+-
+-SM_API int32_t SM_FDECL prism_softmac_frame_tx(uint32_t *context, struct s_sm_frame *frame){ return 0; }
+-SM_API int32_t SM_FDECL prism_softmac_frame_tx_done(uint32_t *context, struct s_sm_frame **frame){ return 0; }
+-SM_API int32_t SM_FDECL prism_softmac_frame_rx(uint32_t *context, struct s_sm_frame **frame){ return 0; }
+-SM_API int32_t SM_FDECL prism_softmac_service(uint32_t *context) { return 0; }
+-
+-SM_API int32_t SM_FDECL prism_interconnect_message_query(uint32_t *context,
+- uint32_t mask,
+- struct s_ic_msg **msg){ return 0; }
+-SM_API int32_t SM_FDECL prism_interconnect_message_handle(uint32_t *context, struct s_ic_msg *msg){ return 0; }
+-SM_API int32_t SM_FDECL prism_interconnect_trigger(uint32_t *context){ return 0;}
+-
+-void prism_driver_free(uint32_t *context, void *buffer){}
+-void prism_driver_frame_free(uint32_t *context, struct s_sm_frame *frame){}
+-
+-int sm_net_device;
+-void sm_drv_get_device(void) {}
+-void frame_skb_alloc(void) {}
+-void frame_skb_free(void) {}
+-void frame_to_skb(void) {}
+-void skb_to_frame(void) {}
++extern int sm_net_device;
+
+ EXPORT_SYMBOL(prism_driver_free);
+ EXPORT_SYMBOL(prism_driver_frame_free);
diff --git a/packages/cairo/cairo_1.4.8.bb b/packages/cairo/cairo_1.4.8.bb
new file mode 100644
index 0000000000..845e14fc29
--- /dev/null
+++ b/packages/cairo/cairo_1.4.8.bb
@@ -0,0 +1,6 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz"
+
+PR = "r0"
+
diff --git a/packages/clamav/clamav-0.88.7/clamd.conf b/packages/clamav/clamav-0.88.7/clamd.conf
deleted file mode 100644
index 485c80d420..0000000000
--- a/packages/clamav/clamav-0.88.7/clamd.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-## Please read the clamd.conf(5) manual before editing this file.
-LocalSocket /var/run/clamav/clamd.ctl
-FixStaleSocket
-User clamav
-AllowSupplementaryGroups
-ScanMail
-ScanArchive
-ArchiveMaxRecursion 5
-ArchiveMaxFiles 1000
-ArchiveMaxFileSize 10M
-ArchiveMaxCompressionRatio 250
-ReadTimeout 180
-MaxThreads 12
-MaxConnectionQueueLength 15
-LogFile /var/log/clamav/clamav.log
-LogTime
-LogFileMaxSize 0
-PidFile /var/run/clamav/clamd.pid
-DatabaseDirectory /var/lib/clamav
-SelfCheck 3600
-ScanOLE2
-ScanPE
-DetectBrokenExecutables
-ScanHTML
-ArchiveBlockMax
diff --git a/packages/clamav/clamav-0.88.7/cross-compile-fix.patch b/packages/clamav/clamav-0.88.7/cross-compile-fix.patch
deleted file mode 100644
index 690d680c66..0000000000
--- a/packages/clamav/clamav-0.88.7/cross-compile-fix.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-Add some caching of values which can't be determined when
-cross-compiling. This lets us define the values via the site files.
-
---- clamav-0.88.4/configure.in 2006/09/12 05:49:09 1.1
-+++ clamav-0.88.4/configure.in 2006/09/12 06:24:27
-@@ -56,19 +56,18 @@
-
- dnl Check for broken snprintf (code by Phil Oleson <oz*nixil.net>)
- if test "x$ac_cv_func_snprintf" = "xyes" ; then
-- AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
-- AC_TRY_RUN(
-- [
-+ AC_CACHE_CHECK([whether snprintf correctly terminates long strings],
-+ [clamav_av_func_working_snprintf_long], [
-+ AC_TRY_RUN(
-+ [
- #include <stdio.h>
- int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
-- ],
-- [AC_MSG_RESULT(yes)],
-- [
-- AC_MSG_RESULT(no)
-- AC_DEFINE(BROKEN_SNPRINTF,1,[Define if your snprintf is busted])
-- AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
-- ]
-- )
-+ ])
-+ ])
-+ if test "x$clamav_av_func_working_snprintf_long" = "xno"; then
-+ AC_DEFINE(BROKEN_SNPRINTF,1,[Define if your snprintf is busted])
-+ AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
-+ fi
- fi
-
- have_pthreads=no
-@@ -331,18 +330,28 @@
- AC_DEFINE_UNQUOTED(CONFDIR,"$cfg_dir",[where to look for the config file])
-
- dnl check for in_port_t definition
--AC_TRY_RUN([
--#include <sys/types.h>
--#include <netinet/in.h>
--int main(int argc, char **argv) { in_port_t pt; pt = 0; return pt; }
--], AC_DEFINE(HAVE_IN_PORT_T,1,[in_port_t is defined]), AC_MSG_RESULT(in_port_t is not defined))
-+AC_CACHE_CHECK([for in_port_t], [clamav_av_have_in_port_t], [
-+ AC_TRY_RUN([
-+ #include <sys/types.h>
-+ #include <netinet/in.h>
-+ int main(int argc, char **argv) { in_port_t pt; pt = 0; return pt; }
-+ ])
-+ ])
-+if test "$clamav_av_have_in_port_t" = "yes"; then
-+ AC_DEFINE(HAVE_IN_PORT_T,1,[in_port_t is defined])
-+fi
-
- dnl check for in_addr_t definition
--AC_TRY_RUN([
--#include <sys/types.h>
--#include <netinet/in.h>
--int main(int argc, char **argv) { in_addr_t pt; pt = 0; return pt; }
--], AC_DEFINE(HAVE_IN_ADDR_T,1,[in_addr_t is defined]), AC_MSG_RESULT(in_addr_t is not defined))
-+AC_CACHE_CHECK([for in_addr_t], [clamav_av_have_in_addr_t], [
-+ AC_TRY_RUN([
-+ #include <sys/types.h>
-+ #include <netinet/in.h>
-+ int main(int argc, char **argv) { in_addr_t pt; pt = 0; return pt; }
-+ ])
-+ ])
-+if test "$clamav_av_have_in_addr_t" = "yes"; then
-+ AC_DEFINE(HAVE_IN_ADDR_T,1,[in_addr_t is defined])
-+fi
-
- case "$target_os" in
- linux*)
diff --git a/packages/clamav/clamav-0.88.7/freshclam.conf b/packages/clamav/clamav-0.88.7/freshclam.conf
deleted file mode 100644
index 770490b3ab..0000000000
--- a/packages/clamav/clamav-0.88.7/freshclam.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-## Please read the freshclam.conf(5) manual before editing this file.
-
-# Comment or remove the line below.
-Example
-
-# Uncomment the following line and replace XY with your country
-# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
-# Default: There is no default, which results in an error when running freshclam
-#DatabaseMirror db.XY.clamav.net
-
-DatabaseMirror database.clamav.net
-DatabaseOwner clamav
-UpdateLogFile /var/log/clamav/freshclam.log
-LogFileMaxSize 0
-MaxAttempts 5
-Checks 24
-DatabaseDirectory /var/lib/clamav/
-NotifyClamd
-DNSDatabaseInfo current.cvd.clamav.net
diff --git a/packages/clamav/clamav-0.88.7/libtool-fix.patch b/packages/clamav/clamav-0.88.7/libtool-fix.patch
deleted file mode 100644
index 05a4876dd0..0000000000
--- a/packages/clamav/clamav-0.88.7/libtool-fix.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Use our own libtool that knows about cross compiling, not the libtool
-that is included.
-
---- clamav-0.88.4/acinclude.m4 2006/09/12 08:07:27 1.1
-+++ clamav-0.88.4/acinclude.m4 2006/09/12 08:16:31
-@@ -520,7 +520,7 @@
- LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL="$host_alias-libtool"
- AC_SUBST(LIBTOOL)dnl
-
- # Prevent multiple expansion
-@@ -1238,7 +1238,7 @@
- rm="rm -f"
-
- # Global variables:
--default_ofile=libtool
-+default_ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except M$VC,
diff --git a/packages/clamav/clamav.inc b/packages/clamav/clamav.inc
index c00da1d6d7..6bdd36c7d2 100644
--- a/packages/clamav/clamav.inc
+++ b/packages/clamav/clamav.inc
@@ -10,7 +10,7 @@ DESCRIPTION_${PN}-daemon = "An on-demand file scanning service for Clam AntiViru
HOMEPAGE = "http://www.clamav.net/"
SECTION = "network"
LICENSE = "GPL"
-DEPENDS = "zlib bzip2 gmp"
+DEPENDS = "zlib bzip2 gmp curl virtual/libintl"
RDEPENDS_${PN} = "${PN}-data"
RDEPENDS_${PN}-daemon = "${PN}-data ${PN}-conf"
RDEPENDS_${PN}-freshclam = "${PN}-conf"
@@ -33,6 +33,8 @@ inherit autotools update-rc.d binconfig
# Don't check for clamav uid/gid - they don't exist on the host
# Put virus definitions in /var/lib not /usr/lib
EXTRA_OECONF = "--disable-clamav \
+ --with-zlib=${STAGING_DIR}/${HOST_SYS} \
+ --with-libcurl \
--with-dbdir=${localstatedir}/lib/clamav"
do_install_append() {
@@ -62,13 +64,15 @@ do_stage () {
install -m 0644 libclamav/clamav.h ${STAGING_INCDIR}
}
-PACKAGES += "${PN}-freshclam ${PN}-daemon ${PN}-conf ${PN}-data ${PN}-lib"
+PACKAGES += "${PN}-freshclam ${PN}-daemon ${PN}-conf ${PN}-data ${PN}-lib \
+ ${PN}-clamconf"
FILES_${PN} = "${bindir}/clamscan \
${bindir}/sigtool \
${bindir}/clamdscan"
FILES_${PN}-lib = "${libdir}/libclamav.so.*"
FILES_${PN}-conf = "${sysconfdir}/clamd.conf"
+FILES_${PN}-clamconf = "${bindir}/clamconf"
FILES_${PN}-freshclam = "${bindir}/freshclam \
${sysconfdir}/freshclam.conf \
${sysconfdir}/init.d/clamav-freshclam \
diff --git a/packages/clamav/clamav_0.88.7.bb b/packages/clamav/clamav_0.88.7.bb
deleted file mode 100644
index 2728c31590..0000000000
--- a/packages/clamav/clamav_0.88.7.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require clamav.inc
-
-PR = "r1"
-
-SRC_URI_append += " file://libtool-fix.patch;patch=1"
diff --git a/packages/clamav/clamav_0.90.2.bb b/packages/clamav/clamav_0.90.2.bb
index fe3061606a..e721558efe 100644
--- a/packages/clamav/clamav_0.90.2.bb
+++ b/packages/clamav/clamav_0.90.2.bb
@@ -1,17 +1,3 @@
require clamav.inc
-PR = "r1"
-
-# 0.9x requires curl for incremental database updates
-DEPENDS += "curl"
-DEPENDS += "virtual/libintl"
-# Don't check for clamav uid/gid - they don't exist on the host
-# Put virus definitions in /var/lib not /usr/lib
-EXTRA_OECONF = "--disable-clamav \
- --with-zlib=${STAGING_DIR}/${HOST_SYS} \
- --with-libcurl \
- --with-dbdir=${localstatedir}/lib/clamav"
-
-# Package up configuration utility - new for 0.9x
-PACKAGES += "${PN}-clamconf"
-FILES_${PN}-clamconf = "${bindir}/clamconf"
+PR = "r1"
diff --git a/packages/clamav/clamav_0.90.3.bb b/packages/clamav/clamav_0.90.3.bb
new file mode 100644
index 0000000000..fec4ae59d8
--- /dev/null
+++ b/packages/clamav/clamav_0.90.3.bb
@@ -0,0 +1,3 @@
+require clamav.inc
+
+PR = "r0"
diff --git a/packages/clamav/clamav-0.90.2/clamd.conf b/packages/clamav/files/clamd.conf
index 74ebcf5c3f..74ebcf5c3f 100644
--- a/packages/clamav/clamav-0.90.2/clamd.conf
+++ b/packages/clamav/files/clamd.conf
diff --git a/packages/clamav/clamav-0.90.2/cross-compile-fix.patch b/packages/clamav/files/cross-compile-fix.patch
index f7ab4aa69f..f7ab4aa69f 100644
--- a/packages/clamav/clamav-0.90.2/cross-compile-fix.patch
+++ b/packages/clamav/files/cross-compile-fix.patch
diff --git a/packages/clamav/clamav-0.90.2/freshclam.conf b/packages/clamav/files/freshclam.conf
index fd45b0dd85..fd45b0dd85 100644
--- a/packages/clamav/clamav-0.90.2/freshclam.conf
+++ b/packages/clamav/files/freshclam.conf
diff --git a/packages/classpath/classpath-gtk_0.90.bb b/packages/classpath/classpath-gtk_0.90.bb
deleted file mode 100644
index b83d23d9c0..0000000000
--- a/packages/classpath/classpath-gtk_0.90.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require classpath.inc
-
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
-RDEPENDS_${PBN}-gtk = "${PBN}-common (>= ${PV})"
-RCONFLICTS_${PBN}-gtk = "${PBN}-minimal"
-
-EXTRA_OECONF = "--with-jikes"
-
-PACKAGES = "${PBN}-dev ${PBN}-doc ${PBN}-common ${PBN}-examples ${PBN}-tools ${PN}"
-
-FILES_${PBN}-doc = "${datadir}/info"
-FILES_${PBN}-dev = "${includedir}"
-FILES_${PN} = "${libdir}"
-FILES_${PBN}-common = "${datadir}/${PBN}/glibj.zip"
-FILES_${PBN}-examples = "${datadir}/${PBN}/examples"
-FILES_${PBN}-tools = "${datadir}/${PBN}/tools"
diff --git a/packages/classpath/classpath-gtk_0.93.bb b/packages/classpath/classpath-gtk_0.93.bb
new file mode 100644
index 0000000000..137ee8ffb2
--- /dev/null
+++ b/packages/classpath/classpath-gtk_0.93.bb
@@ -0,0 +1,18 @@
+require classpath.inc
+
+DEPENDS = "glib-2.0 gtk+ cairo gconf libart-lgpl pango libxtst jikes-native zip-native"
+RDEPENDS_${PN} = "classpath-common (>= ${PV})"
+RCONFLICTS_${PN} = "classpath-minimal"
+
+SRC_URI += "file://gconf_version.patch;patch=1"
+
+EXTRA_OECONF = "--with-jikes --disable-plugin --disable-dssi"
+
+PACKAGES = "classpath-dev classpath-doc classpath-common classpath-examples classpath-tools ${PN}"
+
+FILES_classpath-doc = "${datadir}/info"
+FILES_classpath-dev = "${includedir}"
+FILES_${PN} = "${libdir} ${bindir}"
+FILES_classpath-common = "${datadir}/classpath/glibj.zip"
+FILES_classpath-examples = "${datadir}/classpath/examples"
+FILES_classpath-tools = "${datadir}/classpath/tools.zip"
diff --git a/packages/classpath/classpath-gtk_cvs.bb b/packages/classpath/classpath-gtk_cvs.bb
new file mode 100644
index 0000000000..53f494ab15
--- /dev/null
+++ b/packages/classpath/classpath-gtk_cvs.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "GNU Classpath standard Java libraries"
+HOMEPAGE = "http://www.gnu.org/software/classpath/"
+LICENSE = "Classpath"
+PRIORITY = "optional"
+SECTION = "libs"
+PR = "r1"
+
+SRCDATE_${PN} ?= "20070501"
+PV = "0.93+cvs${SRCDATE}"
+
+DEPENDS = "glib-2.0 gtk+ cairo gconf ecj-native zip-native"
+RDEPENDS_${PN} = "classpath-common (>= ${PV})"
+RCONFLICTS_${PN} = "classpath-minimal"
+
+SRC_URI = "cvs://anonymous@cvs.savannah.gnu.org/sources/classpath;module=classpath \
+ file://disable-automake-checks-v2.patch;patch=1"
+
+S = "${WORKDIR}/classpath"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-ecj=${STAGING_BINDIR_NATIVE}/ecj --with-ecj-jar=${STAGING_BINDIR_NATIVE}/ecj.jar --disable-plugin --disable-dssi --disable-alsa"
+
+PACKAGES = "classpath-dev classpath-doc classpath-common classpath-examples classpath-tools ${PN}"
+
+FILES_classpath-doc = "${datadir}/info ${datadir}/man"
+FILES_classpath-dev = "${includedir}"
+FILES_${PN} = "${libdir} ${bindir}"
+FILES_classpath-common = "${datadir}/classpath/glibj.zip"
+FILES_classpath-examples = "${datadir}/classpath/examples"
+FILES_classpath-tools = "${datadir}/classpath/tools.zip"
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/classpath
+ install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
+ install -d ${STAGING_DATADIR}/classpath
+ install -m 0755 lib/glibj.zip ${STAGING_DATADIR}/classpath/
+}
+
+do_install() {
+ autotools_do_install
+ mv ${D}${libdir}/security ${D}${libdir}/${PN}
+}
+
+PROVIDES = "classpath"
+RPROVIDES = "classpath"
diff --git a/packages/classpath/classpath-minimal-native_0.93.bb b/packages/classpath/classpath-minimal-native_0.93.bb
new file mode 100644
index 0000000000..8a08a6c1ce
--- /dev/null
+++ b/packages/classpath/classpath-minimal-native_0.93.bb
@@ -0,0 +1,20 @@
+require classpath.inc
+
+DEPENDS = "glib-2.0 libart-lgpl pango libxtst jikes-native zip-native"
+
+SRC_URI += "file://gconf_version.patch;patch=1"
+
+inherit native
+
+EXTRA_OECONF = "--with-jikes --disable-gconf-peer --disable-gtk-peer --disable-plugin --disable-dssi --disable-examples"
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/classpath
+ install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
+ install -d ${STAGING_DATADIR}/classpath
+ install -m 0755 lib/glibj.zip ${STAGING_DATADIR}/classpath/
+}
+
+do_install() {
+ :
+}
diff --git a/packages/classpath/classpath.inc b/packages/classpath/classpath.inc
index 303c286d4e..e66f5d7456 100644
--- a/packages/classpath/classpath.inc
+++ b/packages/classpath/classpath.inc
@@ -1,17 +1,15 @@
DESCRIPTION = "GNU Classpath standard Java libraries"
HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "Classpath"
+PROVIDES = "classpath"
+RPROVIDES = "classpath"
-PBN = "classpath"
-
-SRC_URI = "${GNU_MIRROR}/classpath/${PBN}-${PV}.tar.gz \
+SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz \
file://disable-automake-checks.patch;patch=1 \
file://fix-endian-arm-floats.patch;patch=1"
-S = "${WORKDIR}/${PBN}-${PV}"
-
inherit autotools
do_stage() {
@@ -21,8 +19,11 @@ do_stage() {
do_install() {
autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PBN}
+ mv ${D}${libdir}/security ${D}${libdir}/${PN}
}
-PROVIDES = "classpath"
-RPROVIDES = "classpath"
+PACKAGES =+ "classpath-common classpath-examples classpath-tools"
+FILES_classpath-common += "${datadir}/classpath/glibj.zip"
+FILES_classpath-examples += "${datadir}/classpath/examples"
+FILES_classpath-tools += "${datadir}/classpath/tools.zip ${datadir}/classpath/tools"
+FILES_classpath-dev += "${libdir}/*.so"
diff --git a/packages/classpath/classpath_0.14.bb b/packages/classpath/classpath_0.14.bb
index 439d973cc8..e4d73bbd3a 100644
--- a/packages/classpath/classpath_0.14.bb
+++ b/packages/classpath/classpath_0.14.bb
@@ -1,32 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
-PR = "r1"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
+PR = "r2"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/classpath_0.15.bb b/packages/classpath/classpath_0.15.bb
index 439d973cc8..e4d73bbd3a 100644
--- a/packages/classpath/classpath_0.15.bb
+++ b/packages/classpath/classpath_0.15.bb
@@ -1,32 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
-PR = "r1"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
+PR = "r2"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/classpath_0.17.bb b/packages/classpath/classpath_0.17.bb
index a28591ac0d..e4d73bbd3a 100644
--- a/packages/classpath/classpath_0.17.bb
+++ b/packages/classpath/classpath_0.17.bb
@@ -1,32 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
-PR = "r1"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
+PR = "r2"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/classpath_0.18.bb b/packages/classpath/classpath_0.18.bb
index a9a2b2cd2d..9b9e8c3451 100644
--- a/packages/classpath/classpath_0.18.bb
+++ b/packages/classpath/classpath_0.18.bb
@@ -1,31 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
+PR = "r1"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/classpath_0.19.bb b/packages/classpath/classpath_0.19.bb
index a9a2b2cd2d..9b9e8c3451 100644
--- a/packages/classpath/classpath_0.19.bb
+++ b/packages/classpath/classpath_0.19.bb
@@ -1,31 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
+PR = "r1"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/classpath_0.20.bb b/packages/classpath/classpath_0.20.bb
index a9a2b2cd2d..9b9e8c3451 100644
--- a/packages/classpath/classpath_0.20.bb
+++ b/packages/classpath/classpath_0.20.bb
@@ -1,31 +1,10 @@
-DESCRIPTION = "GNU Classpath standard Java libraries"
-HOMEPAGE = "http://www.gnu.org/software/classpath/"
-LICENSE = "Classpath"
-PRIORITY = "optional"
-SECTION = "libs"
+require classpath.inc
DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
+PR = "r1"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
file://disable-automake-checks.patch;patch=1"
-inherit autotools
-
EXTRA_OECONF = "--with-jikes"
-
-PACKAGES += " ${PN}-common ${PN}-examples"
-
-FILES_${PN} = "${libdir}/${PN}"
-FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"
-FILES_${PN}-examples = "${datadir}/${PN}/examples"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
-}
-
-do_install() {
- autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
-}
diff --git a/packages/classpath/files/disable-automake-checks-v2.patch b/packages/classpath/files/disable-automake-checks-v2.patch
new file mode 100644
index 0000000000..0c1df1acae
--- /dev/null
+++ b/packages/classpath/files/disable-automake-checks-v2.patch
@@ -0,0 +1,11 @@
+--- sablevm-classpath-1.1.7/configure.ac.orig 2004-11-26 00:23:01.000000000 +0100
++++ sablevm-classpath-1.1.7/configure.ac 2004-11-26 00:23:46.000000000 +0100
+@@ -34,7 +34,7 @@
+ AC_SUBST(CLASSPATH_MODULE)
+
+ AC_PREREQ(2.59)
+-AM_INIT_AUTOMAKE([1.9.0 gnu std-options tar-ustar -Wno-portability])
++AM_INIT_AUTOMAKE
+ AC_CONFIG_HEADERS([include/config.h])
+ AC_PREFIX_DEFAULT(/usr/local)
+
diff --git a/packages/classpath/files/gconf_version.patch b/packages/classpath/files/gconf_version.patch
new file mode 100644
index 0000000000..b1be1209a2
--- /dev/null
+++ b/packages/classpath/files/gconf_version.patch
@@ -0,0 +1,11 @@
+--- classpath-0.93/configure.ac~ 2007-03-29 15:52:30.000000000 -0500
++++ classpath-0.93/configure.ac 2007-03-29 15:52:30.000000000 -0500
+@@ -496,7 +496,7 @@
+
+ dnl gconf-peer
+ if test "x${COMPILE_GCONF_PEER}" = xyes; then
+- PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.11.2)
++ PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.6.0)
+ AC_SUBST(GCONF_CFLAGS)
+ AC_SUBST(GCONF_LIBS)
+ dnl we also need gdk for locking
diff --git a/packages/clish/clish_0.7.1.bb b/packages/clish/clish_0.7.1.bb
index 2fc7020a4c..90757de6dc 100644
--- a/packages/clish/clish_0.7.1.bb
+++ b/packages/clish/clish_0.7.1.bb
@@ -1,10 +1,14 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
DESCRIPTION = "modular framework for implementing a CISCO-like CLI on a *NIX system"
LICENSE = "GPL"
SECTION = "console/utils"
-PR="r0"
+PR="r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/clish/clish-0.7.1.tar.gz"
+PARALLEL_MAKE=""
+
S = "${WORKDIR}/clish-${PV}"
inherit autotools
diff --git a/packages/curl/curl_7.15.1.bb b/packages/curl/curl_7.15.1.bb
index 38050a71f1..5af2dfa7e1 100644
--- a/packages/curl/curl_7.15.1.bb
+++ b/packages/curl/curl_7.15.1.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Command line tool and library for client-side URL transfers."
LICENSE = "MIT"
-DEPENDS = "zlib"
+DEPENDS = "zlib gnutls"
SECTION = "console/network"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2"
S = "${WORKDIR}/curl-${PV}"
@@ -12,7 +12,9 @@ inherit autotools pkgconfig binconfig
EXTRA_OECONF = "--with-zlib=${STAGING_LIBDIR}/../ \
--without-ssl \
--with-random=/dev/urandom \
- --without-idn"
+ --without-idn \
+ --enable-crypto-auth \
+ "
do_stage () {
install -d ${STAGING_INCDIR}/curl
diff --git a/packages/debianutils/debianutils_2.19.bb b/packages/debianutils/debianutils_2.19.bb
new file mode 100644
index 0000000000..30beb5d4ed
--- /dev/null
+++ b/packages/debianutils/debianutils_2.19.bb
@@ -0,0 +1,5 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require debianutils.inc
+PR="r0"
diff --git a/packages/display-brightness/display-brightness.sh b/packages/display-brightness/display-brightness.sh
index 5e1a0e97d4..a82c748309 100644
--- a/packages/display-brightness/display-brightness.sh
+++ b/packages/display-brightness/display-brightness.sh
@@ -28,6 +28,8 @@ if [ "$1" = "up" ]; then
if [ $ACTUAL_BRIGHTNESS -eq $MAX_BRIGHTNESS ]; then
exit 0
else
+
+ test -x /usr/bin/bl && bl on
test "$STEP" -gt "$MAX_BRIGHTNESS" -o "$STEP" -eq "$MAX_BRIGHTNESS" && STEP=1
let CURRENT_BRIGHTNESS=$ACTUAL_BRIGHTNESS+$STEP
echo $CURRENT_BRIGHTNESS >> $BRIGHTNESS_FILE
diff --git a/packages/display-brightness/display-brightness_1.0.0.bb b/packages/display-brightness/display-brightness_1.0.0.bb
index aa3c0995e9..bc46c16631 100644
--- a/packages/display-brightness/display-brightness_1.0.0.bb
+++ b/packages/display-brightness/display-brightness_1.0.0.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "display brightness utility"
AUTHOR = "Patrick Steiner <patrick.steiner@a1.net>"
DEPENDS = ""
PRIORITY = "optional"
-PR = "r2"
+PR = "r3"
LICENSE = "GPLv2"
SRC_URI = "file://display-brightness.sh"
diff --git a/packages/e17/e-wm_0.16.999.037.bb b/packages/e17/e-wm_0.16.999.038.bb
index 0ccd0c67f2..cf25ad08e8 100644
--- a/packages/e17/e-wm_0.16.999.037.bb
+++ b/packages/e17/e-wm_0.16.999.038.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "E17 - the Enlightenment Window Mananger"
-DEPENDS = "evas-x11 ecore-x11 edje eet embryo"
+DEPENDS = "evas-x11 ecore-x11 edje eet embryo efreet"
LICENSE = "MIT"
PR = "r5"
diff --git a/packages/gcc/gcc-4.2-20060513/.mtn2git_empty b/packages/e17/entrance-0.9.0.009/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gcc/gcc-4.2-20060513/.mtn2git_empty
+++ b/packages/e17/entrance-0.9.0.009/.mtn2git_empty
diff --git a/packages/e17/entrance-0.9.0.009/Xserver.patch b/packages/e17/entrance-0.9.0.009/Xserver.patch
new file mode 100644
index 0000000000..296a7bccf4
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/Xserver.patch
@@ -0,0 +1,22 @@
+--- entrance/src/daemon/Entranced.h.~1.7.~ 2004-05-19 21:02:09.000000000 -0700
++++ entrance/src/daemon/Entranced.h 2005-08-13 02:00:02.000000000 -0700
+@@ -18,7 +18,7 @@
+
+ #define ENTRANCED_DEBUG 1
+
+-#define X_SERVER "/usr/X11R6/bin/X -quiet"
++#define X_SERVER "/etc/X11/Xserver"
+ //#define X_SERVER "/usr/X11R6/bin/Xnest -full"
+ #define X_DISP ":0" /* only used if DISPLAY variable is NOT set */
+ #define ENTRANCE PREFIX "/bin/entrance_wrapper"
+--- entrance/src/daemon/spawner.c.~1.25.~ 2005-05-28 02:31:14.000000000 -0700
++++ entrance/src/daemon/spawner.c 2005-08-13 02:20:13.000000000 -0700
+@@ -155,7 +155,7 @@
+ sigaction(SIGUSR1, &_entrance_x_sa, NULL);
+ /* FIXME: need to parse command and NOT go thru /bin/sh!!!! */
+ /* why? some /bin/sh's wont pass on this SIGUSR1 thing... */
+- execl("/bin/sh", "/bin/sh", "-c", x_cmd, NULL);
++ execl("/bin/bash", "/bin/bash", "-c", x_cmd, NULL);
+ syslog(LOG_WARNING, "Could not execute X server.");
+ exit(1);
+ default:
diff --git a/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch b/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch
new file mode 100644
index 0000000000..74289ad3c8
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch
@@ -0,0 +1,19 @@
+Index: entrance-0.9.0.009/configure.in
+===================================================================
+--- entrance-0.9.0.009.orig/configure.in
++++ entrance-0.9.0.009/configure.in
+@@ -184,10 +184,10 @@ AC_ARG_WITH(xsession,
+ fi
+ ]
+ )
+-if test ! -x "$xsession" ; then
+- AC_MSG_WARN([** $xsession does not exist or is not executable **])
+- AC_MSG_WARN([** Please consider overriding with --with-xsession **])
+-fi
++#if test ! -x "$xsession" ; then
++# AC_MSG_WARN([** $xsession does not exist or is not executable **])
++# AC_MSG_WARN([** Please consider overriding with --with-xsession **])
++#fi
+
+ AC_DEFINE_UNQUOTED(ENTRANCE_XSESSION, "$xsession", [Xsession script])
+ AC_SUBST(xsession)
diff --git a/packages/e17/entrance-0.9.0.009/config-db.patch b/packages/e17/entrance-0.9.0.009/config-db.patch
new file mode 100644
index 0000000000..aecbfb6867
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/config-db.patch
@@ -0,0 +1,119 @@
+Index: entrance-0.9.0.009/data/config/build_config.sh.in
+===================================================================
+--- entrance-0.9.0.009.orig/data/config/build_config.sh.in
++++ entrance-0.9.0.009/data/config/build_config.sh.in
+@@ -1,45 +1,45 @@
+ #!/bin/sh -e
+
+-usage() {
+- cat <<-EOF
+- Usage: $0 [options]
+-
+- Options:
+- -d, --dir Session directory to scan
+- -c, --file Config file (default: $DB)
+- -h, --help This help output :p
+- EOF
+-
+- if [ "$1" = "1" ] ; then
+- echo ""
+- echo "ERROR: $2"
+- fi
+-
+- exit $1
+-}
+-
+-SESSION_DIR=""
+-DB="./entrance_config.cfg"
+-
+-while [ -n "$1" ] ; do
+- case $1 in
+- -d) shift; SESSION_DIR=$1;;
+- -c) shift; DB=$1;;
+- -h) usage 0;;
+- *) usage 1 "Unknown option: $1";;
+- esac
+- shift
+-done
+-
+-if [ -z "$DB" ] || [ -d "$DB" ] ; then
+- usage 1 "Invalid DB argument"
+-fi
+-
+-FROM=$SESSION_DIR
+-if [ -z "$FROM" ] ; then
+- FROM="defaults"
+-fi
+-echo "Generating config file '$DB' from '$FROM' ..."
++#usage() {
++# cat <<-EOF
++# Usage: $0 [options]
++#
++# Options:
++# -d, --dir Session directory to scan
++# -c, --file Config file (default: $DB)
++# -h, --help This help output :p
++# EOF
++#
++# if [ "$1" = "1" ] ; then
++# echo ""
++# echo "ERROR: $2"
++# fi
++#
++# exit $1
++#}
++#
++#SESSION_DIR=""
++#DB="./entrance_config.cfg"
++#
++#while [ -n "$1" ] ; do
++# case $1 in
++# -d) shift; SESSION_DIR=$1;;
++# -c) shift; DB=$1;;
++# -h) usage 0;;
++# *) usage 1 "Unknown option: $1";;
++# esac
++# shift
++#done
++#
++#if [ -z "$DB" ] || [ -d "$DB" ] ; then
++# usage 1 "Invalid DB argument"
++#fi
++#
++#FROM=$SESSION_DIR
++#if [ -z "$FROM" ] ; then
++# FROM="defaults"
++#fi
++#echo "Generating config file '$DB' from '$FROM' ..."
+
+ rm -f $DB || exit 1
+
+@@ -59,10 +59,10 @@ ecore_config -c $DB -k /entrance/time_fo
+ #ecore_config -c $DB -k /entrance/fonts/0/-s -s "/usr/share/fonts/truetype/"
+ #ecore_config -c $DB -k /entrance/fonts/1/-s -s "/usr/X11R6/lib/X11/fonts/Truetype/"
+ ecore_config -c $DB -k /entrance/greeting/before -s "Welcome to"
+-ecore_config -c $DB -k /entrance/greeting/after -s ""
++ecore_config -c $DB -k /entrance/greeting/after -s " e17/OE"
+
+ count=0
+-ecore_config -c $DB -k /entrance/session/0/session -s "default"
++ecore_config -c $DB -k /entrance/session/0/session -s "/etc/X11/Sessions/Enlightenment"
+ ecore_config -c $DB -k /entrance/session/0/title -s "Default"
+ ecore_config -c $DB -k /entrance/session/0/icon -s "default.png"
+ #if [ -z "$SESSION_DIR" ] ; then
+@@ -92,7 +92,7 @@ ecore_config -c $DB -k /entrance/session
+ # done
+ #fi
+ count=`(expr $count + 1)`
+-ecore_config -c $DB -k /entrance/session/$count/session -s "failsafe"
++ecore_config -c $DB -k /entrance/session/$count/session -s "/etc/X11/Sessions/Enlightenment"
+ ecore_config -c $DB -k /entrance/session/$count/title -s "Failsafe"
+ ecore_config -c $DB -k /entrance/session/$count/icon -s "failsafe.png"
+ count=`(expr $count + 1)`
+@@ -107,5 +107,5 @@ ecore_config -c $DB -k /entrance/autolog
+ ecore_config -c $DB -k /entrance/presel/mode -i 1
+
+ # for Entranced
+-ecore_config -c $DB -k /entranced/xserver -s "@xbin@/X -quiet -nolisten tcp@ENTRANCE_VT_ARG@"
++ecore_config -c $DB -k /entranced/xserver -s "/etc/X11/Xserver"
+ ecore_config -c $DB -k /entranced/attempts -i 5
diff --git a/packages/e17/entrance-0.9.0.009/disable-autodetect.patch b/packages/e17/entrance-0.9.0.009/disable-autodetect.patch
new file mode 100644
index 0000000000..a0412b3706
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/disable-autodetect.patch
@@ -0,0 +1,8 @@
+diff -Nur entrance-0.9.0.007~/Makefile.am entrance-0.9.0.007/Makefile.am
+--- entrance-0.9.0.007~/Makefile.am 2006-05-11 12:18:07.000000000 -0700
++++ entrance-0.9.0.007/Makefile.am 2006-05-11 13:01:41.000000000 -0700
+@@ -23,4 +23,3 @@
+ fi
+
+ install-data-am:
+- sh data/config/autodetect.sh || :
diff --git a/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch b/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch
new file mode 100644
index 0000000000..46e530b256
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch
@@ -0,0 +1,13 @@
+Index: entrance-0.9.0.009/data/config/build_config.sh.in
+===================================================================
+--- entrance-0.9.0.009.orig/data/config/build_config.sh.in
++++ entrance-0.9.0.009/data/config/build_config.sh.in
+@@ -44,7 +44,7 @@
+ rm -f $DB || exit 1
+
+ # set auth to 1 for pam, 2 for shadow
+-ecore_config -c $DB -k /entrance/auth -i @auth_mode@
++ecore_config -c $DB -k /entrance/auth -i 0
+
+ # uncomment the below to enable experimental OpenGL hardware acceleration
+ #ecore_config -c $DB -k /entrance/engine -i 1
diff --git a/packages/e17/entrance-0.9.0.009/run-Xinit.patch b/packages/e17/entrance-0.9.0.009/run-Xinit.patch
new file mode 100644
index 0000000000..1d6c2307f7
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/run-Xinit.patch
@@ -0,0 +1,17 @@
+--- entrance/src/daemon/entrance_wrapper.in.~1.1.~ 2003-01-31 13:57:06.000000000 -0800
++++ entrance/src/daemon/entrance_wrapper.in 2005-08-15 20:13:57.000000000 -0700
+@@ -5,8 +5,13 @@
+
+ test -f /etc/profile && . /etc/profile
+
++if [ -x /etc/X11/Xinit.d/99gpe-login ]; then
++ chmod -x /etc/X11/Xinit.d/99gpe-login
++fi
++
++/etc/X11/Xinit
++
+ exec @prefix@/bin/entrance "$@"
+
+ #fallback
+ exec entrance "$@"
+-
diff --git a/packages/e17/entrance-0.9.0.009/set-display-env.patch b/packages/e17/entrance-0.9.0.009/set-display-env.patch
new file mode 100644
index 0000000000..37bfc1c2c8
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/set-display-env.patch
@@ -0,0 +1,11 @@
+diff -Nur entrance~/src/daemon/spawner.c entrance/src/daemon/spawner.c
+--- entrance~/src/daemon/spawner.c 2005-09-02 14:00:29.000000000 -0700
++++ entrance/src/daemon/spawner.c 2005-09-02 15:53:31.000000000 -0700
+@@ -199,6 +199,7 @@
+ free(d->client.homedir);
+ d->client.homedir = NULL;
+
++ setenv("DISPLAY", d->name, 1);
+ snprintf(entrance_cmd, PATH_MAX, "%s -d %s", ENTRANCE, d->name);
+ if (d->config)
+ snprintf(entrance_cmd, PATH_MAX, "%s -d %s -c \"%s\" -z %d",
diff --git a/packages/e17/entrance-0.9.0.009/use-bash.patch b/packages/e17/entrance-0.9.0.009/use-bash.patch
new file mode 100644
index 0000000000..7dfab83711
--- /dev/null
+++ b/packages/e17/entrance-0.9.0.009/use-bash.patch
@@ -0,0 +1,57 @@
+Index: entrance-0.9.0.009/src/client/entrance_session.c
+===================================================================
+--- entrance-0.9.0.009.orig/src/client/entrance_session.c
++++ entrance-0.9.0.009/src/client/entrance_session.c
+@@ -854,7 +854,7 @@ _entrance_session_execute_in_shell(char
+ if (shell && (strlen(shell) > 0))
+ shell_cmd = shell;
+ else
+- shell_cmd = strdup("/bin/sh");
++ shell_cmd = strdup("/bin/bash");
+
+ if (session_name)
+ snprintf(buf, sizeof(buf), "%s %s", session_cmd, session_name);
+@@ -869,9 +869,9 @@ _entrance_session_execute_in_shell(char
+ if (res == -1)
+ /* TODO: should actually hit the user in the face with this message */
+ syslog(LOG_NOTICE,
+- "Neither '%s' or '/bin/sh' are working login shells for user '%s'. Your session may not function properly. ",
++ "Neither '%s' or '/bin/bash' are working login shells for user '%s'. Your session may not function properly. ",
+ shell, user);
+- shell_cmd = strdup("/bin/sh");
++ shell_cmd = strdup("/bin/bash");
+
+ res = execlp(shell_cmd, shell_cmd, "-c", buf, NULL);
+
+Index: entrance-0.9.0.009/src/client/main.c
+===================================================================
+--- entrance-0.9.0.009.orig/src/client/main.c
++++ entrance-0.9.0.009/src/client/main.c
+@@ -453,7 +453,7 @@ reboot_cb(void *data, Evas_Object * o, c
+ {
+ case 0:
+ if (execl
+- ("/bin/sh", "/bin/sh", "-c", "/sbin/shutdown -r now", NULL))
++ ("/bin/bash", "/bin/bash", "-c", "/sbin/shutdown -r now", NULL))
+ {
+ syslog(LOG_CRIT,
+ "Reboot failed: Unable to execute /sbin/shutdown");
+@@ -495,7 +495,7 @@ shutdown_cb(void *data, Evas_Object * o,
+ {
+ case 0:
+ if (execl
+- ("/bin/sh", "/bin/sh", "-c", "/sbin/shutdown -h now", NULL))
++ ("/bin/bash", "/bin/bash", "-c", "/sbin/shutdown -h now", NULL))
+ {
+ syslog(LOG_CRIT,
+ "Shutdown failed: Unable to execute /sbin/shutdown");
+Index: entrance-0.9.0.009/src/daemon/entrance_wrapper.in
+===================================================================
+--- entrance-0.9.0.009.orig/src/daemon/entrance_wrapper.in
++++ entrance-0.9.0.009/src/daemon/entrance_wrapper.in
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ # Wrapper script to set up login environment:
+ # Load up all the junk in /etc/profile first, and then
+ # pass control to entrance proper.
diff --git a/packages/e17/entrance_0.9.0.009.bb b/packages/e17/entrance_0.9.0.009.bb
new file mode 100644
index 0000000000..6e21926860
--- /dev/null
+++ b/packages/e17/entrance_0.9.0.009.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Entrance is the Enlightenment login manager"
+LICENSE = "MIT"
+# can also use pam and crypt
+DEPENDS = "evas-x11 ecore-x11 edje esmart-x11 bash keylaunch xserver-common login-manager"
+RDEPENDS += "bash keylaunch xserver-common glibc-gconv-iso8859-1 login-manager entrance-themes"
+HOMEPAGE = "http://www.enlightenment.org"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit e
+
+SRC_URI = "${E_URI}/entrance-${PV}.tar.gz \
+ file://config-db.patch;patch=1 \
+ file://allow-missing-xsession.patch;patch=1 \
+ file://run-Xinit.patch;patch=1 \
+ file://fix-auth-mode.patch;patch=1 \
+ file://use-bash.patch;patch=1 \
+ file://Sessions"
+# file://disable-autodetect.patch;patch=1 \
+# file://set-display-env.patch;patch=1 \
+
+S = "${WORKDIR}/entrance-${PV}"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+ --with-xsession=/etc/X11/Xsession \
+ --with-auth-mode=0"
+
+FILES_${PN}-dbg += "${libexecdir}/entrance/.debug"
+FILES_${PN} += "${bindir} ${sbindir} /etc ${datadir} ${libexecdir}"
+
+do_install_append() {
+ install -d ${D}/etc/X11/Xsession.d
+ install -d ${D}/etc/X11/Sessions
+
+ install -m 755 ${WORKDIR}/Sessions/* ${D}/etc/X11/Sessions
+
+ install -d ${D}/etc/X11/login-managers/
+ mv ${D}/etc/init.d/entrance ${D}/etc/X11/login-managers/entrance
+}
diff --git a/packages/efl/ecore-fb_0.9.9.037.bb b/packages/efl/ecore-fb_0.9.9.038.bb
index b856d38bd9..b856d38bd9 100644
--- a/packages/efl/ecore-fb_0.9.9.037.bb
+++ b/packages/efl/ecore-fb_0.9.9.038.bb
diff --git a/packages/efl/ecore-native_0.9.9.037.bb b/packages/efl/ecore-native_0.9.9.038.bb
index 7d7ed2370a..7d7ed2370a 100644
--- a/packages/efl/ecore-native_0.9.9.037.bb
+++ b/packages/efl/ecore-native_0.9.9.038.bb
diff --git a/packages/efl/ecore-x11_0.9.9.037.bb b/packages/efl/ecore-x11_0.9.9.038.bb
index 1deb641326..1deb641326 100644
--- a/packages/efl/ecore-x11_0.9.9.037.bb
+++ b/packages/efl/ecore-x11_0.9.9.038.bb
diff --git a/packages/efl/ecore.inc b/packages/efl/ecore.inc
index 7d89435598..60c18cacc3 100644
--- a/packages/efl/ecore.inc
+++ b/packages/efl/ecore.inc
@@ -10,10 +10,10 @@ PROVIDES += "virtual/ecore"
inherit efl
SRC_URI = "http://enlightenment.freedesktop.org/files/ecore-${PV}.tar.gz \
- file://configure.patch;patch=1 \
- file://fix-tslib-configure.patch;patch=1 \
file://ecore_kernel_input_header.patch;patch=1 \
- ${E_CVS};module=e17/libs/ecore/m4;date=20060101"
+ ${E_CVS};module=e17/libs/ecore/m4;date=20070501"
+# file://fix-tslib-configure.patch;patch=1 \
+# file://configure.patch;patch=1 \
S = "${WORKDIR}/ecore-${PV}"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ecore"
@@ -39,7 +39,8 @@ do_stage_append() {
oe_libinstall -C src/lib/$dir lib$dir ${STAGING_LIBDIR}/
done
install -m 0644 ${S}/src/lib/ecore/Ecore_Data.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/ecore.m4 ${STAGING_DATADIR}/aclocal/
+# install -m 0644 ${S}/ecore.m4 ${STAGING_DATADIR}/aclocal/
}
-FILES_${PN} += "${libdir}/libecore*.so* ${libdir}/ecore_config_ipc_ecore.so"
+FILES_${PN} += "${libdir}/ecore_config_ipc_ecore.so.*"
+FILES_${PN}-dev += "${libdir}/ecore_config_ipc_ecore.so"
diff --git a/packages/efl/ecore/configure-abstract-sockets.patch b/packages/efl/ecore/configure-abstract-sockets.patch
index cdd30695e1..359203b163 100644
--- a/packages/efl/ecore/configure-abstract-sockets.patch
+++ b/packages/efl/ecore/configure-abstract-sockets.patch
@@ -1,14 +1,16 @@
---- ecore-0.9.9.036/configure.in~ 2006-11-13 14:05:24.000000000 -0800
-+++ ecore-0.9.9.036/configure.in 2006-11-13 14:18:22.000000000 -0800
-@@ -886,10 +886,7 @@
- )
+Index: ecore-0.9.9.038/configure.in
+===================================================================
+--- ecore-0.9.9.038.orig/configure.in
++++ ecore-0.9.9.038/configure.in
+@@ -541,10 +541,7 @@ AC_ARG_ENABLE(abstract-sockets,
+ [ want_abstract_sockets="yes"]
+ )
+ if test "x$want_abstract_sockets" = "xyes"; then
+- AC_ABSTRACT_SOCKET_TEST(
+- [AC_DEFINE(HAVE_ABSTRACT_SOCKETS, 1, [Have abstract sockets namespace])],
+- []
+- )
++ HAVE_ABSTRACT_SOCKETS = 1
fi
--AC_ABSTRACT_SOCKET_TEST(
-- [AC_DEFINE(HAVE_ABSTRACT_SOCKETS, 1, [Have abstract socket namespace])],
-- []
--)
-+HAVE_ABSTRACT_SOCKETS = 1
-
- want_ecore_ipc="yes";
- have_ecore_ipc="no";
+ ECORE_CHECK_MODULE([Con], [yes])
diff --git a/packages/efl/edje-native_0.5.0.037.bb b/packages/efl/edje-native_0.5.0.038.bb
index 4e878ab204..4e878ab204 100644
--- a/packages/efl/edje-native_0.5.0.037.bb
+++ b/packages/efl/edje-native_0.5.0.038.bb
diff --git a/packages/efl/edje-utils_0.5.0.037.bb b/packages/efl/edje-utils_0.5.0.038.bb
index f8eb917e4d..f8eb917e4d 100644
--- a/packages/efl/edje-utils_0.5.0.037.bb
+++ b/packages/efl/edje-utils_0.5.0.038.bb
diff --git a/packages/efl/edje_0.5.0.037.bb b/packages/efl/edje_0.5.0.038.bb
index d51dd119e4..d51dd119e4 100644
--- a/packages/efl/edje_0.5.0.037.bb
+++ b/packages/efl/edje_0.5.0.038.bb
diff --git a/packages/efl/eet-native_0.9.10.037.bb b/packages/efl/eet-native_0.9.10.038.bb
index 9e2426ca9f..9e2426ca9f 100644
--- a/packages/efl/eet-native_0.9.10.037.bb
+++ b/packages/efl/eet-native_0.9.10.038.bb
diff --git a/packages/efl/eet_0.9.10.037.bb b/packages/efl/eet_0.9.10.038.bb
index 6e6032e098..6e6032e098 100644
--- a/packages/efl/eet_0.9.10.037.bb
+++ b/packages/efl/eet_0.9.10.038.bb
diff --git a/packages/efl/efreet-native_0.0.3.002.bb b/packages/efl/efreet-native_0.0.3.002.bb
new file mode 100644
index 0000000000..470d9e2dab
--- /dev/null
+++ b/packages/efl/efreet-native_0.0.3.002.bb
@@ -0,0 +1,3 @@
+require efreet_${PV}.bb
+inherit native
+DEPENDS = "ecore-native"
diff --git a/packages/efl/efreet_0.0.3.002.bb b/packages/efl/efreet_0.0.3.002.bb
new file mode 100644
index 0000000000..2ef049eed7
--- /dev/null
+++ b/packages/efl/efreet_0.0.3.002.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "An implementation of freedesktop.org specs for the EFL"
+DEPENDS = "virtual/ecore"
+LICENSE = "BSD"
+PR = "r0"
+
+inherit efl
+
+headers += "efreet_base.h efreet_desktop.h efreet_icon.h efreet_ini.h efreet_menu.h efreet_private.h efreet_utils.h efreet_xml.h"
diff --git a/packages/efl/embryo-native_0.9.1.037.bb b/packages/efl/embryo-native_0.9.1.038.bb
index 76fe80fe3d..76fe80fe3d 100644
--- a/packages/efl/embryo-native_0.9.1.037.bb
+++ b/packages/efl/embryo-native_0.9.1.038.bb
diff --git a/packages/efl/embryo-utils_0.9.1.037.bb b/packages/efl/embryo-utils_0.9.1.038.bb
index d507c53cce..d507c53cce 100644
--- a/packages/efl/embryo-utils_0.9.1.037.bb
+++ b/packages/efl/embryo-utils_0.9.1.038.bb
diff --git a/packages/efl/embryo_0.9.1.037.bb b/packages/efl/embryo_0.9.1.038.bb
index 0009c0a149..0009c0a149 100644
--- a/packages/efl/embryo_0.9.1.037.bb
+++ b/packages/efl/embryo_0.9.1.038.bb
diff --git a/packages/efl/epeg_0.9.0.007.bb b/packages/efl/epeg_0.9.0.008.bb
index c35ec63606..c35ec63606 100644
--- a/packages/efl/epeg_0.9.0.007.bb
+++ b/packages/efl/epeg_0.9.0.008.bb
diff --git a/packages/efl/epsilon_0.3.0.007.bb b/packages/efl/epsilon_0.3.0.008.bb
index efadecbf90..1fd7c88744 100644
--- a/packages/efl/epsilon_0.3.0.007.bb
+++ b/packages/efl/epsilon_0.3.0.008.bb
@@ -8,8 +8,8 @@ inherit efl
PR = "r1"
SRC_URI += "file://compile-fix.patch;patch=1 \
- file://server-is-not-client.patch;patch=1 \
${E_CVS};module=e17/libs/epsilon/m4;date=20060101"
+# file://server-is-not-client.patch;patch=1 \
do_configure_prepend() {
install -d "${S}/m4"
diff --git a/packages/efl/esmart-fb_0.9.0.007.bb b/packages/efl/esmart-fb_0.9.0.008.bb
index a2fab3ca09..a2fab3ca09 100644
--- a/packages/efl/esmart-fb_0.9.0.007.bb
+++ b/packages/efl/esmart-fb_0.9.0.008.bb
diff --git a/packages/efl/esmart-x11_0.9.0.007.bb b/packages/efl/esmart-x11_0.9.0.008.bb
index 7b80b581a1..7b80b581a1 100644
--- a/packages/efl/esmart-x11_0.9.0.007.bb
+++ b/packages/efl/esmart-x11_0.9.0.008.bb
diff --git a/packages/efl/evas-fb_0.9.9.037.bb b/packages/efl/evas-fb_0.9.9.038.bb
index 4acc857982..4acc857982 100644
--- a/packages/efl/evas-fb_0.9.9.037.bb
+++ b/packages/efl/evas-fb_0.9.9.038.bb
diff --git a/packages/efl/evas-native_0.9.9.037.bb b/packages/efl/evas-native_0.9.9.038.bb
index 68dacbc809..68dacbc809 100644
--- a/packages/efl/evas-native_0.9.9.037.bb
+++ b/packages/efl/evas-native_0.9.9.038.bb
diff --git a/packages/efl/evas-x11_0.9.9.037.bb b/packages/efl/evas-x11_0.9.9.038.bb
index 765a8b73d4..765a8b73d4 100644
--- a/packages/efl/evas-x11_0.9.9.037.bb
+++ b/packages/efl/evas-x11_0.9.9.038.bb
diff --git a/packages/efl/evas.inc b/packages/efl/evas.inc
index 5e34bb3014..f708200071 100644
--- a/packages/efl/evas.inc
+++ b/packages/efl/evas.inc
@@ -13,8 +13,8 @@ export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config"
SRC_URI = "http://enlightenment.freedesktop.org/files/evas-${PV}.tar.gz \
file://fix-configure.patch;patch=1 \
- file://pagesize.patch;patch=1 \
${E_CVS};module=e17/libs/evas/m4;date=20060101"
+# file://pagesize.patch;patch=1 \
S = "${WORKDIR}/evas-${PV}"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/evas"
diff --git a/packages/efl/ewl_0.0.4.007.bb b/packages/efl/ewl_0.5.1.008.bb
index 3a9313cb59..3a9313cb59 100644
--- a/packages/efl/ewl_0.0.4.007.bb
+++ b/packages/efl/ewl_0.5.1.008.bb
diff --git a/packages/efl/imlib2-fb_1.2.2.001.bb b/packages/efl/imlib2-fb_1.3.0.001.bb
index f2ee48f5d9..f2ee48f5d9 100644
--- a/packages/efl/imlib2-fb_1.2.2.001.bb
+++ b/packages/efl/imlib2-fb_1.3.0.001.bb
diff --git a/packages/efl/imlib2-native_1.2.2.001.bb b/packages/efl/imlib2-native_1.3.0.001.bb
index 65c5b672b2..65c5b672b2 100644
--- a/packages/efl/imlib2-native_1.2.2.001.bb
+++ b/packages/efl/imlib2-native_1.3.0.001.bb
diff --git a/packages/efl/imlib2-x11_1.2.2.001.bb b/packages/efl/imlib2-x11_1.3.0.001.bb
index 67ed947e08..67ed947e08 100644
--- a/packages/efl/imlib2-x11_1.2.2.001.bb
+++ b/packages/efl/imlib2-x11_1.3.0.001.bb
diff --git a/packages/gspcav1/gspcav1-20070110/.mtn2git_empty b/packages/elfutils/elfutils-0.127/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gspcav1/gspcav1-20070110/.mtn2git_empty
+++ b/packages/elfutils/elfutils-0.127/.mtn2git_empty
diff --git a/packages/elfutils/elfutils-0.108/warnings.patch b/packages/elfutils/elfutils-0.127/warnings.patch
index 9de027ee26..c2e7fc2f3d 100644
--- a/packages/elfutils/elfutils-0.108/warnings.patch
+++ b/packages/elfutils/elfutils-0.127/warnings.patch
@@ -2,7 +2,7 @@ Index: elfutils-0.108/configure.ac
===================================================================
--- elfutils-0.108.orig/configure.ac 2006-04-10 19:18:34.000000000 +0100
+++ elfutils-0.108/configure.ac 2006-04-10 19:19:33.000000000 +0100
-@@ -49,6 +49,10 @@
+@@ -55,6 +55,10 @@
dnl Add all the languages for which translations are available.
ALL_LINGUAS=
@@ -17,7 +17,7 @@ Index: elfutils-0.108/lib/Makefile.am
===================================================================
--- elfutils-0.108.orig/lib/Makefile.am 2006-04-10 19:18:34.000000000 +0100
+++ elfutils-0.108/lib/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -21,7 +21,7 @@
+@@ -30,7 +30,7 @@
else
AM_CFLAGS =
endif
@@ -28,15 +28,16 @@ Index: elfutils-0.108/lib/Makefile.am
noinst_LIBRARIES = libeu.a
Index: elfutils-0.108/libasm/Makefile.am
===================================================================
---- elfutils-0.108.orig/libasm/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libasm/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -18,7 +18,7 @@
+--- elfutils-0.127.orig/libasm/Makefile.am 2006-04-10 19:18:34.000000000 +0100
++++ elfutils-0.127/libasm/Makefile.am 2006-04-10 19:19:33.000000000 +0100
+@@ -30,7 +30,7 @@
else
AM_CFLAGS =
endif
--AM_CFLAGS += -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2
- INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \
+-AM_CFLAGS += -std=gnu99 -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2
++AM_CFLAGS += -std=gnu99 -Wshadow -Wunused -Wformat=2
+ INCLUDES = -I. -I$(srcdir) -I.. \
+ -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw\
-I$(top_srcdir)/lib
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
Index: elfutils-0.108/libcpu/Makefile.am
@@ -91,28 +92,6 @@ Index: elfutils-0.108/libelf/Makefile.am
$($(*F)_CFLAGS)
INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I..
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
-Index: elfutils-0.108/src/Makefile.am
-===================================================================
---- elfutils-0.108.orig/src/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/src/Makefile.am 2006-04-10 19:20:19.000000000 +0100
-@@ -15,14 +15,12 @@
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) \
- -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
- if MUDFLAP
--AM_CFLAGS = -Wall -Wshadow -Wunused -Wextra -std=gnu99 -fmudflap \
-+AM_CFLAGS = -Wshadow -Wunused -std=gnu99 -fmudflap \
- $(native_ld_cflags) $(if $($(*F)_no_Wunused),,-Wunused) \
- $(if $($(*F)_no_Wformat),,-Wformat=2)
- else
--AM_CFLAGS = -Wall -Wshadow -std=gnu99 $(native_ld_cflags) \
-- $(if $($(*F)_no_Werror),,-Werror) \
-- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
-- $(if $($(*F)_no_Wformat),,-Wformat=2)
-+AM_CFLAGS = -Wshadow -std=gnu99 $(native_ld_cflags) \
-+ $(if $($(*F)_no_Werror),,-Werror)
- endif
- if MUDFLAP
- libmudflap = -lmudflap
Index: elfutils-0.108/tests/Makefile.am
===================================================================
--- elfutils-0.108.orig/tests/Makefile.am 2006-04-10 19:18:34.000000000 +0100
@@ -121,12 +100,13 @@ Index: elfutils-0.108/tests/Makefile.am
##
DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE
if MUDFLAP
--AM_CFLAGS = -Wall -Werror -std=gnu99 -fmudflap\
+-AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 -fmudflap\
+AM_CFLAGS = -std=gnu99 -fmudflap\
$(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
+ BUILD_RPATH = \$$ORIGIN/../backends
else
--AM_CFLAGS = -Wall -Werror -std=gnu99 \
+-AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 \
+AM_CFLAGS = -std=gnu99 \
$(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
- AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf
+ BUILT_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
endif
diff --git a/packages/elfutils/elfutils_0.108.bb b/packages/elfutils/elfutils_0.108.bb
deleted file mode 100644
index 83acc7dccb..0000000000
--- a/packages/elfutils/elfutils_0.108.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SECTION = "base"
-LICENSE = "OSL"
-DESCRIPTION = "A collection of utilities and DSOs to handle compiled objects."
-DEPENDS = "libtool"
-
-SRC_URI = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/elfutils-${PV}.tar.gz \
- file://warnings.patch;patch=1"
-
-inherit autotools
-
-SOV = "${PV}"
-do_stage () {
- install -m 0644 libelf/libelf.a ${STAGING_LIBDIR}/libelf.a
- install -m 0755 libelf/libelf.so.1 ${STAGING_LIBDIR}/libelf-${SOV}.so
- ln -sf libelf-${SOV}.so ${STAGING_LIBDIR}/libelf.so.1
- ln -sf libelf.so.1 ${STAGING_LIBDIR}/libelf.so
- install -m 0644 libasm/libasm.a ${STAGING_LIBDIR}/libasm.a
- install -m 0755 libasm/libasm.so.1 ${STAGING_LIBDIR}/libasm-${SOV}.so
- ln -sf libasm-${SOV}.so ${STAGING_LIBDIR}/libasm.so.1
- ln -sf libasm.so.1 ${STAGING_LIBDIR}/libasm.so
- install -m 0644 libdw/libdw.a ${STAGING_LIBDIR}/libdw.a
- install -m 0755 libdw/libdw.so.1 ${STAGING_LIBDIR}/libdw-${SOV}.so
- ln -sf libdw-${SOV}.so ${STAGING_LIBDIR}/libdw.so.1
- ln -sf libdw.so.1 ${STAGING_LIBDIR}/libdw.so
- install -m 0644 libebl/libebl.a ${STAGING_LIBDIR}/libebl.a
- install -d ${STAGING_LIBDIR}/elfutils/
- install -m 0755 libebl/libebl_*.so ${STAGING_LIBDIR}/elfutils/
-
- install -m 0644 ${S}/libelf/libelf.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/libelf/gelf.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/libelf/nlist.h ${STAGING_INCDIR}/
- install -d ${STAGING_INCDIR}/elfutils
- install -m 0644 ${S}/libebl/libebl.h ${STAGING_INCDIR}/elfutils/
- install -m 0644 ${S}/libdw/libdw.h ${STAGING_INCDIR}/elfutils/
- install -m 0644 ${S}/libasm/libasm.h ${STAGING_INCDIR}/elfutils/
-}
diff --git a/packages/elfutils/elfutils_0.127.bb b/packages/elfutils/elfutils_0.127.bb
new file mode 100644
index 0000000000..22f3b0ae46
--- /dev/null
+++ b/packages/elfutils/elfutils_0.127.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "A collection of utilities and DSOs to handle compiled objects."
+SECTION = "base"
+LICENSE = "OSL"
+DEPENDS = "libtool"
+
+SRC_URI = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/elfutils-${PV}.tar.gz \
+ file://warnings.patch;patch=1"
+
+inherit autotools
+
+do_stage () {
+ autotools_stage_all
+}
+
+
diff --git a/packages/evince/evince/no-help-dir.patch b/packages/evince/evince/no-help-dir.patch
new file mode 100644
index 0000000000..b242b65f76
--- /dev/null
+++ b/packages/evince/evince/no-help-dir.patch
@@ -0,0 +1,12 @@
+Index: evince-0.9.0/Makefile.am
+===================================================================
+--- evince-0.9.0.orig/Makefile.am 2007-05-30 21:17:51.000000000 +0100
++++ evince-0.9.0/Makefile.am 2007-05-30 21:17:58.000000000 +0100
+@@ -6,7 +6,6 @@
+ properties \
+ shell \
+ po \
+- help \
+ test
+
+ if ENABLE_THUMBNAILER
diff --git a/packages/evince/evince_0.9.0.bb b/packages/evince/evince_0.9.0.bb
index 8689d1d371..64e2e41275 100644
--- a/packages/evince/evince_0.9.0.bb
+++ b/packages/evince/evince_0.9.0.bb
@@ -9,7 +9,8 @@ PR = "r1"
inherit gnome pkgconfig gtk-icon-cache
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/evince/0.9/${PN}-${PV}.tar.bz2 \
- file://no-icon-theme.diff;patch=1;pnum=0"
+ file://no-icon-theme.diff;patch=1;pnum=0 \
+ file://no-help-dir.patch;patch=1"
-EXTRA_OECONF = "--without-libgnome --disable-thumbnailer"
+EXTRA_OECONF = "--without-libgnome --disable-thumbnailer --disable-scrollkeeper"
diff --git a/packages/fbreader/fbreader_0.8.2a.bb b/packages/fbreader/fbreader_0.8.2a.bb
index b21aa7f930..3a0dc543e8 100644
--- a/packages/fbreader/fbreader_0.8.2a.bb
+++ b/packages/fbreader/fbreader_0.8.2a.bb
@@ -8,7 +8,7 @@ PR = "r3"
# The RESOLUTION is defined at compile time which makes
# this package MACHINE specific.
-PACKAGE_ARCH_${PN} = "${MACHINE}"
+PACKAGE_ARCH_${PN} = "${MACHINE_ARCH}"
SRC_URI = "http://only.mawhrin.net/fbreader/fbreader-sources-${PV}.tgz \
file://fbreader-0.8.2a_buildsys_oe.patch;patch=1 \
@@ -21,11 +21,11 @@ READER_GUI = "gpe"
READER_STATUS = "release"
# Set device specific overrides
-RESOLUTION_fic-gta01 = "480x640"
+READER_RESOLUTION_fic-gta01 = "480x640"
FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary"
-CFLAGS_append = " RESOLUTION=${RESOLUTION} INSTALLDIR=/usr"
+CFLAGS_append = " RESOLUTION=${READER_RESOLUTION} INSTALLDIR=/usr"
EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' OE_CFLAGS='${CXXFLAGS}' INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
inherit pkgconfig
@@ -45,6 +45,6 @@ do_configure() {
}
do_install () {
- cd fbreader/${READER_ARCH}; oe_runmake .builddir RESOLUTION=${RESOLUTION}
+ cd fbreader/${READER_ARCH}; oe_runmake .builddir RESOLUTION=${READER_RESOLUTION}
cp -r data/* ${D}
}
diff --git a/packages/ftpd-topfield/ftpd-topfield_0.7.3.bb b/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb
index f86524b8cf..75d963f6da 100755
--- a/packages/ftpd-topfield/ftpd-topfield_0.7.3.bb
+++ b/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb
@@ -4,8 +4,8 @@ HOMEPAGE = "http://sourceforge.net/projects/puppy"
SECTION = "net"
LICENSE = "MIT"
-SRC_URI = "cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=ftpd-topfield;tag=FTPD_TOPFIELD_0_7_3 \
- cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=libtopfield;tag=FTPD_TOPFIELD_0_7_3 \
+SRC_URI = "cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=ftpd-topfield;tag=FTPD_TOPFIELD_0_7_4 \
+ cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=libtopfield;tag=FTPD_TOPFIELD_0_7_4 \
file://init"
# The source will end up in the subdirectory 'ftpd-topfield' - no release name
diff --git a/packages/gaim/pidgin.inc b/packages/gaim/pidgin.inc
index 37fa996b53..072100fdf0 100644
--- a/packages/gaim/pidgin.inc
+++ b/packages/gaim/pidgin.inc
@@ -3,7 +3,7 @@ DESCRIPTION = "multi-protocol instant messaging client"
LICENSE = "GPL"
DEPENDS = "gtk+ ncurses gnutls virtual/libintl gstreamer dbus"
-RRECOMMENDS_${PN} = "libpurple-protocol-irc libpurple-protocol-jabber"
+RRECOMMENDS_${PN} = "libpurple-protocol-irc libpurple-protocol-xmpp"
EXTRA_OECONF = " \
--disable-audio \
@@ -19,16 +19,19 @@ EXTRA_OECONF = " \
--with-gnutls-libs=${STAGING_LIBDIR} \
"
-PACKAGES =+ "libpurple libpurple-dev libpurple-dbg finch finch-dev finch-dbg"
+PACKAGES =+ "libpurple libpurple-dev libpurple-dbg libpurple-liboscar libpurple-libjabber libpurple-logreader finch finch-dev finch-dbg"
LEAD_SONAME = "libpurple.so.0"
-FILES_libpurple = "${libdir}/libpurple*.so.*"
+FILES_libpurple = "${libdir}/libpurple*.so.* /usr/bin/purple-* /etc/gconf/schemas/purple*"
FILES_libpurple-dev = "${libdir}/libpurple* \
${libdir}/purple-2/*.la "
FILES_libpurple-dbg = "${libdir}/.debug/libpurple* \
${libdir}/purple-2/.debug"
-FILES_finch = "${bindir}/finch"
+FILES_libpurple-liboscar = "${libdir}/purple-2/liboscar.so.*"
+FILES_libpurple-libjabber = "${libdir}/purple-2/libjabber.so.*"
+FILES_libpurple-logreader = "${libdir}/purple-2/log_reader.so"
+FILES_finch = "${bindir}/finch /usr/lib/libgnt.so.*"
FILES_finch-dev = "${libdir}/finch/*.la"
FILES_finch-dbg = "${bindir}/.debug/finch \
${libdir}/finch/.debug"
@@ -53,22 +56,22 @@ python populate_packages_prepend () {
do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
output_pattern='pidgin-plugin-%s',
description='Pidgin plugin %s',
- prepend=True)
+ prepend=True, extra_depends='')
do_split_packages(d, purple, '^lib(.*)\.so$',
output_pattern='libpurple-protocol-%s',
description='Libpurple protocol plugin for %s',
- prepend=True)
+ prepend=True, extra_depends='')
do_split_packages(d, purple, '^([^l][^i][^b].*)\.so$',
output_pattern='libpurple-plugin-%s',
description='libpurple plugin %s',
- prepend=True)
+ prepend=True, extra_depends='')
do_split_packages(d, finch, '^([^l][^i][^b].*)\.so$',
output_pattern='finch-plugin-%s',
description='Finch plugin %s',
- prepend=True)
+ prepend=True, extra_depends='')
}
diff --git a/packages/gaim/pidgin_2.0.0.bb b/packages/gaim/pidgin_2.0.1.bb
index a39e7aeaf9..df982a9bf4 100644
--- a/packages/gaim/pidgin_2.0.0.bb
+++ b/packages/gaim/pidgin_2.0.1.bb
@@ -5,4 +5,4 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pidgin/pidgin-${PV}.tar.bz2 \
file://gconf-no-errors.patch;patch=1 \
"
-
+PR = "r1"
diff --git a/packages/gcc/gcc-4.0.2/gcc-4.0.2-atmel.0.99.2.patch b/packages/gcc/gcc-4.0.2/gcc-4.0.2-atmel.0.99.2.patch
new file mode 100644
index 0000000000..273846f565
--- /dev/null
+++ b/packages/gcc/gcc-4.0.2/gcc-4.0.2-atmel.0.99.2.patch
@@ -0,0 +1,21330 @@
+diff -Nrup --ignore-space-change gcc-4.0.2/config.sub gcc-4.0.2-atmel.0.99.2/config.sub
+--- gcc-4.0.2/config.sub 2005-04-25 12:36:56.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/config.sub 2005-06-07 14:59:22.000000000 +0200
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+-timestamp='2005-04-22'
++timestamp='2005-06-07'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -70,7 +70,7 @@ Report bugs and patches to <config-patch
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -230,8 +230,7 @@ case $basic_machine in
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+- | bfin \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+@@ -263,8 +262,7 @@ case $basic_machine in
+ | pyramid \
+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+- | sparcv8 | sparcv9 | sparcv9b \
++ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+@@ -299,8 +297,8 @@ case $basic_machine in
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* \
+- | bfin-* | bs2000-* \
++ | avr-* | avr32-* \
++ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+@@ -338,8 +336,7 @@ case $basic_machine in
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+- | sparclite-* \
++ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+diff -Nrup --ignore-space-change gcc-4.0.2/configure gcc-4.0.2-atmel.0.99.2/configure
+--- gcc-4.0.2/configure 2005-09-13 09:01:28.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/configure 2006-01-20 14:31:15.000000000 +0100
+@@ -1284,6 +1284,9 @@ case "${target}" in
+ arm-*-riscix*)
+ noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
+ ;;
++ avr32-*-*)
++ noconfigdirs="$noconfigdirs target-libiberty target-libmudflap target-libffi ${libgcj}"
++ ;;
+ avr-*-*)
+ noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ ;;
+@@ -1804,7 +1807,7 @@ else
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1808: checking for $ac_word" >&5
++echo "configure:1811: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1834,7 +1837,7 @@ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1838: checking for $ac_word" >&5
++echo "configure:1841: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1885,7 +1888,7 @@ fi
+ # Extract the first word of "cl", so it can be a program name with args.
+ set dummy cl; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1889: checking for $ac_word" >&5
++echo "configure:1892: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1917,7 +1920,7 @@ fi
+ fi
+
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+-echo "configure:1921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
++echo "configure:1924: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ ac_ext=c
+ # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+@@ -1928,12 +1931,12 @@ cross_compiling=$ac_cv_prog_cc_cross
+
+ cat > conftest.$ac_ext << EOF
+
+-#line 1932 "configure"
++#line 1935 "configure"
+ #include "confdefs.h"
+
+ main(){return(0);}
+ EOF
+-if { (eval echo configure:1937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+@@ -1959,12 +1962,12 @@ if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+ fi
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+-echo "configure:1963: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
++echo "configure:1966: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+ cross_compiling=$ac_cv_prog_cc_cross
+
+ echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+-echo "configure:1968: checking whether we are using GNU C" >&5
++echo "configure:1971: checking whether we are using GNU C" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1973,7 +1976,7 @@ else
+ yes;
+ #endif
+ EOF
+-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+ else
+ ac_cv_prog_gcc=no
+@@ -1992,7 +1995,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+-echo "configure:1996: checking whether ${CC-cc} accepts -g" >&5
++echo "configure:1999: checking whether ${CC-cc} accepts -g" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2059,7 +2062,7 @@ fi
+ # Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2063: checking for $ac_word" >&5
++echo "configure:2066: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2091,7 +2094,7 @@ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "gnatbind", so it can be a program name with args.
+ set dummy gnatbind; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2095: checking for $ac_word" >&5
++echo "configure:2098: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2124,7 +2127,7 @@ fi
+ fi
+
+ echo $ac_n "checking whether compiler driver understands Ada""... $ac_c" 1>&6
+-echo "configure:2128: checking whether compiler driver understands Ada" >&5
++echo "configure:2131: checking whether compiler driver understands Ada" >&5
+ if eval "test \"`echo '$''{'acx_cv_cc_gcc_supports_ada'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2156,7 +2159,7 @@ else
+ fi
+
+ echo $ac_n "checking how to compare bootstrapped objects""... $ac_c" 1>&6
+-echo "configure:2160: checking how to compare bootstrapped objects" >&5
++echo "configure:2163: checking how to compare bootstrapped objects" >&5
+ if eval "test \"`echo '$''{'gcc_cv_prog_cmp_skip'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2254,9 +2257,9 @@ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $gmpinc"
+ # Check GMP actually works
+ echo $ac_n "checking for correct version of gmp.h""... $ac_c" 1>&6
+-echo "configure:2258: checking for correct version of gmp.h" >&5
++echo "configure:2261: checking for correct version of gmp.h" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 2260 "configure"
++#line 2263 "configure"
+ #include "confdefs.h"
+ #include "gmp.h"
+ int main() {
+@@ -2267,7 +2270,7 @@ choke me
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ echo "$ac_t""yes" 1>&6
+ else
+@@ -2280,12 +2283,12 @@ rm -f conftest*
+
+ if test x"$have_gmp" = xyes; then
+ echo $ac_n "checking for MPFR""... $ac_c" 1>&6
+-echo "configure:2284: checking for MPFR" >&5
++echo "configure:2287: checking for MPFR" >&5
+
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $gmplibs"
+ cat > conftest.$ac_ext <<EOF
+-#line 2289 "configure"
++#line 2292 "configure"
+ #include "confdefs.h"
+ #include <gmp.h>
+ #include <mpfr.h>
+@@ -2293,7 +2296,7 @@ int main() {
+ mpfr_t n; mpfr_init(n);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ echo "$ac_t""yes" 1>&6
+ else
+@@ -2789,7 +2792,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2793: checking for $ac_word" >&5
++echo "configure:2796: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_BISON'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2824,7 +2827,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2828: checking for $ac_word" >&5
++echo "configure:2831: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_YACC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2859,7 +2862,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2863: checking for $ac_word" >&5
++echo "configure:2866: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_M4'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2894,7 +2897,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2898: checking for $ac_word" >&5
++echo "configure:2901: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_FLEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2929,7 +2932,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2933: checking for $ac_word" >&5
++echo "configure:2936: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_LEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2964,7 +2967,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2968: checking for $ac_word" >&5
++echo "configure:2971: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_MAKEINFO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3611,7 +3614,7 @@ test -n "$target_alias" && ncn_target_to
+ # Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3615: checking for $ac_word" >&5
++echo "configure:3618: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3644,7 +3647,7 @@ if test -z "$ac_cv_prog_AR" ; then
+ # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3648: checking for $ac_word" >&5
++echo "configure:3651: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3683,7 +3686,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3687: checking for $ac_word" >&5
++echo "configure:3690: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3716,7 +3719,7 @@ if test -z "$ac_cv_prog_AS" ; then
+ # Extract the first word of "as", so it can be a program name with args.
+ set dummy as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3720: checking for $ac_word" >&5
++echo "configure:3723: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3755,7 +3758,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3759: checking for $ac_word" >&5
++echo "configure:3762: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3788,7 +3791,7 @@ if test -z "$ac_cv_prog_DLLTOOL" ; then
+ # Extract the first word of "dlltool", so it can be a program name with args.
+ set dummy dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3792: checking for $ac_word" >&5
++echo "configure:3795: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3827,7 +3830,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3831: checking for $ac_word" >&5
++echo "configure:3834: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3860,7 +3863,7 @@ if test -z "$ac_cv_prog_LD" ; then
+ # Extract the first word of "ld", so it can be a program name with args.
+ set dummy ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3864: checking for $ac_word" >&5
++echo "configure:3867: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3899,7 +3902,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3903: checking for $ac_word" >&5
++echo "configure:3906: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3932,7 +3935,7 @@ if test -z "$ac_cv_prog_NM" ; then
+ # Extract the first word of "nm", so it can be a program name with args.
+ set dummy nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3936: checking for $ac_word" >&5
++echo "configure:3939: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3971,7 +3974,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3975: checking for $ac_word" >&5
++echo "configure:3978: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4004,7 +4007,7 @@ if test -z "$ac_cv_prog_RANLIB" ; then
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4008: checking for $ac_word" >&5
++echo "configure:4011: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4043,7 +4046,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4047: checking for $ac_word" >&5
++echo "configure:4050: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4076,7 +4079,7 @@ if test -z "$ac_cv_prog_WINDRES" ; then
+ # Extract the first word of "windres", so it can be a program name with args.
+ set dummy windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4080: checking for $ac_word" >&5
++echo "configure:4083: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4115,7 +4118,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}objcopy; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4119: checking for $ac_word" >&5
++echo "configure:4122: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4148,7 +4151,7 @@ if test -z "$ac_cv_prog_OBJCOPY" ; then
+ # Extract the first word of "objcopy", so it can be a program name with args.
+ set dummy objcopy; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4152: checking for $ac_word" >&5
++echo "configure:4155: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4187,7 +4190,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}objdump; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4191: checking for $ac_word" >&5
++echo "configure:4194: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4220,7 +4223,7 @@ if test -z "$ac_cv_prog_OBJDUMP" ; then
+ # Extract the first word of "objdump", so it can be a program name with args.
+ set dummy objdump; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4224: checking for $ac_word" >&5
++echo "configure:4227: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4266,7 +4269,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4270: checking for $ac_word" >&5
++echo "configure:4273: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_AR_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4299,7 +4302,7 @@ if test -z "$ac_cv_prog_CONFIGURED_AR_FO
+ # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4303: checking for $ac_word" >&5
++echo "configure:4306: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4338,7 +4341,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4342: checking for $ac_word" >&5
++echo "configure:4345: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_AS_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4371,7 +4374,7 @@ if test -z "$ac_cv_prog_CONFIGURED_AS_FO
+ # Extract the first word of "as", so it can be a program name with args.
+ set dummy as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4375: checking for $ac_word" >&5
++echo "configure:4378: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4410,7 +4413,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4414: checking for $ac_word" >&5
++echo "configure:4417: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4443,7 +4446,7 @@ if test -z "$ac_cv_prog_CONFIGURED_DLLTO
+ # Extract the first word of "dlltool", so it can be a program name with args.
+ set dummy dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4447: checking for $ac_word" >&5
++echo "configure:4450: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4482,7 +4485,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4486: checking for $ac_word" >&5
++echo "configure:4489: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_LD_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4515,7 +4518,7 @@ if test -z "$ac_cv_prog_CONFIGURED_LD_FO
+ # Extract the first word of "ld", so it can be a program name with args.
+ set dummy ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4519: checking for $ac_word" >&5
++echo "configure:4522: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4554,7 +4557,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4558: checking for $ac_word" >&5
++echo "configure:4561: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_NM_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4587,7 +4590,7 @@ if test -z "$ac_cv_prog_CONFIGURED_NM_FO
+ # Extract the first word of "nm", so it can be a program name with args.
+ set dummy nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4591: checking for $ac_word" >&5
++echo "configure:4594: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4626,7 +4629,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4630: checking for $ac_word" >&5
++echo "configure:4633: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4659,7 +4662,7 @@ if test -z "$ac_cv_prog_CONFIGURED_RANLI
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4663: checking for $ac_word" >&5
++echo "configure:4666: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4698,7 +4701,7 @@ fi
+ # Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4702: checking for $ac_word" >&5
++echo "configure:4705: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4731,7 +4734,7 @@ if test -z "$ac_cv_prog_CONFIGURED_WINDR
+ # Extract the first word of "windres", so it can be a program name with args.
+ set dummy windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4735: checking for $ac_word" >&5
++echo "configure:4738: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4816,7 +4819,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${
+ NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
+
+ echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
+-echo "configure:4820: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo "configure:4823: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+@@ -4863,7 +4866,7 @@ esac
+ # gcc for stageN-gcc and stagePREV-gcc for stage(N-1). In case this is not
+ # possible, however, we can resort to mv.
+ echo $ac_n "checking if symbolic links between directories work""... $ac_c" 1>&6
+-echo "configure:4867: checking if symbolic links between directories work" >&5
++echo "configure:4870: checking if symbolic links between directories work" >&5
+ if eval "test \"`echo '$''{'gcc_cv_prog_ln_s_dir'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4997,15 +5000,34 @@ trap 'rm -f $CONFIG_STATUS conftest*; ex
+ # Transform confdefs.h into DEFS.
+ # Protect against shell expansion while executing Makefile rules.
+ # Protect against Makefile macro expansion.
+-cat > conftest.defs <<\EOF
+-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
+-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
+-s%\[%\\&%g
+-s%\]%\\&%g
+-s%\$%$$%g
+-EOF
+-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
+-rm -f conftest.defs
++#
++# If the first sed substitution is executed (which looks for macros that
++# take arguments), then we branch to the quote section. Otherwise,
++# look for a macro that doesn't take arguments.
++cat >confdef2opt.sed <<\_ACEOF
++t clear
++: clear
++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
++t quote
++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
++t quote
++d
++: quote
++s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
++s,\[,\\&,g
++s,\],\\&,g
++s,\$,$$,g
++p
++_ACEOF
++# We use echo to avoid assuming a particular line-breaking character.
++# The extra dot is to prevent the shell from consuming trailing
++# line-breaks from the sub-command output. A line-break within
++# single-quotes doesn't work because, if this script is created in a
++# platform that uses two characters for line-breaks (e.g., DOS), tr
++# would break.
++ac_LF_and_DOT=`echo; echo .`
++DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
++rm -f confdef2opt.sed
+
+
+ # Without the "./", some shells look in PATH for config.status.
+diff -Nrup --ignore-space-change gcc-4.0.2/configure.in gcc-4.0.2-atmel.0.99.2/configure.in
+--- gcc-4.0.2/configure.in 2005-09-13 09:01:28.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/configure.in 2006-01-20 14:31:15.000000000 +0100
+@@ -493,6 +493,9 @@ case "${target}" in
+ arm-*-riscix*)
+ noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
+ ;;
++ avr32-*-*)
++ noconfigdirs="$noconfigdirs target-libiberty target-libmudflap target-libffi ${libgcj}"
++ ;;
+ avr-*-*)
+ noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ ;;
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/ada/s-tpopsp-rtems.adb gcc-4.0.2-atmel.0.99.2/gcc/ada/s-tpopsp-rtems.adb
+--- gcc-4.0.2/gcc/ada/s-tpopsp-rtems.adb 2005-01-27 12:56:57.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/ada/s-tpopsp-rtems.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -7,7 +7,7 @@
+ -- --
+ -- B o d y --
+ -- --
+--- $Revision: 1.2 $
++-- $Revision: 3484 $
+ -- --
+ -- Copyright (C) 1991-2003, Florida State University --
+ -- --
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/builtins.c gcc-4.0.2-atmel.0.99.2/gcc/builtins.c
+--- gcc-4.0.2/gcc/builtins.c 2005-08-28 13:08:55.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/builtins.c 2006-03-23 13:29:00.000000000 +0100
+@@ -8387,7 +8387,7 @@ validate_arglist (tree arglist, ...)
+
+ do
+ {
+- code = va_arg (ap, enum tree_code);
++ code = va_arg (ap, int);
+ switch (code)
+ {
+ case 0:
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/calls.c gcc-4.0.2-atmel.0.99.2/gcc/calls.c
+--- gcc-4.0.2/gcc/calls.c 2005-07-25 18:36:33.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/calls.c 2006-03-23 13:29:00.000000000 +0100
+@@ -3353,7 +3353,7 @@ emit_library_call_value_1 (int retval, r
+ for (; count < nargs; count++)
+ {
+ rtx val = va_arg (p, rtx);
+- enum machine_mode mode = va_arg (p, enum machine_mode);
++ enum machine_mode mode = va_arg (p, int);
+
+ /* We cannot convert the arg value to the mode the library wants here;
+ must do it earlier where we know the signedness of the arg. */
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32.c gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.c
+--- gcc-4.0.2/gcc/config/avr32/avr32.c 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.c 2006-11-24 17:13:09.000000000 +0100
+@@ -0,0 +1,7276 @@
++/*
++ Target hooks and helper functions for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++ Initial porting by Anders dland.
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tm.h"
++#include "rtl.h"
++#include "tree.h"
++#include "obstack.h"
++#include "regs.h"
++#include "hard-reg-set.h"
++#include "real.h"
++#include "insn-config.h"
++#include "conditions.h"
++#include "output.h"
++#include "insn-attr.h"
++#include "flags.h"
++#include "reload.h"
++#include "function.h"
++#include "expr.h"
++#include "optabs.h"
++#include "toplev.h"
++#include "recog.h"
++#include "ggc.h"
++#include "except.h"
++#include "c-pragma.h"
++#include "integrate.h"
++#include "tm_p.h"
++#include "langhooks.h"
++
++#include "target.h"
++#include "target-def.h"
++
++#include <ctype.h>
++
++/* Forward definitions of types. */
++typedef struct minipool_node Mnode;
++typedef struct minipool_fixup Mfix;
++
++/* Obstack for minipool constant handling. */
++static struct obstack minipool_obstack;
++static char *minipool_startobj;
++static rtx minipool_vector_label;
++
++/* True if we are currently building a constant table. */
++int making_const_table;
++
++/* Some forward function declarations */
++static unsigned long avr32_isr_value (tree);
++static unsigned long avr32_compute_func_type (void);
++static tree avr32_handle_isr_attribute (tree *, tree, tree, int, bool *);
++static tree avr32_handle_acall_attribute (tree *, tree, tree, int, bool *);
++static tree avr32_handle_fndecl_attribute (tree * node, tree name, tree args,
++ int flags, bool * no_add_attrs);
++static void avr32_reorg (void);
++bool avr32_return_in_msb (tree type);
++bool avr32_vector_mode_supported (enum machine_mode mode);
++static void avr32_init_libfuncs (void);
++void avr32_load_pic_register (void);
++
++
++static void
++avr32_add_gc_roots (void)
++{
++ gcc_obstack_init (&minipool_obstack);
++ minipool_startobj = (char *) obstack_alloc (&minipool_obstack, 0);
++}
++
++
++/* List of all known AVR32 parts */
++static const struct part_type_s avr32_part_types[] = {
++ /* name, part_type, architecture type, macro */
++ {"none", PART_TYPE_AVR32_NONE, ARCH_TYPE_AVR32_AP, "__AVR32__"},
++ {"ap7000", PART_TYPE_AVR32_AP7000, ARCH_TYPE_AVR32_AP, "__AVR32_AP7000__"},
++ {"ap7010", PART_TYPE_AVR32_AP7010, ARCH_TYPE_AVR32_AP, "__AVR32_AP7010__"},
++ {"ap7020", PART_TYPE_AVR32_AP7020, ARCH_TYPE_AVR32_AP, "__AVR32_AP7020__"},
++ {"uc3a0256", PART_TYPE_AVR32_UC3A0256, ARCH_TYPE_AVR32_UC, "__AVR32_UC3A0256__"},
++ {"uc3a0512", PART_TYPE_AVR32_UC3A0512, ARCH_TYPE_AVR32_UC, "__AVR32_UC3A0512__"},
++ {"uc3a1128", PART_TYPE_AVR32_UC3A1128, ARCH_TYPE_AVR32_UC, "__AVR32_UC3A1128__"},
++ {"uc3a1256", PART_TYPE_AVR32_UC3A1256, ARCH_TYPE_AVR32_UC, "__AVR32_UC3A1256__"},
++ {"uc3a1512", PART_TYPE_AVR32_UC3A1512, ARCH_TYPE_AVR32_UC, "__AVR32_UC3A1512__"},
++ {NULL, 0, 0, NULL}
++};
++
++/* List of all known AVR32 architectures */
++static const struct arch_type_s avr32_arch_types[] = {
++ /* name, architecture type, microarchitecture type, feature flags, macro */
++ {"ap", ARCH_TYPE_AVR32_AP, UARCH_TYPE_AVR32B, FLAG_AVR32_HAS_DSP |
++ FLAG_AVR32_HAS_SIMD | FLAG_AVR32_HAS_UNALIGNED_WORD |
++ FLAG_AVR32_HAS_BRANCH_PRED, "__AVR32_AP__"},
++ {"uc", ARCH_TYPE_AVR32_UC, UARCH_TYPE_AVR32A,
++ FLAG_AVR32_HAS_DSP | FLAG_AVR32_HAS_RMW, "__AVR32_UC__"},
++ {NULL, 0, 0, 0, NULL}
++};
++
++/* Default arch name */
++const char *avr32_arch_name = "ap";
++const char *avr32_part_name = "none";
++
++const struct part_type_s *avr32_part;
++const struct arch_type_s *avr32_arch;
++
++
++/* Override command line options */
++void
++avr32_override_options (void)
++{
++ const struct part_type_s *part;
++ const struct arch_type_s *arch;
++
++ /* Check if part type is set. */
++ for (part = avr32_part_types; part->name; part++)
++ if (strcmp (part->name, avr32_part_name) == 0)
++ break;
++
++ avr32_part = part;
++
++ if (!part->name)
++ {
++ fprintf (stderr, "Unknown part `%s' specified\nKnown part names:\n",
++ avr32_part_name);
++ for (part = avr32_part_types; part->name; part++)
++ fprintf (stderr, "\t%s\n", part->name);
++ avr32_part = &avr32_part_types[PART_TYPE_AVR32_NONE];
++ }
++
++ avr32_arch = &avr32_arch_types[avr32_part->arch_type];
++
++ /* If part was set to "none" then check if arch was set. */
++ if (strcmp (avr32_part->name, "none") == 0)
++ {
++ /* Check if arch type is set. */
++ for (arch = avr32_arch_types; arch->name; arch++)
++ if (strcmp (arch->name, avr32_arch_name) == 0)
++ break;
++
++ avr32_arch = arch;
++
++ if (!arch->name)
++ {
++ fprintf (stderr, "Unknown arch `%s' specified\nKnown arch names:\n",
++ avr32_arch_name);
++ for (arch = avr32_arch_types; arch->name; arch++)
++ fprintf (stderr, "\t%s\n", arch->name);
++ avr32_arch = &avr32_arch_types[ARCH_TYPE_AVR32_AP];
++ }
++ }
++
++ /* If optimization level is two or greater, then align start of loops to a
++ word boundary since this will allow folding the first insn of the loop.
++ Do this only for targets supporting branch prediction. */
++ if (optimize >= 2 && TARGET_BRANCH_PRED)
++ align_loops = 2;
++
++ if (AVR32_ALWAYS_PIC)
++ flag_pic = 1;
++
++ if (target_flags & AVR32_FLAG_NO_PIC)
++ flag_pic = 0;
++
++ avr32_add_gc_roots ();
++}
++
++
++/*
++If defined, a function that outputs the assembler code for entry to a
++function. The prologue is responsible for setting up the stack frame,
++initializing the frame pointer register, saving registers that must be
++saved, and allocating size additional bytes of storage for the
++local variables. size is an integer. file is a stdio
++stream to which the assembler code should be output.
++
++The label for the beginning of the function need not be output by this
++macro. That has already been done when the macro is run.
++
++To determine which registers to save, the macro can refer to the array
++regs_ever_live: element r is nonzero if hard register
++r is used anywhere within the function. This implies the function
++prologue should save register r, provided it is not one of the
++call-used registers. (TARGET_ASM_FUNCTION_EPILOGUE must likewise use
++regs_ever_live.)
++
++On machines that have ``register windows'', the function entry code does
++not save on the stack the registers that are in the windows, even if
++they are supposed to be preserved by function calls; instead it takes
++appropriate steps to ``push'' the register stack, if any non-call-used
++registers are used in the function.
++
++On machines where functions may or may not have frame-pointers, the
++function entry code must vary accordingly; it must set up the frame
++pointer if one is wanted, and not otherwise. To determine whether a
++frame pointer is in wanted, the macro can refer to the variable
++frame_pointer_needed. The variable's value will be 1 at run
++time in a function that needs a frame pointer. (see Elimination).
++
++The function entry code is responsible for allocating any stack space
++required for the function. This stack space consists of the regions
++listed below. In most cases, these regions are allocated in the
++order listed, with the last listed region closest to the top of the
++stack (the lowest address if STACK_GROWS_DOWNWARD is defined, and
++the highest address if it is not defined). You can use a different order
++for a machine if doing so is more convenient or required for
++compatibility reasons. Except in cases where required by standard
++or by a debugger, there is no reason why the stack layout used by GCC
++need agree with that used by other compilers for a machine.
++*/
++
++#undef TARGET_ASM_FUNCTION_PROLOGUE
++#define TARGET_ASM_FUNCTION_PROLOGUE avr32_target_asm_function_prologue
++
++
++#undef TARGET_DEFAULT_SHORT_ENUMS
++#define TARGET_DEFAULT_SHORT_ENUMS hook_bool_void_false
++
++#undef TARGET_PROMOTE_FUNCTION_ARGS
++#define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_true
++
++#undef TARGET_PROMOTE_FUNCTION_RETURN
++#define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_true
++
++#undef TARGET_PROMOTE_PROTOTYPES
++#define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_true
++
++#undef TARGET_MUST_PASS_IN_STACK
++#define TARGET_MUST_PASS_IN_STACK avr32_must_pass_in_stack
++
++#undef TARGET_PASS_BY_REFERENCE
++#define TARGET_PASS_BY_REFERENCE avr32_pass_by_reference
++
++#undef TARGET_STRICT_ARGUMENT_NAMING
++#define TARGET_STRICT_ARGUMENT_NAMING avr32_strict_argument_naming
++
++#undef TARGET_VECTOR_MODE_SUPPORTED_P
++#define TARGET_VECTOR_MODE_SUPPORTED_P avr32_vector_mode_supported
++
++#undef TARGET_RETURN_IN_MEMORY
++#define TARGET_RETURN_IN_MEMORY avr32_return_in_memory
++
++#undef TARGET_RETURN_IN_MSB
++#define TARGET_RETURN_IN_MSB avr32_return_in_msb
++
++#undef TARGET_ARG_PARTIAL_BYTES
++#define TARGET_ARG_PARTIAL_BYTES avr32_arg_partial_bytes
++
++#undef TARGET_STRIP_NAME_ENCODING
++#define TARGET_STRIP_NAME_ENCODING avr32_strip_name_encoding
++
++#define streq(string1, string2) (strcmp (string1, string2) == 0)
++
++#undef TARGET_ATTRIBUTE_TABLE
++#define TARGET_ATTRIBUTE_TABLE avr32_attribute_table
++
++#undef TARGET_COMP_TYPE_ATTRIBUTES
++#define TARGET_COMP_TYPE_ATTRIBUTES avr32_comp_type_attributes
++
++
++#undef TARGET_RTX_COSTS
++#define TARGET_RTX_COSTS avr32_rtx_costs
++
++#undef TARGET_CANNOT_FORCE_CONST_MEM
++#define TARGET_CANNOT_FORCE_CONST_MEM avr32_cannot_force_const_mem
++
++#undef TARGET_ASM_INTEGER
++#define TARGET_ASM_INTEGER avr32_assemble_integer
++
++/*
++ * Switches to the appropriate section for output of constant pool
++ * entry x in mode. You can assume that x is some kind of constant in
++ * RTL. The argument mode is redundant except in the case of a
++ * const_int rtx. Select the section by calling readonly_data_ section
++ * or one of the alternatives for other sections. align is the
++ * constant alignment in bits.
++ *
++ * The default version of this function takes care of putting symbolic
++ * constants in flag_ pic mode in data_section and everything else in
++ * readonly_data_section.
++ */
++#undef TARGET_ASM_SELECT_RTX_SECTION
++#define TARGET_ASM_SELECT_RTX_SECTION avr32_select_rtx_section
++
++
++/*
++ * If non-null, this hook performs a target-specific pass over the
++ * instruction stream. The compiler will run it at all optimization
++ * levels, just before the point at which it normally does
++ * delayed-branch scheduling.
++ *
++ * The exact purpose of the hook varies from target to target. Some
++ * use it to do transformations that are necessary for correctness,
++ * such as laying out in-function constant pools or avoiding hardware
++ * hazards. Others use it as an opportunity to do some
++ * machine-dependent optimizations.
++ *
++ * You need not implement the hook if it has nothing to do. The
++ * default definition is null.
++ */
++#undef TARGET_MACHINE_DEPENDENT_REORG
++#define TARGET_MACHINE_DEPENDENT_REORG avr32_reorg
++
++/* Target hook for assembling integer objects.
++ Need to handle integer vectors */
++static bool
++avr32_assemble_integer (rtx x, unsigned int size, int aligned_p)
++{
++ if (avr32_vector_mode_supported (GET_MODE (x)))
++ {
++ int i, units;
++
++ if (GET_CODE (x) != CONST_VECTOR)
++ abort ();
++
++ units = CONST_VECTOR_NUNITS (x);
++
++ switch (GET_MODE (x))
++ {
++ case V2HImode:
++ size = 2;
++ break;
++ case V4QImode:
++ size = 1;
++ break;
++ default:
++ abort ();
++ }
++
++ for (i = 0; i < units; i++)
++ {
++ rtx elt;
++
++ elt = CONST_VECTOR_ELT (x, i);
++ assemble_integer (elt, size, i == 0 ? 32 : size * BITS_PER_UNIT, 1);
++ }
++
++ return true;
++ }
++
++ return default_assemble_integer (x, size, aligned_p);
++}
++
++/*
++ * This target hook describes the relative costs of RTL expressions.
++ *
++ * The cost may depend on the precise form of the expression, which is
++ * available for examination in x, and the rtx code of the expression
++ * in which it is contained, found in outer_code. code is the
++ * expression code--redundant, since it can be obtained with GET_CODE
++ * (x).
++ *
++ * In implementing this hook, you can use the construct COSTS_N_INSNS
++ * (n) to specify a cost equal to n fast instructions.
++ *
++ * On entry to the hook, *total contains a default estimate for the
++ * cost of the expression. The hook should modify this value as
++ * necessary. Traditionally, the default costs are COSTS_N_INSNS (5)
++ * for multiplications, COSTS_N_INSNS (7) for division and modulus
++ * operations, and COSTS_N_INSNS (1) for all other operations.
++ *
++ * When optimizing for code size, i.e. when optimize_size is non-zero,
++ * this target hook should be used to estimate the relative size cost
++ * of an expression, again relative to COSTS_N_INSNS.
++ *
++ * The hook returns true when all subexpressions of x have been
++ * processed, and false when rtx_cost should recurse.
++ */
++
++/* Worker routine for avr32_rtx_costs. */
++static inline int
++avr32_rtx_costs_1 (rtx x, enum rtx_code code ATTRIBUTE_UNUSED,
++ enum rtx_code outer ATTRIBUTE_UNUSED)
++{
++ enum machine_mode mode = GET_MODE (x);
++
++ switch (GET_CODE (x))
++ {
++ case MEM:
++ /* Using pre decrement / post increment memory operations on the
++ avr32_uc architecture means that two writebacks must be performed
++ and hence two cycles are needed. */
++ if (!optimize_size
++ && GET_MODE_SIZE (mode) <= 2 * UNITS_PER_WORD
++ && avr32_arch->arch_type == ARCH_TYPE_AVR32_UC
++ && (GET_CODE (XEXP (x, 0)) == PRE_DEC
++ || GET_CODE (XEXP (x, 0)) == POST_INC))
++ return COSTS_N_INSNS (4);
++
++ /* Memory costs quite a lot for the first word, but subsequent words
++ load at the equivalent of a single insn each. */
++ if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
++ return COSTS_N_INSNS (2 + (GET_MODE_SIZE (mode) / UNITS_PER_WORD));
++
++ return COSTS_N_INSNS (3);
++ case SYMBOL_REF:
++ case CONST:
++ /* These are valid for the pseudo insns: lda.w and call which operates
++ on direct addresses. We assume that the cost of a lda.w is the same
++ as the cost of a ld.w insn. */
++ return (outer == SET) ? COSTS_N_INSNS (3) : COSTS_N_INSNS (1);
++ case DIV:
++ case MOD:
++ case UDIV:
++ case UMOD:
++ return optimize_size ? COSTS_N_INSNS (1) : COSTS_N_INSNS (16);
++
++ case ROTATE:
++ case ROTATERT:
++ if (mode == TImode)
++ return COSTS_N_INSNS (100);
++
++ if (mode == DImode)
++ return COSTS_N_INSNS (10);
++ return COSTS_N_INSNS (4);
++ case ASHIFT:
++ case LSHIFTRT:
++ case ASHIFTRT:
++ case NOT:
++ if (mode == TImode)
++ return COSTS_N_INSNS (10);
++
++ if (mode == DImode)
++ return COSTS_N_INSNS (4);
++ return COSTS_N_INSNS (1);
++ case PLUS:
++ case MINUS:
++ case NEG:
++ case COMPARE:
++ case ABS:
++ if (GET_MODE_CLASS (mode) == MODE_FLOAT)
++ return COSTS_N_INSNS (100);
++
++ if (mode == TImode)
++ return COSTS_N_INSNS (50);
++
++ if (mode == DImode)
++ return COSTS_N_INSNS (2);
++ return COSTS_N_INSNS (1);
++
++ case MULT:
++ {
++ if (GET_MODE_CLASS (mode) == MODE_FLOAT)
++ return COSTS_N_INSNS (300);
++
++ if (mode == TImode)
++ return COSTS_N_INSNS (16);
++
++ if (mode == DImode)
++ return COSTS_N_INSNS (4);
++
++ if (mode == HImode)
++ return COSTS_N_INSNS (2);
++
++ return COSTS_N_INSNS (3);
++ }
++ case IF_THEN_ELSE:
++ if (GET_CODE (XEXP (x, 1)) == PC || GET_CODE (XEXP (x, 2)) == PC)
++ return COSTS_N_INSNS (4);
++ return COSTS_N_INSNS (1);
++ case SIGN_EXTEND:
++ case ZERO_EXTEND:
++ /* Sign/Zero extensions of registers cost quite much since these
++ instrcutions only take one register operand which means that gcc
++ often must insert some move instrcutions */
++ if (mode == QImode || mode == HImode)
++ return (COSTS_N_INSNS (GET_CODE (XEXP (x, 0)) == MEM ? 0 : 1));
++ return COSTS_N_INSNS (4);
++ case UNSPEC:
++ /* divmod operations */
++ if (XINT (x, 1) == UNSPEC_UDIVMODSI4_INTERNAL
++ || XINT (x, 1) == UNSPEC_DIVMODSI4_INTERNAL)
++ {
++ return optimize_size ? COSTS_N_INSNS (1) : COSTS_N_INSNS (16);
++ }
++ /* Fallthrough */
++ default:
++ return COSTS_N_INSNS (1);
++ }
++}
++
++static bool
++avr32_rtx_costs (rtx x, int code, int outer_code, int *total)
++{
++ *total = avr32_rtx_costs_1 (x, code, outer_code);
++ return true;
++}
++
++
++bool
++avr32_cannot_force_const_mem (rtx x ATTRIBUTE_UNUSED)
++{
++ /* Do not want symbols in the constant pool when compiling pic or if using
++ address pseudo instructions. */
++ return ((flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS)
++ && avr32_find_symbol (x) != NULL_RTX);
++}
++
++
++/* Table of machine attributes. */
++const struct attribute_spec avr32_attribute_table[] = {
++ /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
++ /* Interrupt Service Routines have special prologue and epilogue
++ requirements. */
++ {"isr", 0, 1, false, false, false, avr32_handle_isr_attribute},
++ {"interrupt", 0, 1, false, false, false, avr32_handle_isr_attribute},
++ {"acall", 0, 1, false, true, true, avr32_handle_acall_attribute},
++ {"naked", 0, 0, true, false, false, avr32_handle_fndecl_attribute},
++ {NULL, 0, 0, false, false, false, NULL}
++};
++
++
++typedef struct
++{
++ const char *const arg;
++ const unsigned long return_value;
++}
++isr_attribute_arg;
++
++static const isr_attribute_arg isr_attribute_args[] = {
++ {"FULL", AVR32_FT_ISR_FULL},
++ {"full", AVR32_FT_ISR_FULL},
++ {"HALF", AVR32_FT_ISR_HALF},
++ {"half", AVR32_FT_ISR_HALF},
++ {"NONE", AVR32_FT_ISR_NONE},
++ {"none", AVR32_FT_ISR_NONE},
++ {"UNDEF", AVR32_FT_ISR_NONE},
++ {"undef", AVR32_FT_ISR_NONE},
++ {"SWI", AVR32_FT_ISR_NONE},
++ {"swi", AVR32_FT_ISR_NONE},
++ {NULL, AVR32_FT_ISR_NONE}
++};
++
++/* Returns the (interrupt) function type of the current
++ function, or AVR32_FT_UNKNOWN if the type cannot be determined. */
++
++static unsigned long
++avr32_isr_value (tree argument)
++{
++ const isr_attribute_arg *ptr;
++ const char *arg;
++
++ /* No argument - default to ISR_NONE. */
++ if (argument == NULL_TREE)
++ return AVR32_FT_ISR_NONE;
++
++ /* Get the value of the argument. */
++ if (TREE_VALUE (argument) == NULL_TREE
++ || TREE_CODE (TREE_VALUE (argument)) != STRING_CST)
++ return AVR32_FT_UNKNOWN;
++
++ arg = TREE_STRING_POINTER (TREE_VALUE (argument));
++
++ /* Check it against the list of known arguments. */
++ for (ptr = isr_attribute_args; ptr->arg != NULL; ptr++)
++ if (streq (arg, ptr->arg))
++ return ptr->return_value;
++
++ /* An unrecognized interrupt type. */
++ return AVR32_FT_UNKNOWN;
++}
++
++
++
++/*
++These hooks specify assembly directives for creating certain kinds
++of integer object. The TARGET_ASM_BYTE_OP directive creates a
++byte-sized object, the TARGET_ASM_ALIGNED_HI_OP one creates an
++aligned two-byte object, and so on. Any of the hooks may be
++NULL, indicating that no suitable directive is available.
++
++The compiler will print these strings at the start of a new line,
++followed immediately by the object's initial value. In most cases,
++the string should contain a tab, a pseudo-op, and then another tab.
++*/
++#undef TARGET_ASM_BYTE_OP
++#define TARGET_ASM_BYTE_OP "\t.byte\t"
++#undef TARGET_ASM_ALIGNED_HI_OP
++#define TARGET_ASM_ALIGNED_HI_OP "\t.align 1\n\t.short\t"
++#undef TARGET_ASM_ALIGNED_SI_OP
++#define TARGET_ASM_ALIGNED_SI_OP "\t.align 2\n\t.int\t"
++#undef TARGET_ASM_ALIGNED_DI_OP
++#define TARGET_ASM_ALIGNED_DI_OP NULL
++#undef TARGET_ASM_ALIGNED_TI_OP
++#define TARGET_ASM_ALIGNED_TI_OP NULL
++#undef TARGET_ASM_UNALIGNED_HI_OP
++#define TARGET_ASM_UNALIGNED_HI_OP "\t.short\t"
++#undef TARGET_ASM_UNALIGNED_SI_OP
++#define TARGET_ASM_UNALIGNED_SI_OP "\t.int\t"
++#undef TARGET_ASM_UNALIGNED_DI_OP
++#define TARGET_ASM_UNALIGNED_DI_OP NULL
++#undef TARGET_ASM_UNALIGNED_TI_OP
++#define TARGET_ASM_UNALIGNED_TI_OP NULL
++
++#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
++#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE avr32_sched_use_dfa_pipeline_interface
++
++#undef TARGET_ASM_OUTPUT_MI_THUNK
++#define TARGET_ASM_OUTPUT_MI_THUNK avr32_output_mi_thunk
++
++
++static void
++avr32_output_mi_thunk (FILE * file,
++ tree thunk ATTRIBUTE_UNUSED,
++ HOST_WIDE_INT delta,
++ HOST_WIDE_INT vcall_offset, tree function)
++{
++ int mi_delta = delta;
++ int this_regno =
++ (avr32_return_in_memory (DECL_RESULT (function), TREE_TYPE (function)) ?
++ INTERNAL_REGNUM (11) : INTERNAL_REGNUM (12));
++
++
++ if (!avr32_const_ok_for_constraint_p (mi_delta, 'I', "Is21")
++ || vcall_offset)
++ {
++ fprintf (file, "\tpushm\tr10\n");
++ }
++
++
++ if (mi_delta != 0)
++ {
++ if (avr32_const_ok_for_constraint_p (mi_delta, 'I', "Is21"))
++ {
++ fprintf (file, "\tsub\t%s, -0x%x\n", reg_names[this_regno],
++ mi_delta);
++ }
++ else
++ {
++ /* Immediate is larger than k21 we must make us a temp register by
++ pushing a register to the stack. */
++ fprintf (file, "\tmov\tr10, lo(%x)\n", mi_delta);
++ fprintf (file, "\torh\tr10, hi(%x)\n", mi_delta);
++ fprintf (file, "\tadd\t%s, r10\n", reg_names[this_regno]);
++ }
++ }
++
++
++ if (vcall_offset != 0)
++ {
++ fprintf (file, "\tld.w\tr10, %s[0]\n", reg_names[this_regno]);
++ fprintf (file, "\tld.w\tr10, r10[%i]\n", (int) vcall_offset);
++ fprintf (file, "\tadd\t%s, r10\n", reg_names[this_regno]);
++ }
++
++
++ if (!avr32_const_ok_for_constraint_p (mi_delta, 'I', "Is21")
++ || vcall_offset)
++ {
++ fprintf (file, "\tpopm\tr10\n");
++ }
++
++ if (flag_pic)
++ {
++ /* Don't know how we should do this!!! For now we'll just use an
++ extended branch instruction and hope that the function will be
++ reached. */
++ fprintf (file, "\tbral\t");
++ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
++ fputc ('\n', file);
++ }
++ else
++ {
++ fprintf (file, "\tlddpc\tpc, 0f\n");
++ fprintf (file, "\t.align 2\n");
++ fputs ("0:\t.long\t", file);
++ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
++ fputc ('\n', file);
++ }
++}
++
++/* Implements target hook vector_mode_supported. */
++bool
++avr32_vector_mode_supported (enum machine_mode mode)
++{
++ if ((mode == V2HImode) || (mode == V4QImode))
++ return true;
++
++ return false;
++}
++
++
++#undef TARGET_INIT_LIBFUNCS
++#define TARGET_INIT_LIBFUNCS avr32_init_libfuncs
++
++#undef TARGET_INIT_BUILTINS
++#define TARGET_INIT_BUILTINS avr32_init_builtins
++
++#undef TARGET_EXPAND_BUILTIN
++#define TARGET_EXPAND_BUILTIN avr32_expand_builtin
++
++tree int_ftype_int, int_ftype_void, short_ftype_short, void_ftype_int_int,
++ void_ftype_ptr_int;
++tree void_ftype_int, void_ftype_void, int_ftype_ptr_int;
++tree short_ftype_short, int_ftype_int_short, int_ftype_short_short,
++ short_ftype_short_short;
++tree int_ftype_int_int, longlong_ftype_int_short, longlong_ftype_short_short;
++tree void_ftype_int_int_int_int_int, void_ftype_int_int_int;
++tree longlong_ftype_int_int, void_ftype_int_int_longlong;
++tree int_ftype_int_int_int, longlong_ftype_longlong_int_short;
++tree longlong_ftype_longlong_short_short, int_ftype_int_short_short;
++
++#define def_builtin(NAME, TYPE, CODE) \
++ lang_hooks.builtin_function ((NAME), (TYPE), (CODE), \
++ BUILT_IN_MD, NULL, NULL_TREE)
++
++#define def_mbuiltin(MASK, NAME, TYPE, CODE) \
++ do \
++ { \
++ if ((MASK)) \
++ lang_hooks.builtin_function ((NAME), (TYPE), (CODE), \
++ BUILT_IN_MD, NULL, NULL_TREE); \
++ } \
++ while (0)
++
++struct builtin_description
++{
++ const unsigned int mask;
++ const enum insn_code icode;
++ const char *const name;
++ const int code;
++ const enum rtx_code comparison;
++ const unsigned int flag;
++ const tree *ftype;
++};
++
++static const struct builtin_description bdesc_2arg[] = {
++#define DSP_BUILTIN(code, builtin, ftype) \
++ { 1, CODE_FOR_##code, "__builtin_" #code , \
++ AVR32_BUILTIN_##builtin, 0, 0, ftype }
++
++ DSP_BUILTIN (mulsathh_h, MULSATHH_H, &short_ftype_short_short),
++ DSP_BUILTIN (mulsathh_w, MULSATHH_W, &int_ftype_short_short),
++ DSP_BUILTIN (mulsatrndhh_h, MULSATRNDHH_H, &short_ftype_short_short),
++ DSP_BUILTIN (mulsatrndwh_w, MULSATRNDWH_W, &int_ftype_int_short),
++ DSP_BUILTIN (mulsatwh_w, MULSATWH_W, &int_ftype_int_short),
++ DSP_BUILTIN (satadd_h, SATADD_H, &short_ftype_short_short),
++ DSP_BUILTIN (satsub_h, SATSUB_H, &short_ftype_short_short),
++ DSP_BUILTIN (satadd_w, SATADD_W, &int_ftype_int_int),
++ DSP_BUILTIN (satsub_w, SATSUB_W, &int_ftype_int_int),
++ DSP_BUILTIN (mulwh_d, MULWH_D, &longlong_ftype_int_short),
++ DSP_BUILTIN (mulnwh_d, MULNWH_D, &longlong_ftype_int_short)
++};
++
++
++void
++avr32_init_builtins (void)
++{
++ unsigned int i;
++ const struct builtin_description *d;
++ tree endlink = void_list_node;
++ tree int_endlink = tree_cons (NULL_TREE, integer_type_node, endlink);
++ tree longlong_endlink =
++ tree_cons (NULL_TREE, long_long_integer_type_node, endlink);
++ tree short_endlink =
++ tree_cons (NULL_TREE, short_integer_type_node, endlink);
++ tree void_endlink = tree_cons (NULL_TREE, void_type_node, endlink);
++
++ /* int func (int) */
++ int_ftype_int = build_function_type (integer_type_node, int_endlink);
++
++ /* short func (short) */
++ short_ftype_short
++ = build_function_type (short_integer_type_node, short_endlink);
++
++ /* short func (short, short) */
++ short_ftype_short_short
++ = build_function_type (short_integer_type_node,
++ tree_cons (NULL_TREE, short_integer_type_node,
++ short_endlink));
++
++ /* long long func (long long, short, short) */
++ longlong_ftype_longlong_short_short
++ = build_function_type (long_long_integer_type_node,
++ tree_cons (NULL_TREE, long_long_integer_type_node,
++ tree_cons (NULL_TREE,
++ short_integer_type_node,
++ short_endlink)));
++
++ /* long long func (short, short) */
++ longlong_ftype_short_short
++ = build_function_type (long_long_integer_type_node,
++ tree_cons (NULL_TREE, short_integer_type_node,
++ short_endlink));
++
++ /* int func (int, int) */
++ int_ftype_int_int
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ int_endlink));
++
++ /* long long func (int, int) */
++ longlong_ftype_int_int
++ = build_function_type (long_long_integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ int_endlink));
++
++ /* long long int func (long long, int, short) */
++ longlong_ftype_longlong_int_short
++ = build_function_type (long_long_integer_type_node,
++ tree_cons (NULL_TREE, long_long_integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ short_endlink)));
++
++ /* long long int func (int, short) */
++ longlong_ftype_int_short
++ = build_function_type (long_long_integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ short_endlink));
++
++ /* int func (int, short, short) */
++ int_ftype_int_short_short
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE,
++ short_integer_type_node,
++ short_endlink)));
++
++ /* int func (short, short) */
++ int_ftype_short_short
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, short_integer_type_node,
++ short_endlink));
++
++ /* int func (int, short) */
++ int_ftype_int_short
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ short_endlink));
++
++ /* void func (int, int) */
++ void_ftype_int_int
++ = build_function_type (void_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ int_endlink));
++
++ /* void func (int, int, int) */
++ void_ftype_int_int_int
++ = build_function_type (void_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ int_endlink)));
++
++ /* void func (int, int, long long) */
++ void_ftype_int_int_longlong
++ = build_function_type (void_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ longlong_endlink)));
++
++ /* void func (int, int, int, int, int) */
++ void_ftype_int_int_int_int_int
++ = build_function_type (void_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE,
++ integer_type_node,
++ tree_cons
++ (NULL_TREE,
++ integer_type_node,
++ int_endlink)))));
++
++ /* void func (void *, int) */
++ void_ftype_ptr_int
++ = build_function_type (void_type_node,
++ tree_cons (NULL_TREE, ptr_type_node, int_endlink));
++
++ /* void func (int) */
++ void_ftype_int = build_function_type (void_type_node, int_endlink);
++
++ /* void func (void) */
++ void_ftype_void = build_function_type (void_type_node, void_endlink);
++
++ /* int func (void) */
++ int_ftype_void = build_function_type (integer_type_node, void_endlink);
++
++ /* int func (void *, int) */
++ int_ftype_ptr_int
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, ptr_type_node, int_endlink));
++
++ /* int func (int, int, int) */
++ int_ftype_int_int_int
++ = build_function_type (integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ tree_cons (NULL_TREE, integer_type_node,
++ int_endlink)));
++
++ /* Initialize avr32 builtins. */
++ def_builtin ("__builtin_mfsr", int_ftype_int, AVR32_BUILTIN_MFSR);
++ def_builtin ("__builtin_mtsr", void_ftype_int_int, AVR32_BUILTIN_MTSR);
++ def_builtin ("__builtin_mfdr", int_ftype_int, AVR32_BUILTIN_MFDR);
++ def_builtin ("__builtin_mtdr", void_ftype_int_int, AVR32_BUILTIN_MTDR);
++ def_builtin ("__builtin_cache", void_ftype_ptr_int, AVR32_BUILTIN_CACHE);
++ def_builtin ("__builtin_sync", void_ftype_int, AVR32_BUILTIN_SYNC);
++ def_builtin ("__builtin_tlbr", void_ftype_void, AVR32_BUILTIN_TLBR);
++ def_builtin ("__builtin_tlbs", void_ftype_void, AVR32_BUILTIN_TLBS);
++ def_builtin ("__builtin_tlbw", void_ftype_void, AVR32_BUILTIN_TLBW);
++ def_builtin ("__builtin_breakpoint", void_ftype_void,
++ AVR32_BUILTIN_BREAKPOINT);
++ def_builtin ("__builtin_xchg", int_ftype_ptr_int, AVR32_BUILTIN_XCHG);
++ def_builtin ("__builtin_ldxi", int_ftype_ptr_int, AVR32_BUILTIN_LDXI);
++ def_builtin ("__builtin_bswap_16", short_ftype_short,
++ AVR32_BUILTIN_BSWAP16);
++ def_builtin ("__builtin_bswap_32", int_ftype_int, AVR32_BUILTIN_BSWAP32);
++ def_builtin ("__builtin_cop", void_ftype_int_int_int_int_int,
++ AVR32_BUILTIN_COP);
++ def_builtin ("__builtin_mvcr_w", int_ftype_int_int, AVR32_BUILTIN_MVCR_W);
++ def_builtin ("__builtin_mvrc_w", void_ftype_int_int_int,
++ AVR32_BUILTIN_MVRC_W);
++ def_builtin ("__builtin_mvcr_d", longlong_ftype_int_int,
++ AVR32_BUILTIN_MVCR_D);
++ def_builtin ("__builtin_mvrc_d", void_ftype_int_int_longlong,
++ AVR32_BUILTIN_MVRC_D);
++ def_builtin ("__builtin_sats", int_ftype_int_int_int, AVR32_BUILTIN_SATS);
++ def_builtin ("__builtin_satu", int_ftype_int_int_int, AVR32_BUILTIN_SATU);
++ def_builtin ("__builtin_satrnds", int_ftype_int_int_int,
++ AVR32_BUILTIN_SATRNDS);
++ def_builtin ("__builtin_satrndu", int_ftype_int_int_int,
++ AVR32_BUILTIN_SATRNDU);
++ def_builtin ("__builtin_musfr", void_ftype_int, AVR32_BUILTIN_MUSFR);
++ def_builtin ("__builtin_mustr", int_ftype_void, AVR32_BUILTIN_MUSTR);
++ def_builtin ("__builtin_macsathh_w", int_ftype_int_short_short,
++ AVR32_BUILTIN_MACSATHH_W);
++ def_builtin ("__builtin_macwh_d", longlong_ftype_longlong_int_short,
++ AVR32_BUILTIN_MACWH_D);
++ def_builtin ("__builtin_machh_d", longlong_ftype_longlong_short_short,
++ AVR32_BUILTIN_MACHH_D);
++
++ /* Add all builtins that are more or less simple operations on two
++ operands. */
++ for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
++ {
++ /* Use one of the operands; the target can have a different mode for
++ mask-generating compares. */
++
++ if (d->name == 0)
++ continue;
++
++ def_mbuiltin (d->mask, d->name, *(d->ftype), d->code);
++ }
++}
++
++
++/* Subroutine of avr32_expand_builtin to take care of binop insns. */
++
++static rtx
++avr32_expand_binop_builtin (enum insn_code icode, tree arglist, rtx target)
++{
++ rtx pat;
++ tree arg0 = TREE_VALUE (arglist);
++ tree arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ enum machine_mode tmode = insn_data[icode].operand[0].mode;
++ enum machine_mode mode0 = insn_data[icode].operand[1].mode;
++ enum machine_mode mode1 = insn_data[icode].operand[2].mode;
++
++ if (!target
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++
++ /* In case the insn wants input operands in modes different from the
++ result, abort. */
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ /* If op0 is already a reg we must cast it to the correct mode. */
++ if (REG_P (op0))
++ op0 = convert_to_mode (mode0, op0, 1);
++ else
++ op0 = copy_to_mode_reg (mode0, op0);
++ }
++ if (!(*insn_data[icode].operand[2].predicate) (op1, mode1))
++ {
++ /* If op1 is already a reg we must cast it to the correct mode. */
++ if (REG_P (op1))
++ op1 = convert_to_mode (mode1, op1, 1);
++ else
++ op1 = copy_to_mode_reg (mode1, op1);
++ }
++ pat = GEN_FCN (icode) (target, op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++}
++
++/* Expand an expression EXP that calls a built-in function,
++ with result going to TARGET if that's convenient
++ (and in mode MODE if that's convenient).
++ SUBTARGET may be used as the target for computing one of EXP's operands.
++ IGNORE is nonzero if the value is to be ignored. */
++
++rtx
++avr32_expand_builtin (tree exp,
++ rtx target,
++ rtx subtarget ATTRIBUTE_UNUSED,
++ enum machine_mode mode ATTRIBUTE_UNUSED,
++ int ignore ATTRIBUTE_UNUSED)
++{
++ const struct builtin_description *d;
++ unsigned int i;
++ enum insn_code icode;
++ tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
++ tree arglist = TREE_OPERAND (exp, 1);
++ tree arg0, arg1, arg2;
++ rtx op0, op1, op2, pat;
++ enum machine_mode tmode, mode0, mode1;
++ enum machine_mode arg0_mode;
++ int fcode = DECL_FUNCTION_CODE (fndecl);
++
++ switch (fcode)
++ {
++ default:
++ break;
++
++ case AVR32_BUILTIN_SATS:
++ case AVR32_BUILTIN_SATU:
++ case AVR32_BUILTIN_SATRNDS:
++ case AVR32_BUILTIN_SATRNDU:
++ {
++ const char *fname;
++ switch (fcode)
++ {
++ default:
++ case AVR32_BUILTIN_SATS:
++ icode = CODE_FOR_sats;
++ fname = "sats";
++ break;
++ case AVR32_BUILTIN_SATU:
++ icode = CODE_FOR_satu;
++ fname = "satu";
++ break;
++ case AVR32_BUILTIN_SATRNDS:
++ icode = CODE_FOR_satrnds;
++ fname = "satrnds";
++ break;
++ case AVR32_BUILTIN_SATRNDU:
++ icode = CODE_FOR_satrndu;
++ fname = "satrndu";
++ break;
++ }
++
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
++
++ tmode = insn_data[icode].operand[0].mode;
++
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, GET_MODE (op0)))
++ {
++ op0 = copy_to_mode_reg (insn_data[icode].operand[0].mode, op0);
++ }
++
++ if (!(*insn_data[icode].operand[1].predicate) (op1, SImode))
++ {
++ error ("Parameter 2 to __builtin_%s should be a constant number.",
++ fname);
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[1].predicate) (op2, SImode))
++ {
++ error ("Parameter 3 to __builtin_%s should be a constant number.",
++ fname);
++ return NULL_RTX;
++ }
++
++ emit_move_insn (target, op0);
++ pat = GEN_FCN (icode) (target, op1, op2);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return target;
++ }
++ case AVR32_BUILTIN_MUSTR:
++ icode = CODE_FOR_mustr;
++ tmode = insn_data[icode].operand[0].mode;
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++ pat = GEN_FCN (icode) (target);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++
++ case AVR32_BUILTIN_MFSR:
++ icode = CODE_FOR_mfsr;
++ arg0 = TREE_VALUE (arglist);
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ error ("Parameter 1 to __builtin_mfsr must be a constant number");
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++ pat = GEN_FCN (icode) (target, op0);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++ case AVR32_BUILTIN_MTSR:
++ icode = CODE_FOR_mtsr;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ mode0 = insn_data[icode].operand[0].mode;
++ mode1 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, mode0))
++ {
++ error ("Parameter 1 to __builtin_mtsr must be a constant number");
++ return gen_reg_rtx (mode0);
++ }
++ if (!(*insn_data[icode].operand[1].predicate) (op1, mode1))
++ op1 = copy_to_mode_reg (mode1, op1);
++ pat = GEN_FCN (icode) (op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_MFDR:
++ icode = CODE_FOR_mfdr;
++ arg0 = TREE_VALUE (arglist);
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ error ("Parameter 1 to __builtin_mfdr must be a constant number");
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++ pat = GEN_FCN (icode) (target, op0);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++ case AVR32_BUILTIN_MTDR:
++ icode = CODE_FOR_mtdr;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ mode0 = insn_data[icode].operand[0].mode;
++ mode1 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, mode0))
++ {
++ error ("Parameter 1 to __builtin_mtdr must be a constant number");
++ return gen_reg_rtx (mode0);
++ }
++ if (!(*insn_data[icode].operand[1].predicate) (op1, mode1))
++ op1 = copy_to_mode_reg (mode1, op1);
++ pat = GEN_FCN (icode) (op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_CACHE:
++ icode = CODE_FOR_cache;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ mode0 = insn_data[icode].operand[0].mode;
++ mode1 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[1].predicate) (op1, mode1))
++ {
++ error ("Parameter 2 to __builtin_cache must be a constant number");
++ return gen_reg_rtx (mode1);
++ }
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, mode0))
++ op0 = copy_to_mode_reg (mode0, op0);
++
++ pat = GEN_FCN (icode) (op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_SYNC:
++ case AVR32_BUILTIN_MUSFR:
++ {
++ const char *fname;
++ switch (fcode)
++ {
++ default:
++ case AVR32_BUILTIN_SYNC:
++ icode = CODE_FOR_sync;
++ fname = "sync";
++ break;
++ case AVR32_BUILTIN_MUSFR:
++ icode = CODE_FOR_musfr;
++ fname = "musfr";
++ break;
++ }
++
++ arg0 = TREE_VALUE (arglist);
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ mode0 = insn_data[icode].operand[0].mode;
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, mode0))
++ {
++ if (icode == CODE_FOR_musfr)
++ op0 = copy_to_mode_reg (mode0, op0);
++ else
++ {
++ error ("Parameter to __builtin_%s is illegal.", fname);
++ return gen_reg_rtx (mode0);
++ }
++ }
++ pat = GEN_FCN (icode) (op0);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ }
++ case AVR32_BUILTIN_TLBR:
++ icode = CODE_FOR_tlbr;
++ pat = GEN_FCN (icode) (NULL_RTX);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_TLBS:
++ icode = CODE_FOR_tlbs;
++ pat = GEN_FCN (icode) (NULL_RTX);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_TLBW:
++ icode = CODE_FOR_tlbw;
++ pat = GEN_FCN (icode) (NULL_RTX);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_BREAKPOINT:
++ icode = CODE_FOR_breakpoint;
++ pat = GEN_FCN (icode) (NULL_RTX);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return NULL_RTX;
++ case AVR32_BUILTIN_XCHG:
++ icode = CODE_FOR_xchg;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++ mode1 = insn_data[icode].operand[3].mode;
++
++ if (!(*insn_data[icode].operand[3].predicate) (op1, mode1))
++ {
++ op1 = copy_to_mode_reg (mode1, op1);
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op0, mode0))
++ {
++ op0 = copy_to_mode_reg (mode0, op0);
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++ pat = GEN_FCN (icode) (target, op0, op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++ case AVR32_BUILTIN_LDXI:
++ icode = CODE_FOR_ldxi;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++ mode1 = insn_data[icode].operand[2].mode;
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ op0 = copy_to_mode_reg (mode0, op0);
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op1, mode1))
++ {
++ op1 = copy_to_mode_reg (mode1, op1);
++ }
++
++ if (!(*insn_data[icode].operand[3].predicate) (op2, SImode))
++ {
++ error
++ ("Parameter 3 to __builtin_ldxi must be a valid extract shift operand: (0|8|16|24)");
++ return gen_reg_rtx (mode0);
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++ pat = GEN_FCN (icode) (target, op0, op1, op2);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++ case AVR32_BUILTIN_BSWAP16:
++ {
++ icode = CODE_FOR_bswap_16;
++ arg0 = TREE_VALUE (arglist);
++ arg0_mode = TYPE_MODE (TREE_TYPE (arg0));
++ mode0 = insn_data[icode].operand[1].mode;
++ if (arg0_mode != mode0)
++ arg0 = build1 (NOP_EXPR,
++ (*lang_hooks.types.type_for_mode) (mode0, 0), arg0);
++
++ op0 = expand_expr (arg0, NULL_RTX, HImode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ op0 = copy_to_mode_reg (mode0, op0);
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ {
++ target = gen_reg_rtx (tmode);
++ }
++
++
++ pat = GEN_FCN (icode) (target, op0);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return target;
++ }
++ case AVR32_BUILTIN_BSWAP32:
++ {
++ icode = CODE_FOR_bswap_32;
++ arg0 = TREE_VALUE (arglist);
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
++ {
++ op0 = copy_to_mode_reg (mode0, op0);
++ }
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++
++
++ pat = GEN_FCN (icode) (target, op0);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return target;
++ }
++ case AVR32_BUILTIN_MVCR_W:
++ case AVR32_BUILTIN_MVCR_D:
++ {
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++
++ if (fcode == AVR32_BUILTIN_MVCR_W)
++ icode = CODE_FOR_mvcrsi;
++ else
++ icode = CODE_FOR_mvcrdi;
++
++ tmode = insn_data[icode].operand[0].mode;
++
++ if (target == 0
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++
++ if (!(*insn_data[icode].operand[1].predicate) (op0, SImode))
++ {
++ error
++ ("Parameter 1 to __builtin_cop is not a valid coprocessor number.");
++ error ("Number should be between 0 and 7.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op1, SImode))
++ {
++ error
++ ("Parameter 2 to __builtin_cop is not a valid coprocessor register number.");
++ error ("Number should be between 0 and 15.");
++ return NULL_RTX;
++ }
++
++ pat = GEN_FCN (icode) (target, op0, op1);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return target;
++ }
++ case AVR32_BUILTIN_MACSATHH_W:
++ case AVR32_BUILTIN_MACWH_D:
++ case AVR32_BUILTIN_MACHH_D:
++ {
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
++
++ icode = ((fcode == AVR32_BUILTIN_MACSATHH_W) ? CODE_FOR_macsathh_w :
++ (fcode == AVR32_BUILTIN_MACWH_D) ? CODE_FOR_macwh_d :
++ CODE_FOR_machh_d);
++
++ tmode = insn_data[icode].operand[0].mode;
++ mode0 = insn_data[icode].operand[1].mode;
++ mode1 = insn_data[icode].operand[2].mode;
++
++
++ if (!target
++ || GET_MODE (target) != tmode
++ || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++ target = gen_reg_rtx (tmode);
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, tmode))
++ {
++ /* If op0 is already a reg we must cast it to the correct mode. */
++ if (REG_P (op0))
++ op0 = convert_to_mode (tmode, op0, 1);
++ else
++ op0 = copy_to_mode_reg (tmode, op0);
++ }
++
++ if (!(*insn_data[icode].operand[1].predicate) (op1, mode0))
++ {
++ /* If op1 is already a reg we must cast it to the correct mode. */
++ if (REG_P (op1))
++ op1 = convert_to_mode (mode0, op1, 1);
++ else
++ op1 = copy_to_mode_reg (mode0, op1);
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op2, mode1))
++ {
++ /* If op1 is already a reg we must cast it to the correct mode. */
++ if (REG_P (op2))
++ op2 = convert_to_mode (mode1, op2, 1);
++ else
++ op2 = copy_to_mode_reg (mode1, op2);
++ }
++
++ emit_move_insn (target, op0);
++
++ pat = GEN_FCN (icode) (target, op1, op2);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++ return target;
++ }
++ case AVR32_BUILTIN_MVRC_W:
++ case AVR32_BUILTIN_MVRC_D:
++ {
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
++
++ if (fcode == AVR32_BUILTIN_MVRC_W)
++ icode = CODE_FOR_mvrcsi;
++ else
++ icode = CODE_FOR_mvrcdi;
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, SImode))
++ {
++ error ("Parameter 1 is not a valid coprocessor number.");
++ error ("Number should be between 0 and 7.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[1].predicate) (op1, SImode))
++ {
++ error ("Parameter 2 is not a valid coprocessor register number.");
++ error ("Number should be between 0 and 15.");
++ return NULL_RTX;
++ }
++
++ if (GET_CODE (op2) == CONST_INT
++ || GET_CODE (op2) == CONST
++ || GET_CODE (op2) == SYMBOL_REF || GET_CODE (op2) == LABEL_REF)
++ {
++ op2 = force_const_mem (insn_data[icode].operand[2].mode, op2);
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op2, GET_MODE (op2)))
++ op2 = copy_to_mode_reg (insn_data[icode].operand[2].mode, op2);
++
++
++ pat = GEN_FCN (icode) (op0, op1, op2);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return NULL_RTX;
++ }
++ case AVR32_BUILTIN_COP:
++ {
++ rtx op3, op4;
++ tree arg3, arg4;
++ icode = CODE_FOR_cop;
++ arg0 = TREE_VALUE (arglist);
++ arg1 = TREE_VALUE (TREE_CHAIN (arglist));
++ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
++ arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
++ arg4 =
++ TREE_VALUE (TREE_CHAIN
++ (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))));
++ op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
++ op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
++ op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
++ op3 = expand_expr (arg3, NULL_RTX, VOIDmode, 0);
++ op4 = expand_expr (arg4, NULL_RTX, VOIDmode, 0);
++
++ if (!(*insn_data[icode].operand[0].predicate) (op0, SImode))
++ {
++ error
++ ("Parameter 1 to __builtin_cop is not a valid coprocessor number.");
++ error ("Number should be between 0 and 7.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[1].predicate) (op1, SImode))
++ {
++ error
++ ("Parameter 2 to __builtin_cop is not a valid coprocessor register number.");
++ error ("Number should be between 0 and 15.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[2].predicate) (op2, SImode))
++ {
++ error
++ ("Parameter 3 to __builtin_cop is not a valid coprocessor register number.");
++ error ("Number should be between 0 and 15.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[3].predicate) (op3, SImode))
++ {
++ error
++ ("Parameter 4 to __builtin_cop is not a valid coprocessor register number.");
++ error ("Number should be between 0 and 15.");
++ return NULL_RTX;
++ }
++
++ if (!(*insn_data[icode].operand[4].predicate) (op4, SImode))
++ {
++ error
++ ("Parameter 5 to __builtin_cop is not a valid coprocessor operation.");
++ error ("Number should be between 0 and 127.");
++ return NULL_RTX;
++ }
++
++ pat = GEN_FCN (icode) (op0, op1, op2, op3, op4);
++ if (!pat)
++ return 0;
++ emit_insn (pat);
++
++ return target;
++ }
++ }
++
++ for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
++ if (d->code == fcode)
++ return avr32_expand_binop_builtin (d->icode, arglist, target);
++
++
++ /* @@@ Should really do something sensible here. */
++ return NULL_RTX;
++}
++
++
++/* Handle an "interrupt" or "isr" attribute;
++ arguments as in struct attribute_spec.handler. */
++
++static tree
++avr32_handle_isr_attribute (tree * node, tree name, tree args,
++ int flags, bool * no_add_attrs)
++{
++ if (DECL_P (*node))
++ {
++ if (TREE_CODE (*node) != FUNCTION_DECL)
++ {
++ warning ("`%s' attribute only applies to functions",
++ IDENTIFIER_POINTER (name));
++ *no_add_attrs = true;
++ }
++ /* FIXME: the argument if any is checked for type attributes; should it
++ be checked for decl ones? */
++ }
++ else
++ {
++ if (TREE_CODE (*node) == FUNCTION_TYPE
++ || TREE_CODE (*node) == METHOD_TYPE)
++ {
++ if (avr32_isr_value (args) == AVR32_FT_UNKNOWN)
++ {
++ warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
++ *no_add_attrs = true;
++ }
++ }
++ else if (TREE_CODE (*node) == POINTER_TYPE
++ && (TREE_CODE (TREE_TYPE (*node)) == FUNCTION_TYPE
++ || TREE_CODE (TREE_TYPE (*node)) == METHOD_TYPE)
++ && avr32_isr_value (args) != AVR32_FT_UNKNOWN)
++ {
++ *node = build_variant_type_copy (*node);
++ TREE_TYPE (*node) = build_type_attribute_variant
++ (TREE_TYPE (*node),
++ tree_cons (name, args, TYPE_ATTRIBUTES (TREE_TYPE (*node))));
++ *no_add_attrs = true;
++ }
++ else
++ {
++ /* Possibly pass this attribute on from the type to a decl. */
++ if (flags & ((int) ATTR_FLAG_DECL_NEXT
++ | (int) ATTR_FLAG_FUNCTION_NEXT
++ | (int) ATTR_FLAG_ARRAY_NEXT))
++ {
++ *no_add_attrs = true;
++ return tree_cons (name, args, NULL_TREE);
++ }
++ else
++ {
++ warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
++ }
++ }
++ }
++
++ return NULL_TREE;
++}
++
++/* Handle an attribute requiring a FUNCTION_DECL;
++ arguments as in struct attribute_spec.handler. */
++static tree
++avr32_handle_fndecl_attribute (tree * node, tree name,
++ tree args ATTRIBUTE_UNUSED,
++ int flags ATTRIBUTE_UNUSED,
++ bool * no_add_attrs)
++{
++ if (TREE_CODE (*node) != FUNCTION_DECL)
++ {
++ warning ("%qs attribute only applies to functions",
++ IDENTIFIER_POINTER (name));
++ *no_add_attrs = true;
++ }
++
++ return NULL_TREE;
++}
++
++
++/* Handle an acall attribute;
++ arguments as in struct attribute_spec.handler. */
++
++static tree
++avr32_handle_acall_attribute (tree * node, tree name,
++ tree args ATTRIBUTE_UNUSED,
++ int flags ATTRIBUTE_UNUSED, bool * no_add_attrs)
++{
++ if (TREE_CODE (*node) == FUNCTION_TYPE || TREE_CODE (*node) == METHOD_TYPE)
++ {
++ warning ("`%s' attribute not yet supported...",
++ IDENTIFIER_POINTER (name));
++ *no_add_attrs = true;
++ return NULL_TREE;
++ }
++
++ warning ("`%s' attribute only applies to functions",
++ IDENTIFIER_POINTER (name));
++ *no_add_attrs = true;
++ return NULL_TREE;
++}
++
++
++/* Return 0 if the attributes for two types are incompatible, 1 if they
++ are compatible, and 2 if they are nearly compatible (which causes a
++ warning to be generated). */
++
++static int
++avr32_comp_type_attributes (tree type1, tree type2)
++{
++ int acall1, acall2, isr1, isr2, naked1, naked2;
++
++ /* Check for mismatch of non-default calling convention. */
++ if (TREE_CODE (type1) != FUNCTION_TYPE)
++ return 1;
++
++ /* Check for mismatched call attributes. */
++ acall1 = lookup_attribute ("acall", TYPE_ATTRIBUTES (type1)) != NULL;
++ acall2 = lookup_attribute ("acall", TYPE_ATTRIBUTES (type2)) != NULL;
++ naked1 = lookup_attribute ("naked", TYPE_ATTRIBUTES (type1)) != NULL;
++ naked2 = lookup_attribute ("naked", TYPE_ATTRIBUTES (type2)) != NULL;
++ isr1 = lookup_attribute ("isr", TYPE_ATTRIBUTES (type1)) != NULL;
++ if (!isr1)
++ isr1 = lookup_attribute ("interrupt", TYPE_ATTRIBUTES (type1)) != NULL;
++
++ isr2 = lookup_attribute ("isr", TYPE_ATTRIBUTES (type2)) != NULL;
++ if (!isr2)
++ isr2 = lookup_attribute ("interrupt", TYPE_ATTRIBUTES (type2)) != NULL;
++
++ if ((acall1 && isr2)
++ || (acall2 && isr1) || (naked1 && isr2) || (naked2 && isr1))
++ return 0;
++
++ return 1;
++}
++
++
++/* Computes the type of the current function. */
++
++static unsigned long
++avr32_compute_func_type (void)
++{
++ unsigned long type = AVR32_FT_UNKNOWN;
++ tree a;
++ tree attr;
++
++ if (TREE_CODE (current_function_decl) != FUNCTION_DECL)
++ abort ();
++
++ /* Decide if the current function is volatile. Such functions never
++ return, and many memory cycles can be saved by not storing register
++ values that will never be needed again. This optimization was added to
++ speed up context switching in a kernel application. */
++ if (optimize > 0
++ && TREE_NOTHROW (current_function_decl)
++ && TREE_THIS_VOLATILE (current_function_decl))
++ type |= AVR32_FT_VOLATILE;
++
++ if (cfun->static_chain_decl != NULL)
++ type |= AVR32_FT_NESTED;
++
++ attr = DECL_ATTRIBUTES (current_function_decl);
++
++ a = lookup_attribute ("isr", attr);
++ if (a == NULL_TREE)
++ a = lookup_attribute ("interrupt", attr);
++
++ if (a == NULL_TREE)
++ type |= AVR32_FT_NORMAL;
++ else
++ type |= avr32_isr_value (TREE_VALUE (a));
++
++
++ a = lookup_attribute ("acall", attr);
++ if (a != NULL_TREE)
++ type |= AVR32_FT_ACALL;
++
++ a = lookup_attribute ("naked", attr);
++ if (a != NULL_TREE)
++ type |= AVR32_FT_NAKED;
++
++ return type;
++}
++
++/* Returns the type of the current function. */
++
++static unsigned long
++avr32_current_func_type (void)
++{
++ if (AVR32_FUNC_TYPE (cfun->machine->func_type) == AVR32_FT_UNKNOWN)
++ cfun->machine->func_type = avr32_compute_func_type ();
++
++ return cfun->machine->func_type;
++}
++
++/*
++ This target hook should return true if we should not pass type solely
++ in registers. The file expr.h defines a definition that is usually appropriate,
++ refer to expr.h for additional documentation.
++*/
++bool
++avr32_must_pass_in_stack (enum machine_mode mode ATTRIBUTE_UNUSED, tree type)
++{
++ if (type && AGGREGATE_TYPE_P (type)
++ /* If the alignment is less than the size then pass in the struct on
++ the stack. */
++ && ((unsigned int) TYPE_ALIGN_UNIT (type) <
++ (unsigned int) int_size_in_bytes (type))
++ /* If we support unaligned word accesses then structs of size 4 and 8
++ can have any alignment and still be passed in registers. */
++ && !(TARGET_UNALIGNED_WORD
++ && (int_size_in_bytes (type) == 4
++ || int_size_in_bytes (type) == 8))
++ /* Double word structs need only a word alignment. */
++ && !(int_size_in_bytes (type) == 8 && TYPE_ALIGN_UNIT (type) >= 4))
++ return true;
++
++ if (type && AGGREGATE_TYPE_P (type)
++ /* Structs of size 3,5,6,7 are always passed in registers. */
++ && (int_size_in_bytes (type) == 3
++ || int_size_in_bytes (type) == 5
++ || int_size_in_bytes (type) == 6 || int_size_in_bytes (type) == 7))
++ return true;
++
++
++ return (type && TREE_ADDRESSABLE (type));
++}
++
++
++bool
++avr32_strict_argument_naming (CUMULATIVE_ARGS * ca ATTRIBUTE_UNUSED)
++{
++ return true;
++}
++
++/*
++ This target hook should return true if an argument at the position indicated
++ by cum should be passed by reference. This predicate is queried after target
++ independent reasons for being passed by reference, such as TREE_ADDRESSABLE (type).
++
++ If the hook returns true, a copy of that argument is made in memory and a
++ pointer to the argument is passed instead of the argument itself. The pointer
++ is passed in whatever way is appropriate for passing a pointer to that type.
++*/
++bool
++avr32_pass_by_reference (CUMULATIVE_ARGS * cum ATTRIBUTE_UNUSED,
++ enum machine_mode mode ATTRIBUTE_UNUSED,
++ tree type, bool named ATTRIBUTE_UNUSED)
++{
++ return (type && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST));
++}
++
++static int
++avr32_arg_partial_bytes (CUMULATIVE_ARGS * pcum ATTRIBUTE_UNUSED,
++ enum machine_mode mode ATTRIBUTE_UNUSED,
++ tree type ATTRIBUTE_UNUSED,
++ bool named ATTRIBUTE_UNUSED)
++{
++ return 0;
++}
++
++
++struct gcc_target targetm = TARGET_INITIALIZER;
++
++/*
++ Table used to convert from register number in the assembler instructions and
++ the register numbers used in gcc.
++*/
++const int avr32_function_arg_reglist[] =
++{
++ INTERNAL_REGNUM (12),
++ INTERNAL_REGNUM (11),
++ INTERNAL_REGNUM (10),
++ INTERNAL_REGNUM (9),
++ INTERNAL_REGNUM (8)
++};
++
++rtx avr32_compare_op0 = NULL_RTX;
++rtx avr32_compare_op1 = NULL_RTX;
++rtx avr32_compare_operator = NULL_RTX;
++rtx avr32_acc_cache = NULL_RTX;
++
++/*
++ Returns nonzero if it is allowed to store a value of mode mode in hard
++ register number regno.
++*/
++int
++avr32_hard_regno_mode_ok (int regnr, enum machine_mode mode)
++{
++ /* We allow only float modes in the fp-registers */
++ if (regnr >= FIRST_FP_REGNUM
++ && regnr <= LAST_FP_REGNUM && GET_MODE_CLASS (mode) != MODE_FLOAT)
++ {
++ return 0;
++ }
++
++ switch (mode)
++ {
++ case DImode: /* long long */
++ case DFmode: /* double */
++ case SCmode: /* __complex__ float */
++ case CSImode: /* __complex__ int */
++ if (regnr < 4)
++ { /* long long int not supported in r12, sp, lr
++ or pc. */
++ return 0;
++ }
++ else
++ {
++ if (regnr % 2) /* long long int has to be refered in even
++ registers. */
++ return 0;
++ else
++ return 1;
++ }
++ case CDImode: /* __complex__ long long */
++ case DCmode: /* __complex__ double */
++ case TImode: /* 16 bytes */
++ if (regnr < 7)
++ return 0;
++ else if (regnr % 2)
++ return 0;
++ else
++ return 1;
++ default:
++ return 1;
++ }
++}
++
++
++int
++avr32_rnd_operands (rtx add, rtx shift)
++{
++ if (GET_CODE (shift) == CONST_INT &&
++ GET_CODE (add) == CONST_INT && INTVAL (shift) > 0)
++ {
++ if ((1 << (INTVAL (shift) - 1)) == INTVAL (add))
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++
++
++int
++avr32_const_ok_for_constraint_p (HOST_WIDE_INT value, char c, const char *str)
++{
++ switch (c)
++ {
++ case 'K':
++ case 'I':
++ {
++ HOST_WIDE_INT min_value = 0, max_value = 0;
++ char size_str[3];
++ int const_size;
++
++ size_str[0] = str[2];
++ size_str[1] = str[3];
++ size_str[2] = '\0';
++ const_size = atoi (size_str);
++
++ if (toupper (str[1]) == 'U')
++ {
++ min_value = 0;
++ max_value = (1 << const_size) - 1;
++ }
++ else if (toupper (str[1]) == 'S')
++ {
++ min_value = -(1 << (const_size - 1));
++ max_value = (1 << (const_size - 1)) - 1;
++ }
++
++ if (c == 'I')
++ {
++ value = -value;
++ }
++
++ if (value >= min_value && value <= max_value)
++ {
++ return 1;
++ }
++ break;
++ }
++ case 'M':
++ return avr32_mask_upper_bits_operand (GEN_INT (value), VOIDmode);
++ }
++
++ return 0;
++}
++
++
++/*Compute mask of which floating-point registers needs saving upon
++ entry to this function*/
++static unsigned long
++avr32_compute_save_fp_reg_mask (void)
++{
++ unsigned long func_type = avr32_current_func_type ();
++ unsigned int save_reg_mask = 0;
++ unsigned int reg;
++ unsigned int max_reg = 7;
++ int save_all_call_used_regs = FALSE;
++
++ /* This only applies for hardware floating-point implementation. */
++ if (!TARGET_HARD_FLOAT)
++ return 0;
++
++ if (IS_INTERRUPT (func_type))
++ {
++
++ /* Interrupt functions must not corrupt any registers, even call
++ clobbered ones. If this is a leaf function we can just examine the
++ registers used by the RTL, but otherwise we have to assume that
++ whatever function is called might clobber anything, and so we have
++ to save all the call-clobbered registers as well. */
++ max_reg = 13;
++ save_all_call_used_regs = !current_function_is_leaf;
++ }
++
++ /* All used registers used must be saved */
++ for (reg = 0; reg <= max_reg; reg++)
++ if (regs_ever_live[INTERNAL_FP_REGNUM (reg)]
++ || (save_all_call_used_regs
++ && call_used_regs[INTERNAL_FP_REGNUM (reg)]))
++ save_reg_mask |= (1 << reg);
++
++ return save_reg_mask;
++}
++
++/*Compute mask of registers which needs saving upon function entry */
++static unsigned long
++avr32_compute_save_reg_mask (int push)
++{
++ unsigned long func_type;
++ unsigned int save_reg_mask = 0;
++ unsigned int reg;
++
++ func_type = avr32_current_func_type ();
++
++ if (IS_INTERRUPT (func_type))
++ {
++ unsigned int max_reg = 12;
++
++
++ /* Get the banking scheme for the interrupt */
++ switch (func_type)
++ {
++ case AVR32_FT_ISR_FULL:
++ max_reg = 0;
++ break;
++ case AVR32_FT_ISR_HALF:
++ max_reg = 7;
++ break;
++ case AVR32_FT_ISR_NONE:
++ max_reg = 12;
++ break;
++ }
++
++ /* Interrupt functions must not corrupt any registers, even call
++ clobbered ones. If this is a leaf function we can just examine the
++ registers used by the RTL, but otherwise we have to assume that
++ whatever function is called might clobber anything, and so we have
++ to save all the call-clobbered registers as well. */
++
++ /* Need not push the registers r8-r12 for AVR32A architectures, as this
++ is automatially done in hardware. We also do not have any shadow
++ registers. */
++ if (avr32_arch->uarch_type == UARCH_TYPE_AVR32A)
++ {
++ max_reg = 7;
++ func_type = AVR32_FT_ISR_NONE;
++ }
++
++ /* All registers which are used and is not shadowed must be saved */
++ for (reg = 0; reg <= max_reg; reg++)
++ if (regs_ever_live[INTERNAL_REGNUM (reg)]
++ || (!current_function_is_leaf
++ && call_used_regs[INTERNAL_REGNUM (reg)]))
++ save_reg_mask |= (1 << reg);
++
++ /* Check LR */
++ if ((regs_ever_live[LR_REGNUM] || !current_function_is_leaf || frame_pointer_needed) && (func_type == AVR32_FT_ISR_NONE) /* Only
++ non-shadowed
++ register
++ models
++ */ )
++ save_reg_mask |= (1 << ASM_REGNUM (LR_REGNUM));
++
++ /* Make sure that the GOT register is pushed. */
++ if (max_reg >= ASM_REGNUM (PIC_OFFSET_TABLE_REGNUM)
++ && current_function_uses_pic_offset_table)
++ save_reg_mask |= (1 << ASM_REGNUM (PIC_OFFSET_TABLE_REGNUM));
++
++ }
++ else
++ {
++ int use_pushm = optimize_size;
++
++ /* In the normal case we only need to save those registers which are
++ call saved and which are used by this function. */
++ for (reg = 0; reg <= 7; reg++)
++ if (regs_ever_live[INTERNAL_REGNUM (reg)]
++ && !call_used_regs[INTERNAL_REGNUM (reg)])
++ save_reg_mask |= (1 << reg);
++
++ /* Make sure that the GOT register is pushed. */
++ if (current_function_uses_pic_offset_table)
++ save_reg_mask |= (1 << ASM_REGNUM (PIC_OFFSET_TABLE_REGNUM));
++
++
++ /* If we optimize for size and do not have anonymous arguments: use
++ popm/pushm always */
++ if (use_pushm)
++ {
++ if ((save_reg_mask & (1 << 0))
++ || (save_reg_mask & (1 << 1))
++ || (save_reg_mask & (1 << 2)) || (save_reg_mask & (1 << 3)))
++ save_reg_mask |= 0xf;
++
++ if ((save_reg_mask & (1 << 4))
++ || (save_reg_mask & (1 << 5))
++ || (save_reg_mask & (1 << 6)) || (save_reg_mask & (1 << 7)))
++ save_reg_mask |= 0xf0;
++
++ if ((save_reg_mask & (1 << 8)) || (save_reg_mask & (1 << 9)))
++ save_reg_mask |= 0x300;
++ }
++
++
++ /* Check LR */
++ if ((regs_ever_live[LR_REGNUM] || !current_function_is_leaf ||
++ (optimize_size && save_reg_mask) || frame_pointer_needed))
++ {
++ if (push)
++ {
++ /* Push/Pop LR */
++ save_reg_mask |= (1 << ASM_REGNUM (LR_REGNUM));
++ }
++ else
++ {
++ /* Pop PC */
++ save_reg_mask |= (1 << ASM_REGNUM (PC_REGNUM));
++ }
++ }
++ }
++
++ return save_reg_mask;
++}
++
++/*Compute total size in bytes of all saved registers */
++static int
++avr32_get_reg_mask_size (int reg_mask)
++{
++ int reg, size;
++ size = 0;
++
++ for (reg = 0; reg <= 15; reg++)
++ if (reg_mask & (1 << reg))
++ size += 4;
++
++ return size;
++}
++
++/*Get a register from one of the registers which are saved onto the stack
++ upon function entry */
++
++static int
++avr32_get_saved_reg (int save_reg_mask)
++{
++ unsigned int reg;
++
++ /* Find the first register which is saved in the saved_reg_mask */
++ for (reg = 0; reg <= 15; reg++)
++ if (save_reg_mask & (1 << reg))
++ return reg;
++
++ return -1;
++}
++
++/* Return 1 if it is possible to return using a single instruction. */
++int
++avr32_use_return_insn (int iscond)
++{
++ unsigned int func_type = avr32_current_func_type ();
++ unsigned long saved_int_regs;
++ unsigned long saved_fp_regs;
++
++ /* Never use a return instruction before reload has run. */
++ if (!reload_completed)
++ return 0;
++
++ /* Must adjust the stack for vararg functions. */
++ if (current_function_args_info.uses_anonymous_args)
++ return 0;
++
++ /* If there a stack adjstment. */
++ if (get_frame_size ())
++ return 0;
++
++ saved_int_regs = avr32_compute_save_reg_mask (TRUE);
++ saved_fp_regs = avr32_compute_save_fp_reg_mask ();
++
++ /* Functions which have saved fp-regs on the stack can not be performed in
++ one instruction */
++ if (saved_fp_regs)
++ return 0;
++
++ /* Conditional returns can not be performed in one instruction if we need
++ to restore registers from the stack */
++ if (iscond && saved_int_regs)
++ return 0;
++
++ /* Conditional return can not be used for interrupt handlers. */
++ if (iscond && IS_INTERRUPT (func_type))
++ return 0;
++
++ /* For interrupt handlers which needs to pop registers */
++ if (saved_int_regs && IS_INTERRUPT (func_type))
++ return 0;
++
++
++ /* If there are saved registers but the LR isn't saved, then we need two
++ instructions for the return. */
++ if (saved_int_regs && !(saved_int_regs & (1 << ASM_REGNUM (LR_REGNUM))))
++ return 0;
++
++
++ return 1;
++}
++
++
++/*Generate some function prologue info in the assembly file*/
++
++void
++avr32_target_asm_function_prologue (FILE * f, HOST_WIDE_INT frame_size)
++{
++ if (IS_NAKED (avr32_current_func_type ()))
++ fprintf (f,
++ "\t# Function is naked: Prologue and epilogue provided by programmer\n");
++
++ if (IS_INTERRUPT (avr32_current_func_type ()))
++ {
++ switch (avr32_current_func_type ())
++ {
++ case AVR32_FT_ISR_FULL:
++ fprintf (f,
++ "\t# Interrupt Function: Fully shadowed register file\n");
++ break;
++ case AVR32_FT_ISR_HALF:
++ fprintf (f,
++ "\t# Interrupt Function: Half shadowed register file\n");
++ break;
++ default:
++ case AVR32_FT_ISR_NONE:
++ fprintf (f, "\t# Interrupt Function: No shadowed register file\n");
++ break;
++ }
++ }
++
++
++ fprintf (f, "\t# args = %i, frame = %li, pretend = %i\n",
++ current_function_args_size, frame_size,
++ current_function_pretend_args_size);
++
++ fprintf (f, "\t# frame_needed = %i, leaf_function = %i\n",
++ frame_pointer_needed, current_function_is_leaf);
++
++ fprintf (f, "\t# uses_anonymous_args = %i\n",
++ current_function_args_info.uses_anonymous_args);
++}
++
++
++/* Generate and emit an insn that we will recognize as a pushm or stm.
++ Unfortunately, since this insn does not reflect very well the actual
++ semantics of the operation, we need to annotate the insn for the benefit
++ of DWARF2 frame unwind information. */
++
++int avr32_convert_to_reglist16 (int reglist8_vect);
++
++static rtx
++emit_multi_reg_push (int reglist, int usePUSHM)
++{
++ rtx insn;
++ rtx dwarf;
++ rtx tmp;
++ rtx reg;
++ int i;
++ int nr_regs;
++ int index = 0;
++
++ if (usePUSHM)
++ {
++ insn = emit_insn (gen_pushm (gen_rtx_CONST_INT (SImode, reglist)));
++ reglist = avr32_convert_to_reglist16 (reglist);
++ }
++ else
++ {
++ insn = emit_insn (gen_stm (stack_pointer_rtx,
++ gen_rtx_CONST_INT (SImode, reglist),
++ gen_rtx_CONST_INT (SImode, 1)));
++ }
++
++ nr_regs = avr32_get_reg_mask_size (reglist) / 4;
++ dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (nr_regs + 1));
++
++ for (i = 15; i >= 0; i--)
++ {
++ if (reglist & (1 << i))
++ {
++ reg = gen_rtx_REG (SImode, INTERNAL_REGNUM (i));
++ tmp = gen_rtx_SET (VOIDmode,
++ gen_rtx_MEM (SImode,
++ plus_constant (stack_pointer_rtx,
++ 4 * index)), reg);
++ RTX_FRAME_RELATED_P (tmp) = 1;
++ XVECEXP (dwarf, 0, 1 + index++) = tmp;
++ }
++ }
++
++ tmp = gen_rtx_SET (SImode,
++ stack_pointer_rtx,
++ gen_rtx_PLUS (SImode,
++ stack_pointer_rtx,
++ GEN_INT (-4 * nr_regs)));
++ RTX_FRAME_RELATED_P (tmp) = 1;
++ XVECEXP (dwarf, 0, 0) = tmp;
++ REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
++ REG_NOTES (insn));
++ return insn;
++}
++
++
++static rtx
++emit_multi_fp_reg_push (int reglist)
++{
++ rtx insn;
++ rtx dwarf;
++ rtx tmp;
++ rtx reg;
++ int i;
++ int nr_regs;
++ int index = 0;
++
++ insn = emit_insn (gen_stm_fp (stack_pointer_rtx,
++ gen_rtx_CONST_INT (SImode, reglist),
++ gen_rtx_CONST_INT (SImode, 1)));
++
++ nr_regs = avr32_get_reg_mask_size (reglist) / 4;
++ dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (nr_regs + 1));
++
++ for (i = 15; i >= 0; i--)
++ {
++ if (reglist & (1 << i))
++ {
++ reg = gen_rtx_REG (SImode, INTERNAL_FP_REGNUM (i));
++ tmp = gen_rtx_SET (VOIDmode,
++ gen_rtx_MEM (SImode,
++ plus_constant (stack_pointer_rtx,
++ 4 * index)), reg);
++ RTX_FRAME_RELATED_P (tmp) = 1;
++ XVECEXP (dwarf, 0, 1 + index++) = tmp;
++ }
++ }
++
++ tmp = gen_rtx_SET (SImode,
++ stack_pointer_rtx,
++ gen_rtx_PLUS (SImode,
++ stack_pointer_rtx,
++ GEN_INT (-4 * nr_regs)));
++ RTX_FRAME_RELATED_P (tmp) = 1;
++ XVECEXP (dwarf, 0, 0) = tmp;
++ REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
++ REG_NOTES (insn));
++ return insn;
++}
++
++rtx
++avr32_gen_load_multiple (rtx * regs, int count, rtx from,
++ int write_back, int in_struct_p, int scalar_p)
++{
++
++ rtx result;
++ int i = 0, j;
++
++ result =
++ gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count + (write_back ? 1 : 0)));
++
++ if (write_back)
++ {
++ XVECEXP (result, 0, 0)
++ = gen_rtx_SET (GET_MODE (from), from,
++ plus_constant (from, count * 4));
++ i = 1;
++ count++;
++ }
++
++
++ for (j = 0; i < count; i++, j++)
++ {
++ rtx unspec;
++ rtx mem = gen_rtx_MEM (SImode, plus_constant (from, j * 4));
++ MEM_IN_STRUCT_P (mem) = in_struct_p;
++ MEM_SCALAR_P (mem) = scalar_p;
++ unspec = gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, mem), UNSPEC_LDM);
++ XVECEXP (result, 0, i) = gen_rtx_SET (VOIDmode, regs[j], unspec);
++ }
++
++ return result;
++}
++
++
++rtx
++avr32_gen_store_multiple (rtx * regs, int count, rtx to,
++ int in_struct_p, int scalar_p)
++{
++ rtx result;
++ int i = 0, j;
++
++ result = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count));
++
++ for (j = 0; i < count; i++, j++)
++ {
++ rtx mem = gen_rtx_MEM (SImode, plus_constant (to, j * 4));
++ MEM_IN_STRUCT_P (mem) = in_struct_p;
++ MEM_SCALAR_P (mem) = scalar_p;
++ XVECEXP (result, 0, i)
++ = gen_rtx_SET (VOIDmode, mem,
++ gen_rtx_UNSPEC (VOIDmode,
++ gen_rtvec (1, regs[j]),
++ UNSPEC_STORE_MULTIPLE));
++ }
++
++ return result;
++}
++
++
++/* Move a block of memory if it is word aligned or we support unaligned
++ word memory accesses. The size must be maximum 64 bytes. */
++
++int
++avr32_gen_movmemsi (rtx * operands)
++{
++ HOST_WIDE_INT bytes_to_go;
++ rtx src, dst;
++ rtx st_src, st_dst;
++ int ptr_offset = 0;
++ int block_size;
++ int dst_in_struct_p, src_in_struct_p;
++ int dst_scalar_p, src_scalar_p;
++ int unaligned;
++
++ if (GET_CODE (operands[2]) != CONST_INT
++ || GET_CODE (operands[3]) != CONST_INT
++ || INTVAL (operands[2]) > 64
++ || ((INTVAL (operands[3]) & 3) && !TARGET_UNALIGNED_WORD))
++ return 0;
++
++ unaligned = (INTVAL (operands[3]) & 3) != 0;
++
++ block_size = 4;
++
++ st_dst = XEXP (operands[0], 0);
++ st_src = XEXP (operands[1], 0);
++
++ dst_in_struct_p = MEM_IN_STRUCT_P (operands[0]);
++ dst_scalar_p = MEM_SCALAR_P (operands[0]);
++ src_in_struct_p = MEM_IN_STRUCT_P (operands[1]);
++ src_scalar_p = MEM_SCALAR_P (operands[1]);
++
++ dst = copy_to_mode_reg (SImode, st_dst);
++ src = copy_to_mode_reg (SImode, st_src);
++
++ bytes_to_go = INTVAL (operands[2]);
++
++ while (bytes_to_go)
++ {
++ enum machine_mode move_mode;
++ /* Seems to be a problem with reloads for the movti pattern so this is
++ disabled until that problem is resolved */
++
++ /* if ( bytes_to_go >= GET_MODE_SIZE(TImode) ) move_mode = TImode; else
++ */
++ if ((bytes_to_go >= GET_MODE_SIZE (DImode)) && !unaligned)
++ move_mode = DImode;
++ else if (bytes_to_go >= GET_MODE_SIZE (SImode))
++ move_mode = SImode;
++ else
++ move_mode = QImode;
++
++ {
++ rtx dst_mem = gen_rtx_MEM (move_mode,
++ gen_rtx_PLUS (SImode, dst,
++ GEN_INT (ptr_offset)));
++ rtx src_mem = gen_rtx_MEM (move_mode,
++ gen_rtx_PLUS (SImode, src,
++ GEN_INT (ptr_offset)));
++ ptr_offset += GET_MODE_SIZE (move_mode);
++ bytes_to_go -= GET_MODE_SIZE (move_mode);
++
++ MEM_IN_STRUCT_P (dst_mem) = dst_in_struct_p;
++ MEM_SCALAR_P (dst_mem) = dst_scalar_p;
++
++ MEM_IN_STRUCT_P (src_mem) = src_in_struct_p;
++ MEM_SCALAR_P (src_mem) = src_scalar_p;
++ emit_move_insn (dst_mem, src_mem);
++
++ }
++ }
++
++ return 1;
++}
++
++
++
++/*Expand the prologue instruction*/
++void
++avr32_expand_prologue (void)
++{
++ rtx insn, dwarf;
++ unsigned long saved_reg_mask, saved_fp_reg_mask;
++ int reglist8 = 0;
++
++ /* Naked functions does not have a prologue */
++ if (IS_NAKED (avr32_current_func_type ()))
++ return;
++
++ saved_reg_mask = avr32_compute_save_reg_mask (TRUE);
++
++ if (saved_reg_mask)
++ {
++ /* Must push used registers */
++
++ /* Should we use POPM or LDM? */
++ int usePUSHM = TRUE;
++ reglist8 = 0;
++ if (((saved_reg_mask & (1 << 0)) ||
++ (saved_reg_mask & (1 << 1)) ||
++ (saved_reg_mask & (1 << 2)) || (saved_reg_mask & (1 << 3))))
++ {
++ /* One of R0-R3 should at least be pushed */
++ if (((saved_reg_mask & (1 << 0)) &&
++ (saved_reg_mask & (1 << 1)) &&
++ (saved_reg_mask & (1 << 2)) && (saved_reg_mask & (1 << 3))))
++ {
++ /* All should be pushed */
++ reglist8 |= 0x01;
++ }
++ else
++ {
++ usePUSHM = FALSE;
++ }
++ }
++
++ if (((saved_reg_mask & (1 << 4)) ||
++ (saved_reg_mask & (1 << 5)) ||
++ (saved_reg_mask & (1 << 6)) || (saved_reg_mask & (1 << 7))))
++ {
++ /* One of R4-R7 should at least be pushed */
++ if (((saved_reg_mask & (1 << 4)) &&
++ (saved_reg_mask & (1 << 5)) &&
++ (saved_reg_mask & (1 << 6)) && (saved_reg_mask & (1 << 7))))
++ {
++ if (usePUSHM)
++ /* All should be pushed */
++ reglist8 |= 0x02;
++ }
++ else
++ {
++ usePUSHM = FALSE;
++ }
++ }
++
++ if (((saved_reg_mask & (1 << 8)) || (saved_reg_mask & (1 << 9))))
++ {
++ /* One of R8-R9 should at least be pushed */
++ if (((saved_reg_mask & (1 << 8)) && (saved_reg_mask & (1 << 9))))
++ {
++ if (usePUSHM)
++ /* All should be pushed */
++ reglist8 |= 0x04;
++ }
++ else
++ {
++ usePUSHM = FALSE;
++ }
++ }
++
++ if (saved_reg_mask & (1 << 10))
++ reglist8 |= 0x08;
++
++ if (saved_reg_mask & (1 << 11))
++ reglist8 |= 0x10;
++
++ if (saved_reg_mask & (1 << 12))
++ reglist8 |= 0x20;
++
++ if (saved_reg_mask & (1 << ASM_REGNUM (LR_REGNUM)))
++ {
++ /* Push LR */
++ reglist8 |= 0x40;
++ }
++
++ if (usePUSHM)
++ {
++ insn = emit_multi_reg_push (reglist8, TRUE);
++ }
++ else
++ {
++ insn = emit_multi_reg_push (saved_reg_mask, FALSE);
++ }
++ RTX_FRAME_RELATED_P (insn) = 1;
++
++ /* Prevent this instruction from being scheduled after any other
++ instructions. */
++ emit_insn (gen_blockage ());
++ }
++
++ saved_fp_reg_mask = avr32_compute_save_fp_reg_mask ();
++ if (saved_fp_reg_mask)
++ {
++ insn = emit_multi_fp_reg_push (saved_fp_reg_mask);
++ RTX_FRAME_RELATED_P (insn) = 1;
++
++ /* Prevent this instruction from being scheduled after any other
++ instructions. */
++ emit_insn (gen_blockage ());
++ }
++
++ /* Set frame pointer */
++ if (frame_pointer_needed)
++ {
++ insn = emit_move_insn (frame_pointer_rtx, stack_pointer_rtx);
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++
++ if (get_frame_size () > 0)
++ {
++ if (avr32_const_ok_for_constraint_p (get_frame_size (), 'K', "Ks21"))
++ {
++ insn = emit_insn (gen_rtx_SET (SImode,
++ stack_pointer_rtx,
++ gen_rtx_PLUS (SImode,
++ stack_pointer_rtx,
++ gen_rtx_CONST_INT
++ (SImode,
++ -get_frame_size
++ ()))));
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++ else
++ {
++ /* Immediate is larger than k21 We must either check if we can use
++ one of the pushed reegisters as temporary storage or we must
++ make us a temp register by pushing a register to the stack. */
++ rtx temp_reg, const_pool_entry, insn;
++ if (saved_reg_mask)
++ {
++ temp_reg =
++ gen_rtx_REG (SImode,
++ INTERNAL_REGNUM (avr32_get_saved_reg
++ (saved_reg_mask)));
++ }
++ else
++ {
++ temp_reg = gen_rtx_REG (SImode, INTERNAL_REGNUM (7));
++ emit_move_insn (gen_rtx_MEM
++ (SImode,
++ gen_rtx_PRE_DEC (SImode, stack_pointer_rtx)),
++ temp_reg);
++ }
++
++ const_pool_entry =
++ force_const_mem (SImode,
++ gen_rtx_CONST_INT (SImode, get_frame_size ()));
++ emit_move_insn (temp_reg, const_pool_entry);
++
++ insn = emit_insn (gen_rtx_SET (SImode,
++ stack_pointer_rtx,
++ gen_rtx_MINUS (SImode,
++ stack_pointer_rtx,
++ temp_reg)));
++
++ dwarf = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
++ gen_rtx_PLUS (SImode, stack_pointer_rtx,
++ GEN_INT (-get_frame_size ())));
++ REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
++ dwarf, REG_NOTES (insn));
++ RTX_FRAME_RELATED_P (insn) = 1;
++
++ if (!saved_reg_mask)
++ {
++ insn =
++ emit_move_insn (temp_reg,
++ gen_rtx_MEM (SImode,
++ gen_rtx_POST_INC (SImode,
++ gen_rtx_REG
++ (SImode,
++ 13))));
++ }
++
++ /* Mark the temp register as dead */
++ REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_DEAD, temp_reg,
++ REG_NOTES (insn));
++
++
++ }
++
++ /* Prevent the the stack adjustment to be scheduled after any
++ instructions using the frame pointer. */
++ emit_insn (gen_blockage ());
++ }
++
++ /* Load GOT */
++ if (flag_pic)
++ {
++ avr32_load_pic_register ();
++
++ /* gcc does not know that load or call instructions might use the pic
++ register so it might schedule these instructions before the loading
++ of the pic register. To avoid this emit a barrier for now. TODO!
++ Find out a better way to let gcc know which instructions might use
++ the pic register. */
++ emit_insn (gen_blockage ());
++ }
++ return;
++}
++
++void
++avr32_set_return_address (rtx source)
++{
++ rtx addr;
++ unsigned long saved_regs;
++
++ saved_regs = avr32_compute_save_reg_mask (TRUE);
++
++ if (!(saved_regs & (1 << ASM_REGNUM (LR_REGNUM))))
++ emit_move_insn (gen_rtx_REG (Pmode, LR_REGNUM), source);
++ else
++ {
++ if (frame_pointer_needed)
++ addr = gen_rtx_REG (Pmode, FRAME_POINTER_REGNUM);
++ else
++ /* FIXME: Need to use scratch register if frame is large */
++ addr = plus_constant (stack_pointer_rtx, get_frame_size ());
++
++ emit_move_insn (gen_rtx_MEM (Pmode, addr), source);
++ }
++}
++
++
++
++/* Return the length of INSN. LENGTH is the initial length computed by
++ attributes in the machine-description file. */
++
++int
++avr32_adjust_insn_length (rtx insn ATTRIBUTE_UNUSED,
++ int length ATTRIBUTE_UNUSED)
++{
++ return length;
++}
++
++void
++avr32_output_return_instruction (int single_ret_inst ATTRIBUTE_UNUSED,
++ int iscond ATTRIBUTE_UNUSED,
++ rtx cond ATTRIBUTE_UNUSED, rtx r12_imm)
++{
++
++ unsigned long saved_reg_mask, saved_fp_reg_mask;
++ int insert_ret = TRUE;
++ int reglist8 = 0;
++ int stack_adjustment = get_frame_size ();
++ unsigned int func_type = avr32_current_func_type ();
++ FILE *f = asm_out_file;
++
++ /* Naked functions does not have an epilogue */
++ if (IS_NAKED (func_type))
++ return;
++
++ saved_fp_reg_mask = avr32_compute_save_fp_reg_mask ();
++
++ saved_reg_mask = avr32_compute_save_reg_mask (FALSE);
++
++ /* Reset frame pointer */
++ if (stack_adjustment > 0)
++ {
++ if (avr32_const_ok_for_constraint_p (stack_adjustment, 'I', "Is21"))
++ {
++ fprintf (f, "\tsub sp, %i # Reset Frame Pointer\n",
++ -stack_adjustment);
++ }
++ else
++ {
++ /* TODO! Is it safe to use r8 as scratch?? */
++ fprintf (f, "\tmov r8, lo(%i) # Reset Frame Pointer\n",
++ -stack_adjustment);
++ fprintf (f, "\torh r8, hi(%i) # Reset Frame Pointer\n",
++ -stack_adjustment);
++ fprintf (f, "\tadd sp,r8 # Reset Frame Pointer\n");
++ }
++ }
++
++ if (saved_fp_reg_mask)
++ {
++ char reglist[64]; /* 64 bytes should be enough... */
++ avr32_make_fp_reglist_w (saved_fp_reg_mask, (char *) reglist);
++ fprintf (f, "\tldcm.w\tcp0, sp++, %s\n", reglist);
++ if (saved_fp_reg_mask & ~0xff)
++ {
++ saved_fp_reg_mask &= ~0xff;
++ avr32_make_fp_reglist_d (saved_fp_reg_mask, (char *) reglist);
++ fprintf (f, "\tldcm.d\tcp0, sp++, %s\n", reglist);
++ }
++ }
++
++ if (saved_reg_mask)
++ {
++ /* Must pop used registers */
++
++ /* Should we use POPM or LDM? */
++ int usePOPM = TRUE;
++ if (((saved_reg_mask & (1 << 0)) ||
++ (saved_reg_mask & (1 << 1)) ||
++ (saved_reg_mask & (1 << 2)) || (saved_reg_mask & (1 << 3))))
++ {
++ /* One of R0-R3 should at least be popped */
++ if (((saved_reg_mask & (1 << 0)) &&
++ (saved_reg_mask & (1 << 1)) &&
++ (saved_reg_mask & (1 << 2)) && (saved_reg_mask & (1 << 3))))
++ {
++ /* All should be popped */
++ reglist8 |= 0x01;
++ }
++ else
++ {
++ usePOPM = FALSE;
++ }
++ }
++
++ if (((saved_reg_mask & (1 << 4)) ||
++ (saved_reg_mask & (1 << 5)) ||
++ (saved_reg_mask & (1 << 6)) || (saved_reg_mask & (1 << 7))))
++ {
++ /* One of R0-R3 should at least be popped */
++ if (((saved_reg_mask & (1 << 4)) &&
++ (saved_reg_mask & (1 << 5)) &&
++ (saved_reg_mask & (1 << 6)) && (saved_reg_mask & (1 << 7))))
++ {
++ if (usePOPM)
++ /* All should be popped */
++ reglist8 |= 0x02;
++ }
++ else
++ {
++ usePOPM = FALSE;
++ }
++ }
++
++ if (((saved_reg_mask & (1 << 8)) || (saved_reg_mask & (1 << 9))))
++ {
++ /* One of R8-R9 should at least be pushed */
++ if (((saved_reg_mask & (1 << 8)) && (saved_reg_mask & (1 << 9))))
++ {
++ if (usePOPM)
++ /* All should be pushed */
++ reglist8 |= 0x04;
++ }
++ else
++ {
++ usePOPM = FALSE;
++ }
++ }
++
++ if (saved_reg_mask & (1 << 10))
++ reglist8 |= 0x08;
++
++ if (saved_reg_mask & (1 << 11))
++ reglist8 |= 0x10;
++
++ if (saved_reg_mask & (1 << 12))
++ reglist8 |= 0x20;
++
++ if (saved_reg_mask & (1 << ASM_REGNUM (LR_REGNUM)))
++ /* Pop LR */
++ reglist8 |= 0x40;
++
++ if (saved_reg_mask & (1 << ASM_REGNUM (PC_REGNUM)))
++ /* Pop LR into PC. */
++ reglist8 |= 0x80;
++
++ if (usePOPM)
++ {
++ char reglist[64]; /* 64 bytes should be enough... */
++ avr32_make_reglist8 (reglist8, (char *) reglist);
++
++ if (reglist8 & 0x80)
++ /* This instruction is also a return */
++ insert_ret = FALSE;
++
++ if (r12_imm && !insert_ret)
++ fprintf (f, "\tpopm %s, r12=%li\n", reglist, INTVAL (r12_imm));
++ else
++ fprintf (f, "\tpopm %s\n", reglist);
++
++ }
++ else
++ {
++ char reglist[64]; /* 64 bytes should be enough... */
++ avr32_make_reglist16 (saved_reg_mask, (char *) reglist);
++ if (saved_reg_mask & (1 << ASM_REGNUM (PC_REGNUM)))
++ /* This instruction is also a return */
++ insert_ret = FALSE;
++
++ if (r12_imm && !insert_ret)
++ fprintf (f, "\tldm sp++, %s, r12=%li\n", reglist,
++ INTVAL (r12_imm));
++ else
++ fprintf (f, "\tldm sp++, %s\n", reglist);
++
++ }
++
++ }
++
++ if (IS_INTERRUPT (func_type))
++ {
++ fprintf (f, "\trete\n");
++ }
++ else if (insert_ret)
++ {
++ if (r12_imm)
++ fprintf (f, "\tretal %li\n", INTVAL (r12_imm));
++ else
++ fprintf (f, "\tretal r12\n");
++ }
++}
++
++/* Function for converting a fp-register mask to a
++ reglistCPD8 register list string. */
++void
++avr32_make_fp_reglist_d (int reglist_mask, char *reglist_string)
++{
++ int i;
++
++ /* Make sure reglist_string is empty */
++ reglist_string[0] = '\0';
++
++ for (i = 0; i < NUM_FP_REGS; i += 2)
++ {
++ if (reglist_mask & (1 << i))
++ {
++ strlen (reglist_string) ?
++ sprintf (reglist_string, "%s, %s-%s", reglist_string,
++ reg_names[INTERNAL_FP_REGNUM (i)],
++ reg_names[INTERNAL_FP_REGNUM (i + 1)]) :
++ sprintf (reglist_string, "%s-%s",
++ reg_names[INTERNAL_FP_REGNUM (i)],
++ reg_names[INTERNAL_FP_REGNUM (i + 1)]);
++ }
++ }
++}
++
++/* Function for converting a fp-register mask to a
++ reglistCP8 register list string. */
++void
++avr32_make_fp_reglist_w (int reglist_mask, char *reglist_string)
++{
++ int i;
++
++ /* Make sure reglist_string is empty */
++ reglist_string[0] = '\0';
++
++ for (i = 0; i < NUM_FP_REGS; ++i)
++ {
++ if (reglist_mask & (1 << i))
++ {
++ strlen (reglist_string) ?
++ sprintf (reglist_string, "%s, %s", reglist_string,
++ reg_names[INTERNAL_FP_REGNUM (i)]) :
++ sprintf (reglist_string, "%s", reg_names[INTERNAL_FP_REGNUM (i)]);
++ }
++ }
++}
++
++void
++avr32_make_reglist16 (int reglist16_vect, char *reglist16_string)
++{
++ int i;
++
++ /* Make sure reglist16_string is empty */
++ reglist16_string[0] = '\0';
++
++ for (i = 0; i < 16; ++i)
++ {
++ if (reglist16_vect & (1 << i))
++ {
++ strlen (reglist16_string) ?
++ sprintf (reglist16_string, "%s, %s", reglist16_string,
++ reg_names[INTERNAL_REGNUM (i)]) :
++ sprintf (reglist16_string, "%s", reg_names[INTERNAL_REGNUM (i)]);
++ }
++ }
++}
++
++int
++avr32_convert_to_reglist16 (int reglist8_vect)
++{
++ int reglist16_vect = 0;
++ if (reglist8_vect & 0x1)
++ reglist16_vect |= 0xF;
++ if (reglist8_vect & 0x2)
++ reglist16_vect |= 0xF0;
++ if (reglist8_vect & 0x4)
++ reglist16_vect |= 0x300;
++ if (reglist8_vect & 0x8)
++ reglist16_vect |= 0x400;
++ if (reglist8_vect & 0x10)
++ reglist16_vect |= 0x800;
++ if (reglist8_vect & 0x20)
++ reglist16_vect |= 0x1000;
++ if (reglist8_vect & 0x40)
++ reglist16_vect |= 0x4000;
++ if (reglist8_vect & 0x80)
++ reglist16_vect |= 0x8000;
++
++ return reglist16_vect;
++}
++
++void
++avr32_make_reglist8 (int reglist8_vect, char *reglist8_string)
++{
++ /* Make sure reglist8_string is empty */
++ reglist8_string[0] = '\0';
++
++ if (reglist8_vect & 0x1)
++ sprintf (reglist8_string, "r0-r3");
++ if (reglist8_vect & 0x2)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, r4-r7",
++ reglist8_string) :
++ sprintf (reglist8_string, "r4-r7");
++ if (reglist8_vect & 0x4)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, r8-r9",
++ reglist8_string) :
++ sprintf (reglist8_string, "r8-r9");
++ if (reglist8_vect & 0x8)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, r10",
++ reglist8_string) :
++ sprintf (reglist8_string, "r10");
++ if (reglist8_vect & 0x10)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, r11",
++ reglist8_string) :
++ sprintf (reglist8_string, "r11");
++ if (reglist8_vect & 0x20)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, r12",
++ reglist8_string) :
++ sprintf (reglist8_string, "r12");
++ if (reglist8_vect & 0x40)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, lr",
++ reglist8_string) :
++ sprintf (reglist8_string, "lr");
++ if (reglist8_vect & 0x80)
++ strlen (reglist8_string) ? sprintf (reglist8_string, "%s, pc",
++ reglist8_string) :
++ sprintf (reglist8_string, "pc");
++}
++
++int
++avr32_eh_return_data_regno (int n)
++{
++ if (n >= 0 && n <= 3)
++ return 8 + n;
++ else
++ return INVALID_REGNUM;
++}
++
++/* Compute the distance from register FROM to register TO.
++ These can be the arg pointer, the frame pointer or
++ the stack pointer.
++ Typical stack layout looks like this:
++
++ old stack pointer -> | |
++ ----
++ | | \
++ | | saved arguments for
++ | | vararg functions
++ arg_pointer -> | | /
++ --
++ | | \
++ | | call saved
++ | | registers
++ | | /
++ frame ptr -> --
++ | | \
++ | | local
++ | | variables
++ stack ptr --> | | /
++ --
++ | | \
++ | | outgoing
++ | | arguments
++ | | /
++ --
++
++ For a given funciton some or all of these stack compomnents
++ may not be needed, giving rise to the possibility of
++ eliminating some of the registers.
++
++ The values returned by this function must reflect the behaviour
++ of avr32_expand_prologue() and avr32_compute_save_reg_mask().
++
++ The sign of the number returned reflects the direction of stack
++ growth, so the values are positive for all eliminations except
++ from the soft frame pointer to the hard frame pointer. */
++
++
++int
++avr32_initial_elimination_offset (int from, int to)
++{
++ int i;
++ int call_saved_regs = 0;
++ unsigned long saved_reg_mask, saved_fp_reg_mask;
++ unsigned int local_vars = get_frame_size ();
++
++ saved_reg_mask = avr32_compute_save_reg_mask (TRUE);
++ saved_fp_reg_mask = avr32_compute_save_fp_reg_mask ();
++
++ for (i = 0; i < 16; ++i)
++ {
++ if (saved_reg_mask & (1 << i))
++ call_saved_regs += 4;
++ }
++
++ for (i = 0; i < NUM_FP_REGS; ++i)
++ {
++ if (saved_fp_reg_mask & (1 << i))
++ call_saved_regs += 4;
++ }
++
++ switch (from)
++ {
++ case ARG_POINTER_REGNUM:
++ switch (to)
++ {
++ case STACK_POINTER_REGNUM:
++ return call_saved_regs + local_vars;
++ case FRAME_POINTER_REGNUM:
++ return call_saved_regs;
++ default:
++ abort ();
++ }
++ case FRAME_POINTER_REGNUM:
++ switch (to)
++ {
++ case STACK_POINTER_REGNUM:
++ return local_vars;
++ default:
++ abort ();
++ }
++ default:
++ abort ();
++ }
++}
++
++
++/*
++ Returns a rtx used when passing the next argument to a function.
++ avr32_init_cumulative_args() and avr32_function_arg_advance() sets witch
++ register to use.
++*/
++rtx
++avr32_function_arg (CUMULATIVE_ARGS * cum, enum machine_mode mode,
++ tree type, int named)
++{
++ int index = -1;
++
++ HOST_WIDE_INT arg_size, arg_rsize;
++ if (type)
++ {
++ arg_size = int_size_in_bytes (type);
++ }
++ else
++ {
++ arg_size = GET_MODE_SIZE (mode);
++ }
++ arg_rsize = PUSH_ROUNDING (arg_size);
++
++ /*
++ The last time this macro is called, it is called with mode == VOIDmode,
++ and its result is passed to the call or call_value pattern as operands 2
++ and 3 respectively. */
++ if (mode == VOIDmode)
++ {
++ return gen_rtx_CONST_INT (SImode, 22); /* ToDo: fixme. */
++ }
++
++ if ((*targetm.calls.must_pass_in_stack) (mode, type) || !named)
++ {
++ return NULL_RTX;
++ }
++
++ if (arg_rsize == 8)
++ {
++ /* use r11:r10 or r9:r8. */
++ if (!(GET_USED_INDEX (cum, 1) || GET_USED_INDEX (cum, 2)))
++ index = 1;
++ else if (!(GET_USED_INDEX (cum, 3) || GET_USED_INDEX (cum, 4)))
++ index = 3;
++ else
++ index = -1;
++ }
++ else if (arg_rsize == 4)
++ { /* Use first available register */
++ index = 0;
++ while (index <= LAST_CUM_REG_INDEX && GET_USED_INDEX (cum, index))
++ index++;
++ if (index > LAST_CUM_REG_INDEX)
++ index = -1;
++ }
++
++ SET_REG_INDEX (cum, index);
++
++ if (GET_REG_INDEX (cum) >= 0)
++ return gen_rtx_REG (mode,
++ avr32_function_arg_reglist[GET_REG_INDEX (cum)]);
++
++ return NULL_RTX;
++}
++
++/*
++ Set the register used for passing the first argument to a function.
++*/
++void
++avr32_init_cumulative_args (CUMULATIVE_ARGS * cum, tree fntype,
++ rtx libname ATTRIBUTE_UNUSED,
++ tree fndecl ATTRIBUTE_UNUSED)
++{
++ /* Set all registers as unused. */
++ SET_INDEXES_UNUSED (cum);
++
++ /* Reset uses_anonymous_args */
++ cum->uses_anonymous_args = 0;
++
++ /* Reset size of stack pushed arguments */
++ cum->stack_pushed_args_size = 0;
++
++ /* If the function is returning a value passed in memory r12 is used as a
++ Return Value Pointer. */
++
++ if (fntype != 0 && avr32_return_in_memory (TREE_TYPE (fntype), fntype))
++ {
++ SET_REG_INDEX (cum, 0);
++ SET_USED_INDEX (cum, GET_REG_INDEX (cum));
++ }
++}
++
++/*
++ Set register used for passing the next argument to a function. Only the
++ Scratch Registers are used.
++
++ number name
++ 15 r15 PC
++ 14 r14 LR
++ 13 r13 _SP_________
++ FIRST_CUM_REG 12 r12 _||_
++ 10 r11 ||
++ 11 r10 _||_ Scratch Registers
++ 8 r9 ||
++ LAST_SCRATCH_REG 9 r8 _\/_________
++ 6 r7 /\
++ 7 r6 ||
++ 4 r5 ||
++ 5 r4 ||
++ 2 r3 ||
++ 3 r2 ||
++ 0 r1 ||
++ 1 r0 _||_________
++
++*/
++void
++avr32_function_arg_advance (CUMULATIVE_ARGS * cum, enum machine_mode mode,
++ tree type, int named ATTRIBUTE_UNUSED)
++{
++ HOST_WIDE_INT arg_size, arg_rsize;
++
++ if (type)
++ {
++ arg_size = int_size_in_bytes (type);
++ }
++ else
++ {
++ arg_size = GET_MODE_SIZE (mode);
++ }
++ arg_rsize = PUSH_ROUNDING (arg_size);
++
++ /* It the argument had to be passed in stack, no register is used. */
++ if ((*targetm.calls.must_pass_in_stack) (mode, type))
++ {
++ cum->stack_pushed_args_size += PUSH_ROUNDING (int_size_in_bytes (type));
++ return;
++ }
++
++ /* Mark the used registers as "used". */
++ if (GET_REG_INDEX (cum) >= 0)
++ {
++ SET_USED_INDEX (cum, GET_REG_INDEX (cum));
++ if (arg_rsize == 8)
++ {
++ SET_USED_INDEX (cum, (GET_REG_INDEX (cum) + 1));
++ }
++ }
++ else
++ {
++ /* Had to use stack */
++ cum->stack_pushed_args_size += arg_rsize;
++ }
++}
++
++/*
++ Defines witch direction to go to find the next register to use if the
++ argument is larger then one register or for arguments shorter than an
++ int which is not promoted, such as the last part of structures with
++ size not a multiple of 4. */
++enum direction
++avr32_function_arg_padding (enum machine_mode mode ATTRIBUTE_UNUSED,
++ tree type)
++{
++ /* Pad upward for all aggregates except byte and halfword sized aggregates
++ which can be passed in registers. */
++ if (type
++ && AGGREGATE_TYPE_P (type)
++ && (int_size_in_bytes (type) != 1)
++ && !((int_size_in_bytes (type) == 2)
++ && TYPE_ALIGN_UNIT (type) >= 2)
++ && (int_size_in_bytes (type) & 0x3))
++ {
++ return upward;
++ }
++
++ return downward;
++}
++
++/*
++ Return a rtx used for the return value from a function call.
++*/
++rtx
++avr32_function_value (tree type, tree func)
++{
++ if (avr32_return_in_memory (type, func))
++ return NULL_RTX;
++
++ if (int_size_in_bytes (type) <= 4)
++ if (avr32_return_in_msb (type))
++ /* Aggregates of size less than a word which does align the data in the
++ MSB must use SImode for r12. */
++ return gen_rtx_REG (SImode, RET_REGISTER);
++ else
++ return gen_rtx_REG (TYPE_MODE (type), RET_REGISTER);
++ else if (int_size_in_bytes (type) <= 8)
++ return gen_rtx_REG (TYPE_MODE (type), INTERNAL_REGNUM (11));
++
++ return NULL_RTX;
++}
++
++/*
++ Return a rtx used for the return value from a library function call.
++*/
++rtx
++avr32_libcall_value (enum machine_mode mode)
++{
++
++ if (GET_MODE_SIZE (mode) <= 4)
++ return gen_rtx_REG (mode, RET_REGISTER);
++ else if (GET_MODE_SIZE (mode) <= 8)
++ return gen_rtx_REG (mode, INTERNAL_REGNUM (11));
++ else
++ return NULL_RTX;
++}
++
++/* Return TRUE if X references a SYMBOL_REF. */
++int
++symbol_mentioned_p (rtx x)
++{
++ const char *fmt;
++ int i;
++
++ if (GET_CODE (x) == SYMBOL_REF)
++ return 1;
++
++ fmt = GET_RTX_FORMAT (GET_CODE (x));
++
++ for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)
++ {
++ if (fmt[i] == 'E')
++ {
++ int j;
++
++ for (j = XVECLEN (x, i) - 1; j >= 0; j--)
++ if (symbol_mentioned_p (XVECEXP (x, i, j)))
++ return 1;
++ }
++ else if (fmt[i] == 'e' && symbol_mentioned_p (XEXP (x, i)))
++ return 1;
++ }
++
++ return 0;
++}
++
++/* Return TRUE if X references a LABEL_REF. */
++int
++label_mentioned_p (rtx x)
++{
++ const char *fmt;
++ int i;
++
++ if (GET_CODE (x) == LABEL_REF)
++ return 1;
++
++ fmt = GET_RTX_FORMAT (GET_CODE (x));
++ for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)
++ {
++ if (fmt[i] == 'E')
++ {
++ int j;
++
++ for (j = XVECLEN (x, i) - 1; j >= 0; j--)
++ if (label_mentioned_p (XVECEXP (x, i, j)))
++ return 1;
++ }
++ else if (fmt[i] == 'e' && label_mentioned_p (XEXP (x, i)))
++ return 1;
++ }
++
++ return 0;
++}
++
++
++int
++avr32_legitimate_pic_operand_p (rtx x)
++{
++
++ /* We can't have const, this must be broken down to a symbol. */
++ if (GET_CODE (x) == CONST)
++ return FALSE;
++
++ /* Can't access symbols or labels via the constant pool either */
++ if ((GET_CODE (x) == SYMBOL_REF
++ && CONSTANT_POOL_ADDRESS_P (x)
++ && (symbol_mentioned_p (get_pool_constant (x))
++ || label_mentioned_p (get_pool_constant (x)))))
++ return FALSE;
++
++ return TRUE;
++}
++
++
++rtx
++legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED,
++ rtx reg)
++{
++
++ if (GET_CODE (orig) == SYMBOL_REF || GET_CODE (orig) == LABEL_REF)
++ {
++ int subregs = 0;
++
++ if (reg == 0)
++ {
++ if (no_new_pseudos)
++ abort ();
++ else
++ reg = gen_reg_rtx (Pmode);
++
++ subregs = 1;
++ }
++
++ emit_move_insn (reg, orig);
++
++ /* Only set current function as using pic offset table if flag_pic is
++ set. This is because this function is also used if
++ TARGET_HAS_ASM_ADDR_PSEUDOS is set. */
++ if (flag_pic)
++ current_function_uses_pic_offset_table = 1;
++
++ /* Put a REG_EQUAL note on this insn, so that it can be optimized by
++ loop. */
++ return reg;
++ }
++ else if (GET_CODE (orig) == CONST)
++ {
++ rtx base, offset;
++
++ if (flag_pic
++ && GET_CODE (XEXP (orig, 0)) == PLUS
++ && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx)
++ return orig;
++
++ if (reg == 0)
++ {
++ if (no_new_pseudos)
++ abort ();
++ else
++ reg = gen_reg_rtx (Pmode);
++ }
++
++ if (GET_CODE (XEXP (orig, 0)) == PLUS)
++ {
++ base =
++ legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg);
++ offset =
++ legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode,
++ base == reg ? 0 : reg);
++ }
++ else
++ abort ();
++
++ if (GET_CODE (offset) == CONST_INT)
++ {
++ /* The base register doesn't really matter, we only want to test
++ the index for the appropriate mode. */
++ if (!avr32_const_ok_for_constraint_p (INTVAL (offset), 'I', "Is21"))
++ {
++ if (!no_new_pseudos)
++ offset = force_reg (Pmode, offset);
++ else
++ abort ();
++ }
++
++ if (GET_CODE (offset) == CONST_INT)
++ return plus_constant (base, INTVAL (offset));
++ }
++
++ return gen_rtx_PLUS (Pmode, base, offset);
++ }
++
++ return orig;
++}
++
++/* Generate code to load the PIC register. */
++void
++avr32_load_pic_register (void)
++{
++ rtx l1, pic_tmp;
++ rtx global_offset_table;
++
++ if ((current_function_uses_pic_offset_table == 0) || TARGET_NO_INIT_GOT)
++ return;
++
++ if (!flag_pic)
++ abort ();
++
++ l1 = gen_label_rtx ();
++
++ global_offset_table = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
++ pic_tmp =
++ gen_rtx_CONST (Pmode,
++ gen_rtx_MINUS (SImode, gen_rtx_LABEL_REF (Pmode, l1),
++ global_offset_table));
++ emit_insn (gen_pic_load_addr
++ (pic_offset_table_rtx, force_const_mem (SImode, pic_tmp)));
++ emit_insn (gen_pic_compute_got_from_pc (pic_offset_table_rtx, l1));
++
++ /* Need to emit this whether or not we obey regdecls, since setjmp/longjmp
++ can cause life info to screw up. */
++ emit_insn (gen_rtx_USE (VOIDmode, pic_offset_table_rtx));
++}
++
++
++
++/* This hook should return true if values of type type are returned at the most
++ significant end of a register (in other words, if they are padded at the
++ least significant end). You can assume that type is returned in a register;
++ the caller is required to check this. Note that the register provided by
++ FUNCTION_VALUE must be able to hold the complete return value. For example,
++ if a 1-, 2- or 3-byte structure is returned at the most significant end of a
++ 4-byte register, FUNCTION_VALUE should provide an SImode rtx. */
++bool
++avr32_return_in_msb (tree type ATTRIBUTE_UNUSED)
++{
++ /* if ( AGGREGATE_TYPE_P (type) ) if ((int_size_in_bytes(type) == 1) ||
++ ((int_size_in_bytes(type) == 2) && TYPE_ALIGN_UNIT(type) >= 2)) return
++ false; else return true; */
++
++ return false;
++}
++
++
++/*
++ Returns one if a certain function value is going to be returned in memory
++ and zero if it is going to be returned in a register.
++
++ BLKmode and all other modes that is larger than 64 bits are returned in
++ memory.
++*/
++bool
++avr32_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
++{
++ if (TYPE_MODE (type) == VOIDmode)
++ return false;
++
++ if (int_size_in_bytes (type) > (2 * UNITS_PER_WORD)
++ || int_size_in_bytes (type) == -1)
++ {
++ return true;
++ }
++
++ /* If we have an aggregate then use the same mechanism as when checking if
++ it should be passed on the stack. */
++ if (type
++ && AGGREGATE_TYPE_P (type)
++ && (*targetm.calls.must_pass_in_stack) (TYPE_MODE (type), type))
++ return true;
++
++ return false;
++}
++
++
++/* Output the constant part of the trampoline.
++ lddpc r0, pc[0x8:e] ; load static chain register
++ lddpc pc, pc[0x8:e] ; jump to subrutine
++ .long 0 ; Address to static chain,
++ ; filled in by avr32_initialize_trampoline()
++ .long 0 ; Address to subrutine,
++ ; filled in by avr32_initialize_trampoline()
++*/
++void
++avr32_trampoline_template (FILE * file)
++{
++ fprintf (file, "\tlddpc r0, pc[8]\n");
++ fprintf (file, "\tlddpc pc, pc[8]\n");
++ /* make room for the address of the static chain. */
++ fprintf (file, "\t.long\t0\n");
++ /* make room for the address to the subrutine. */
++ fprintf (file, "\t.long\t0\n");
++}
++
++
++/*
++ Initialize the variable parts of a trampoline.
++*/
++void
++avr32_initialize_trampoline (rtx addr, rtx fnaddr, rtx static_chain)
++{
++ /* Store the address to the static chain. */
++ emit_move_insn (gen_rtx_MEM
++ (SImode, plus_constant (addr, TRAMPOLINE_SIZE - 4)),
++ static_chain);
++
++ /* Store the address to the function. */
++ emit_move_insn (gen_rtx_MEM (SImode, plus_constant (addr, TRAMPOLINE_SIZE)),
++ fnaddr);
++
++ emit_insn (gen_cache (gen_rtx_REG (SImode, 13),
++ gen_rtx_CONST_INT (SImode,
++ AVR32_CACHE_INVALIDATE_ICACHE)));
++}
++
++/* Return nonzero if X is valid as an addressing register. */
++int
++avr32_address_register_rtx_p (rtx x, int strict_p)
++{
++ int regno;
++
++ if (GET_CODE (x) != REG)
++ return 0;
++
++ regno = REGNO (x);
++
++ if (strict_p)
++ return REGNO_OK_FOR_BASE_P (regno);
++
++ return (regno <= LAST_REGNUM || regno >= FIRST_PSEUDO_REGISTER);
++}
++
++/* Return nonzero if INDEX is valid for an address index operand. */
++int
++avr32_legitimate_index_p (enum machine_mode mode, rtx index, int strict_p)
++{
++ enum rtx_code code = GET_CODE (index);
++
++ if (mode == TImode)
++ return 0;
++
++ /* Standard coprocessor addressing modes. */
++ if (code == CONST_INT)
++ {
++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
++ /* Coprocessor mem insns has a smaller reach than ordinary mem insns */
++ return CONST_OK_FOR_CONSTRAINT_P (INTVAL (index), 'K', "Ku14");
++ else
++ return CONST_OK_FOR_CONSTRAINT_P (INTVAL (index), 'K', "Ks16");
++ }
++
++ if (avr32_address_register_rtx_p (index, strict_p))
++ return 1;
++
++ if (code == MULT)
++ {
++ rtx xiop0 = XEXP (index, 0);
++ rtx xiop1 = XEXP (index, 1);
++ return ((avr32_address_register_rtx_p (xiop0, strict_p)
++ && power_of_two_operand (xiop1, SImode)
++ && (INTVAL (xiop1) <= 8))
++ || (avr32_address_register_rtx_p (xiop1, strict_p)
++ && power_of_two_operand (xiop0, SImode)
++ && (INTVAL (xiop0) <= 8)));
++ }
++ else if (code == ASHIFT)
++ {
++ rtx op = XEXP (index, 1);
++
++ return (avr32_address_register_rtx_p (XEXP (index, 0), strict_p)
++ && GET_CODE (op) == CONST_INT
++ && INTVAL (op) > 0 && INTVAL (op) <= 3);
++ }
++
++ return 0;
++}
++
++/*
++ Used in the GO_IF_LEGITIMATE_ADDRESS macro. Returns a nonzero value if
++ the RTX x is a legitimate memory address.
++
++ Returns NO_REGS if the address is not legatime, GENERAL_REGS or ALL_REGS
++ if it is.
++*/
++
++/* Forward declaration*/
++int is_minipool_label (rtx label);
++
++int
++avr32_legitimate_address (enum machine_mode mode ATTRIBUTE_UNUSED,
++ rtx x, int strict)
++{
++
++ switch (GET_CODE (x))
++ {
++ case REG:
++ return avr32_address_register_rtx_p (x, strict);
++ case CONST:
++ {
++ rtx label = avr32_find_symbol (x);
++ if (label
++ &&
++ ( (CONSTANT_POOL_ADDRESS_P (label)
++ && !(flag_pic
++ && (symbol_mentioned_p (get_pool_constant (label))
++ || label_mentioned_p (get_pool_constant(label)))))
++ /* TODO! Can this ever happen??? */
++ || ((GET_CODE (label) == LABEL_REF)
++ && GET_CODE (XEXP (label, 0)) == CODE_LABEL
++ && is_minipool_label (XEXP (label, 0)))))
++ {
++ return TRUE;
++ }
++ }
++ break;
++ case LABEL_REF:
++ if (GET_CODE (XEXP (x, 0)) == CODE_LABEL
++ && is_minipool_label (XEXP (x, 0)))
++ {
++ return TRUE;
++ }
++ break;
++ case SYMBOL_REF:
++ {
++ if (CONSTANT_POOL_ADDRESS_P (x)
++ && !(flag_pic
++ && (symbol_mentioned_p (get_pool_constant (x))
++ || label_mentioned_p (get_pool_constant (x)))))
++ return TRUE;
++ /*
++ A symbol_ref is only legal if it is a function. If all of them are
++ legal, a pseudo reg that is a constant will be replaced by a
++ symbol_ref and make illegale code. SYMBOL_REF_FLAG is set by
++ ENCODE_SECTION_INFO. */
++ else if (SYMBOL_REF_RCALL_FUNCTION_P (x))
++ return TRUE;
++ break;
++ }
++ case PRE_DEC: /* (pre_dec (...)) */
++ case POST_INC: /* (post_inc (...)) */
++ return avr32_address_register_rtx_p (XEXP (x, 0), strict);
++ case PLUS: /* (plus (...) (...)) */
++ {
++ rtx xop0 = XEXP (x, 0);
++ rtx xop1 = XEXP (x, 1);
++
++ return ((avr32_address_register_rtx_p (xop0, strict)
++ && avr32_legitimate_index_p (mode, xop1, strict))
++ || (avr32_address_register_rtx_p (xop1, strict)
++ && avr32_legitimate_index_p (mode, xop0, strict)));
++ }
++ default:
++ break;
++ }
++
++ return FALSE;
++}
++
++
++int
++avr32_const_double_immediate (rtx value)
++{
++ HOST_WIDE_INT hi, lo;
++
++ if (GET_CODE (value) != CONST_DOUBLE)
++ return FALSE;
++
++ if (GET_MODE (value) == DImode)
++ {
++ hi = CONST_DOUBLE_HIGH (value);
++ lo = CONST_DOUBLE_LOW (value);
++ }
++ else
++ {
++ HOST_WIDE_INT target_float[2];
++ hi = lo = 0;
++ real_to_target (target_float, CONST_DOUBLE_REAL_VALUE (value),
++ GET_MODE (value));
++ lo = target_float[0];
++ hi = target_float[1];
++ }
++ if (avr32_const_ok_for_constraint_p (lo, 'K', "Ks21")
++ && ((GET_MODE (value) == SFmode)
++ || avr32_const_ok_for_constraint_p (hi, 'K', "Ks21")))
++ {
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++
++int
++avr32_legitimate_constant_p (rtx x)
++{
++ switch (GET_CODE (x))
++ {
++ case CONST_INT:
++ return avr32_const_ok_for_constraint_p (INTVAL (x), 'K', "Ks21");
++ case CONST_DOUBLE:
++ if (GET_MODE (x) == SFmode
++ || GET_MODE (x) == DFmode || GET_MODE (x) == DImode)
++ return avr32_const_double_immediate (x);
++ else
++ return 0;
++ case LABEL_REF:
++ return flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS;
++ case SYMBOL_REF:
++ return flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS;
++ case CONST:
++ /* We must handle this one in the movsi expansion in order for gcc not
++ to put it in the constant pool. */
++ return 0 /* flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS */ ;
++ case HIGH:
++ case CONST_VECTOR:
++ return 0;
++ default:
++ printf ("%s():\n", __FUNCTION__);
++ debug_rtx (x);
++ return 1;
++ }
++}
++
++
++/* Strip any special encoding from labels */
++const char *
++avr32_strip_name_encoding (const char *name)
++{
++ const char *stripped = name;
++
++ while (1)
++ {
++ switch (stripped[0])
++ {
++ case '#':
++ stripped = strchr (name + 1, '#') + 1;
++ break;
++ case '*':
++ stripped = &stripped[1];
++ break;
++ default:
++ return stripped;
++ }
++ }
++}
++
++
++
++/* Do anything needed before RTL is emitted for each function. */
++static struct machine_function *
++avr32_init_machine_status (void)
++{
++ struct machine_function *machine;
++ machine =
++ (machine_function *) ggc_alloc_cleared (sizeof (machine_function));
++
++#if AVR32_FT_UNKNOWN != 0
++ machine->func_type = AVR32_FT_UNKNOWN;
++#endif
++
++ machine->minipool_label_head = 0;
++ machine->minipool_label_tail = 0;
++ return machine;
++}
++
++void
++avr32_init_expanders (void)
++{
++ /* Arrange to initialize and mark the machine per-function status. */
++ init_machine_status = avr32_init_machine_status;
++}
++
++
++/* Return an RTX indicating where the return address to the
++ calling function can be found. */
++
++rtx
++avr32_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
++{
++ if (count != 0)
++ return NULL_RTX;
++
++ return get_hard_reg_initial_val (Pmode, LR_REGNUM);
++}
++
++
++void
++avr32_encode_section_info (tree decl, rtx rtl, int first)
++{
++
++ if (first && DECL_P (decl))
++ {
++ /* Set SYMBOL_REG_FLAG for local functions */
++ if (!TREE_PUBLIC (decl) && TREE_CODE (decl) == FUNCTION_DECL)
++ {
++ if ((*targetm.binds_local_p) (decl))
++ {
++ SYMBOL_REF_FLAG (XEXP (rtl, 0)) = 1;
++ }
++ }
++ }
++}
++
++
++void
++avr32_asm_output_ascii (FILE * stream, char *ptr, int len)
++{
++ int i, i_new = 0;
++ char *new_ptr = xmalloc (4 * len);
++ if (new_ptr == NULL)
++ internal_error ("Out of memory.");
++
++ for (i = 0; i < len; i++)
++ {
++ if (ptr[i] == '\n')
++ {
++ new_ptr[i_new++] = '\\';
++ new_ptr[i_new++] = '0';
++ new_ptr[i_new++] = '1';
++ new_ptr[i_new++] = '2';
++ }
++ else if (ptr[i] == '\"')
++ {
++ new_ptr[i_new++] = '\\';
++ new_ptr[i_new++] = '\"';
++ }
++ else if (ptr[i] == '\\')
++ {
++ new_ptr[i_new++] = '\\';
++ new_ptr[i_new++] = '\\';
++ }
++ else if (ptr[i] == '\0' && i + 1 < len)
++ {
++ new_ptr[i_new++] = '\\';
++ new_ptr[i_new++] = '0';
++ }
++ else
++ {
++ new_ptr[i_new++] = ptr[i];
++ }
++ }
++
++ /* Terminate new_ptr. */
++ new_ptr[i_new] = '\0';
++ fprintf (stream, "\t.ascii\t\"%s\"\n", new_ptr);
++ free (new_ptr);
++}
++
++
++void
++avr32_asm_output_label (FILE * stream, const char *name)
++{
++ name = avr32_strip_name_encoding (name);
++
++ /* Print the label. */
++ assemble_name (stream, name);
++ fprintf (stream, ":\n");
++}
++
++
++
++void
++avr32_asm_weaken_label (FILE * stream, const char *name)
++{
++ fprintf (stream, "\t.weak ");
++ assemble_name (stream, name);
++ fprintf (stream, "\n");
++}
++
++/*
++ Checks if a labelref is equal to a reserved word in the assembler. If it is,
++ insert a '_' before the label name.
++*/
++void
++avr32_asm_output_labelref (FILE * stream, const char *name)
++{
++ int verbatim = FALSE;
++ const char *stripped = name;
++ int strip_finished = FALSE;
++
++ while (!strip_finished)
++ {
++ switch (stripped[0])
++ {
++ case '#':
++ stripped = strchr (name + 1, '#') + 1;
++ break;
++ case '*':
++ stripped = &stripped[1];
++ verbatim = TRUE;
++ break;
++ default:
++ strip_finished = TRUE;
++ break;
++ }
++ }
++
++ if (verbatim)
++ fputs (stripped, stream);
++ else
++ asm_fprintf (stream, "%U%s", stripped);
++}
++
++
++
++/*
++ Check if the comparison in compare_exp is redundant
++ for the condition given in next_cond given that the
++ needed flags are already set by an earlier instruction.
++ Uses cc_prev_status to check this.
++
++ Returns NULL_RTX if the compare is not redundant
++ or the new condition to use in the conditional
++ instruction if the compare is redundant.
++*/
++static rtx
++is_compare_redundant (rtx compare_exp, rtx next_cond)
++{
++ int z_flag_valid = FALSE;
++ int n_flag_valid = FALSE;
++ rtx new_cond;
++
++ if (GET_CODE (compare_exp) != COMPARE)
++ return NULL_RTX;
++
++
++ if (GET_MODE (compare_exp) != SImode)
++ return NULL_RTX;
++
++ if (rtx_equal_p (cc_prev_status.mdep.value, compare_exp))
++ {
++ /* cc0 already contains the correct comparison -> delete cmp insn */
++ return next_cond;
++ }
++
++ switch (cc_prev_status.mdep.flags)
++ {
++ case CC_SET_VNCZ:
++ case CC_SET_NCZ:
++ n_flag_valid = TRUE;
++ case CC_SET_CZ:
++ case CC_SET_Z:
++ z_flag_valid = TRUE;
++ }
++
++ if (cc_prev_status.mdep.value
++ && REG_P (XEXP (compare_exp, 0))
++ && REGNO (XEXP (compare_exp, 0)) == REGNO (cc_prev_status.mdep.value)
++ && GET_CODE (XEXP (compare_exp, 1)) == CONST_INT
++ && next_cond != NULL_RTX)
++ {
++ if (INTVAL (XEXP (compare_exp, 1)) == 0
++ && z_flag_valid
++ && (GET_CODE (next_cond) == EQ || GET_CODE (next_cond) == NE))
++ /* We can skip comparison Z flag is already reflecting ops[0] */
++ return next_cond;
++ else if (n_flag_valid
++ && ((INTVAL (XEXP (compare_exp, 1)) == 0
++ && (GET_CODE (next_cond) == GE
++ || GET_CODE (next_cond) == LT))
++ || (INTVAL (XEXP (compare_exp, 1)) == -1
++ && (GET_CODE (next_cond) == GT
++ || GET_CODE (next_cond) == LE))))
++ {
++ /* We can skip comparison N flag is already reflecting ops[0],
++ which means that we can use the mi/pl conditions to check if
++ ops[0] is GE or LT 0. */
++ if ((GET_CODE (next_cond) == GE) || (GET_CODE (next_cond) == GT))
++ new_cond =
++ gen_rtx_UNSPEC (CCmode, gen_rtvec (2, cc0_rtx, const0_rtx),
++ UNSPEC_COND_PL);
++ else
++ new_cond =
++ gen_rtx_UNSPEC (CCmode, gen_rtvec (2, cc0_rtx, const0_rtx),
++ UNSPEC_COND_MI);
++ return new_cond;
++ }
++ }
++ return NULL_RTX;
++}
++
++/* Updates cc_status. */
++void
++avr32_notice_update_cc (rtx exp, rtx insn)
++{
++ switch (get_attr_cc (insn))
++ {
++ case CC_CALL_SET:
++ CC_STATUS_INIT;
++ FPCC_STATUS_INIT;
++ /* Check if the function call returns a value in r12 */
++ if (REG_P (recog_data.operand[0])
++ && REGNO (recog_data.operand[0]) == RETVAL_REGNUM)
++ {
++ cc_status.flags = 0;
++ cc_status.mdep.value =
++ gen_rtx_COMPARE (SImode, recog_data.operand[0], const0_rtx);
++ cc_status.mdep.flags = CC_SET_VNCZ;
++
++ }
++ break;
++ case CC_COMPARE:
++ /* Check that compare will not be optimized away if so nothing should
++ be done */
++ if (is_compare_redundant (SET_SRC (exp), get_next_insn_cond (insn))
++ == NULL_RTX)
++ {
++
++ /* Reset the nonstandard flag */
++ CC_STATUS_INIT;
++ cc_status.flags = 0;
++ cc_status.mdep.value = SET_SRC (exp);
++ cc_status.mdep.flags = CC_SET_VNCZ;
++ }
++ break;
++ case CC_FPCOMPARE:
++ /* Check that floating-point compare will not be optimized away if so
++ nothing should be done */
++ if (!rtx_equal_p (cc_prev_status.mdep.fpvalue, SET_SRC (exp)))
++ {
++ /* cc0 already contains the correct comparison -> delete cmp insn */
++ /* Reset the nonstandard flag */
++ cc_status.mdep.fpvalue = SET_SRC (exp);
++ cc_status.mdep.fpflags = CC_SET_CZ;
++ }
++ break;
++ case CC_FROM_FPCC:
++ /* Flags are updated with flags from Floating-point coprocessor, set
++ CC_NOT_SIGNED flag since the flags are set so that unsigned
++ condidion codes can be used directly. */
++ CC_STATUS_INIT;
++ cc_status.flags = CC_NOT_SIGNED;
++ cc_status.mdep.value = cc_status.mdep.fpvalue;
++ cc_status.mdep.flags = cc_status.mdep.fpflags;
++ break;
++ case CC_BLD:
++ /* Bit load is kind of like an inverted testsi, because the Z flag is
++ inverted */
++ CC_STATUS_INIT;
++ cc_status.flags = CC_INVERTED;
++ cc_status.mdep.value = SET_SRC (exp);
++ cc_status.mdep.flags = CC_SET_Z;
++ break;
++ case CC_NONE:
++ /* Insn does not affect CC at all. Check if the instruction updates
++ some of the register currently reflected in cc0 */
++
++ if ((GET_CODE (exp) == SET)
++ && (cc_status.value1 || cc_status.value2 || cc_status.mdep.value)
++ && (reg_mentioned_p (SET_DEST (exp), cc_status.value1)
++ || reg_mentioned_p (SET_DEST (exp), cc_status.value2)
++ || reg_mentioned_p (SET_DEST (exp), cc_status.mdep.value)))
++ {
++ CC_STATUS_INIT;
++ }
++
++ /* If this is a parallel we must step through each of the parallel
++ expressions */
++ if (GET_CODE (exp) == PARALLEL)
++ {
++ int i;
++ for (i = 0; i < XVECLEN (exp, 0); ++i)
++ {
++ rtx vec_exp = XVECEXP (exp, 0, i);
++ if ((GET_CODE (vec_exp) == SET)
++ && (cc_status.value1 || cc_status.value2
++ || cc_status.mdep.value)
++ && (reg_mentioned_p (SET_DEST (vec_exp), cc_status.value1)
++ || reg_mentioned_p (SET_DEST (vec_exp),
++ cc_status.value2)
++ || reg_mentioned_p (SET_DEST (vec_exp),
++ cc_status.mdep.value)))
++ {
++ CC_STATUS_INIT;
++ }
++ }
++ }
++
++ /* Check if we have memory opartions with post_inc or pre_dec on the
++ register currently reflected in cc0 */
++ if (GET_CODE (exp) == SET
++ && GET_CODE (SET_SRC (exp)) == MEM
++ && (GET_CODE (XEXP (SET_SRC (exp), 0)) == POST_INC
++ || GET_CODE (XEXP (SET_SRC (exp), 0)) == PRE_DEC)
++ &&
++ (reg_mentioned_p
++ (XEXP (XEXP (SET_SRC (exp), 0), 0), cc_status.value1)
++ || reg_mentioned_p (XEXP (XEXP (SET_SRC (exp), 0), 0),
++ cc_status.value2)
++ || reg_mentioned_p (XEXP (XEXP (SET_SRC (exp), 0), 0),
++ cc_status.mdep.value)))
++ CC_STATUS_INIT;
++
++ if (GET_CODE (exp) == SET
++ && GET_CODE (SET_DEST (exp)) == MEM
++ && (GET_CODE (XEXP (SET_DEST (exp), 0)) == POST_INC
++ || GET_CODE (XEXP (SET_DEST (exp), 0)) == PRE_DEC)
++ &&
++ (reg_mentioned_p
++ (XEXP (XEXP (SET_DEST (exp), 0), 0), cc_status.value1)
++ || reg_mentioned_p (XEXP (XEXP (SET_DEST (exp), 0), 0),
++ cc_status.value2)
++ || reg_mentioned_p (XEXP (XEXP (SET_DEST (exp), 0), 0),
++ cc_status.mdep.value)))
++ CC_STATUS_INIT;
++ break;
++
++ case CC_SET_VNCZ:
++ CC_STATUS_INIT;
++ cc_status.mdep.value = recog_data.operand[0];
++ cc_status.mdep.flags = CC_SET_VNCZ;
++ break;
++
++ case CC_SET_NCZ:
++ CC_STATUS_INIT;
++ cc_status.mdep.value = recog_data.operand[0];
++ cc_status.mdep.flags = CC_SET_NCZ;
++ break;
++
++ case CC_SET_CZ:
++ CC_STATUS_INIT;
++ cc_status.mdep.value = recog_data.operand[0];
++ cc_status.mdep.flags = CC_SET_CZ;
++ break;
++
++ case CC_SET_Z:
++ CC_STATUS_INIT;
++ cc_status.mdep.value = recog_data.operand[0];
++ cc_status.mdep.flags = CC_SET_Z;
++ break;
++
++ case CC_CLOBBER:
++ CC_STATUS_INIT;
++ break;
++
++ default:
++ CC_STATUS_INIT;
++ }
++}
++
++
++/*
++ Outputs to stdio stream stream the assembler syntax for an instruction
++ operand x. x is an RTL expression.
++*/
++void
++avr32_print_operand (FILE * stream, rtx x, int code)
++{
++ int error = 0;
++
++ switch (GET_CODE (x))
++ {
++ case UNSPEC:
++ switch (XINT (x, 1))
++ {
++ case UNSPEC_COND_PL:
++ if (code == 'i')
++ fputs ("mi", stream);
++ else
++ fputs ("pl", stream);
++ break;
++ case UNSPEC_COND_MI:
++ if (code == 'i')
++ fputs ("pl", stream);
++ else
++ fputs ("mi", stream);
++ break;
++ default:
++ error = 1;
++ }
++ break;
++ case EQ:
++ if (code == 'i')
++ fputs ("ne", stream);
++ else
++ fputs ("eq", stream);
++ break;
++ case NE:
++ if (code == 'i')
++ fputs ("eq", stream);
++ else
++ fputs ("ne", stream);
++ break;
++ case GT:
++ if (code == 'i')
++ fputs ("le", stream);
++ else
++ fputs ("gt", stream);
++ break;
++ case GTU:
++ if (code == 'i')
++ fputs ("ls", stream);
++ else
++ fputs ("hi", stream);
++ break;
++ case LT:
++ if (code == 'i')
++ fputs ("ge", stream);
++ else
++ fputs ("lt", stream);
++ break;
++ case LTU:
++ if (code == 'i')
++ fputs ("hs", stream);
++ else
++ fputs ("lo", stream);
++ break;
++ case GE:
++ if (code == 'i')
++ fputs ("lt", stream);
++ else
++ fputs ("ge", stream);
++ break;
++ case GEU:
++ if (code == 'i')
++ fputs ("lo", stream);
++ else
++ fputs ("hs", stream);
++ break;
++ case LE:
++ if (code == 'i')
++ fputs ("gt", stream);
++ else
++ fputs ("le", stream);
++ break;
++ case LEU:
++ if (code == 'i')
++ fputs ("hi", stream);
++ else
++ fputs ("ls", stream);
++ break;
++ case CONST_INT:
++ {
++ int value = INTVAL (x);
++
++ if (code == 'i')
++ {
++ value++;
++ }
++
++ if (code == 'p')
++ {
++ /* Set to bit position of first bit set in immediate */
++ int i, bitpos = 32;
++ for (i = 0; i < 32; i++)
++ if (value & (1 << i))
++ {
++ bitpos = i;
++ break;
++ }
++ value = bitpos;
++ }
++
++ if (code == 'r')
++ {
++ /* Reglist 8 */
++ char op[50];
++ op[0] = '\0';
++
++ if (value & 0x01)
++ sprintf (op, "r0-r3");
++ if (value & 0x02)
++ strlen (op) ? sprintf (op, "%s, r4-r7", op) : sprintf (op,
++ "r4-r7");
++ if (value & 0x04)
++ strlen (op) ? sprintf (op, "%s, r8-r9", op) : sprintf (op,
++ "r8-r9");
++ if (value & 0x08)
++ strlen (op) ? sprintf (op, "%s, r10", op) : sprintf (op, "r10");
++ if (value & 0x10)
++ strlen (op) ? sprintf (op, "%s, r11", op) : sprintf (op, "r11");
++ if (value & 0x20)
++ strlen (op) ? sprintf (op, "%s, r12", op) : sprintf (op, "r12");
++ if (value & 0x40)
++ strlen (op) ? sprintf (op, "%s, lr", op) : sprintf (op, "lr");
++ if (value & 0x80)
++ strlen (op) ? sprintf (op, "%s, pc", op) : sprintf (op, "pc");
++
++ fputs (op, stream);
++ }
++ else if (code == 's')
++ {
++ /* Reglist 16 */
++ char reglist16_string[100];
++ int i;
++ reglist16_string[0] = '\0';
++
++ for (i = 0; i < 16; ++i)
++ {
++ if (value & (1 << i))
++ {
++ strlen (reglist16_string) ? sprintf (reglist16_string,
++ "%s, %s",
++ reglist16_string,
++ reg_names
++ [INTERNAL_REGNUM
++ (i)]) :
++ sprintf (reglist16_string, "%s",
++ reg_names[INTERNAL_REGNUM (i)]);
++ }
++ }
++ fputs (reglist16_string, stream);
++ }
++ else if (code == 'C')
++ {
++ /* RegListCP8 */
++ char reglist_string[100];
++ avr32_make_fp_reglist_w (value, (char *) reglist_string);
++ fputs (reglist_string, stream);
++ }
++ else if (code == 'D')
++ {
++ /* RegListCPD8 */
++ char reglist_string[100];
++ avr32_make_fp_reglist_d (value, (char *) reglist_string);
++ fputs (reglist_string, stream);
++ }
++ else if (code == 'd')
++ {
++ /* Print in decimal format */
++ fprintf (stream, "%d", value);
++ }
++ else if (code == 'h')
++ {
++ /* Print halfword part of word */
++ fputs (value ? "b" : "t", stream);
++ }
++ else
++ {
++ /* Normal constant */
++ fprintf (stream, "%d", value);
++ }
++ break;
++ }
++ case CONST_DOUBLE:
++ {
++ HOST_WIDE_INT hi, lo;
++ if (GET_MODE (x) == DImode)
++ {
++ hi = CONST_DOUBLE_HIGH (x);
++ lo = CONST_DOUBLE_LOW (x);
++ }
++ else
++ {
++ HOST_WIDE_INT target_float[2];
++ hi = lo = 0;
++ real_to_target (target_float, CONST_DOUBLE_REAL_VALUE (x),
++ GET_MODE (x));
++ /* For doubles the most significant part starts at index 0. */
++ if (GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD)
++ {
++ hi = target_float[0];
++ lo = target_float[1];
++ }
++ else
++ {
++ lo = target_float[0];
++ }
++ }
++
++ if (avr32_const_ok_for_constraint_p (lo, 'K', "Ks21")
++ && ((GET_MODE (x) == SFmode)
++ || avr32_const_ok_for_constraint_p (hi, 'K', "Ks21")))
++ {
++ if (code == 'm')
++ fprintf (stream, "%ld", hi);
++ else
++ fprintf (stream, "%ld", lo);
++ }
++ else
++ {
++ fprintf (stream, "value too large");
++ }
++ break;
++ }
++ case CONST:
++ output_addr_const (stream, XEXP (XEXP (x, 0), 0));
++ fprintf (stream, "+%ld", INTVAL (XEXP (XEXP (x, 0), 1)));
++ break;
++ case REG:
++ /* Swap register name if the register is DImode or DFmode. */
++ if (GET_MODE (x) == DImode || GET_MODE (x) == DFmode)
++ {
++ /* Double register must have an even numbered address */
++ gcc_assert (!(REGNO (x) % 2));
++ if (code == 'm')
++ fputs (reg_names[true_regnum (x)], stream);
++ else
++ fputs (reg_names[true_regnum (x) + 1], stream);
++ }
++ else if (GET_MODE (x) == TImode)
++ {
++ switch (code)
++ {
++ case 'T':
++ fputs (reg_names[true_regnum (x)], stream);
++ break;
++ case 'U':
++ fputs (reg_names[true_regnum (x) + 1], stream);
++ break;
++ case 'L':
++ fputs (reg_names[true_regnum (x) + 2], stream);
++ break;
++ case 'B':
++ fputs (reg_names[true_regnum (x) + 3], stream);
++ break;
++ default:
++ fprintf (stream, "%s, %s, %s, %s",
++ reg_names[true_regnum (x) + 3],
++ reg_names[true_regnum (x) + 2],
++ reg_names[true_regnum (x) + 1],
++ reg_names[true_regnum (x)]);
++ break;
++ }
++ }
++ else
++ {
++ fputs (reg_names[true_regnum (x)], stream);
++ }
++ break;
++ case CODE_LABEL:
++ case LABEL_REF:
++ case SYMBOL_REF:
++ output_addr_const (stream, x);
++ break;
++ case MEM:
++ switch (GET_CODE (XEXP (x, 0)))
++ {
++ case LABEL_REF:
++ case SYMBOL_REF:
++ output_addr_const (stream, XEXP (x, 0));
++ break;
++ case MEM:
++ switch (GET_CODE (XEXP (XEXP (x, 0), 0)))
++ {
++ case SYMBOL_REF:
++ output_addr_const (stream, XEXP (XEXP (x, 0), 0));
++ break;
++ default:
++ error = 1;
++ break;
++ }
++ break;
++ case REG:
++ avr32_print_operand (stream, XEXP (x, 0), 0);
++ if (code != 'p')
++ fputs ("[0]", stream);
++ break;
++ case PRE_DEC:
++ fputs ("--", stream);
++ avr32_print_operand (stream, XEXP (XEXP (x, 0), 0), 0);
++ break;
++ case POST_INC:
++ avr32_print_operand (stream, XEXP (XEXP (x, 0), 0), 0);
++ fputs ("++", stream);
++ break;
++ case PLUS:
++ {
++ rtx op0 = XEXP (XEXP (x, 0), 0);
++ rtx op1 = XEXP (XEXP (x, 0), 1);
++ rtx base = NULL_RTX, offset = NULL_RTX;
++
++ if (avr32_address_register_rtx_p (op0, 1))
++ {
++ base = op0;
++ offset = op1;
++ }
++ else if (avr32_address_register_rtx_p (op1, 1))
++ {
++ /* Operands are switched. */
++ base = op1;
++ offset = op0;
++ }
++
++ gcc_assert (base && offset
++ && avr32_address_register_rtx_p (base, 1)
++ && avr32_legitimate_index_p (GET_MODE (x), offset,
++ 1));
++
++ avr32_print_operand (stream, base, 0);
++ fputs ("[", stream);
++ avr32_print_operand (stream, offset, 0);
++ fputs ("]", stream);
++ break;
++ }
++ case CONST:
++ output_addr_const (stream, XEXP (XEXP (XEXP (x, 0), 0), 0));
++ fprintf (stream, " + %ld",
++ INTVAL (XEXP (XEXP (XEXP (x, 0), 0), 1)));
++ break;
++ default:
++ error = 1;
++ }
++ break;
++ case MULT:
++ {
++ int value = INTVAL (XEXP (x, 1));
++
++ /* Convert immediate in multiplication into a shift immediate */
++ switch (value)
++ {
++ case 2:
++ value = 1;
++ break;
++ case 4:
++ value = 2;
++ break;
++ case 8:
++ value = 3;
++ break;
++ default:
++ value = 0;
++ }
++ fprintf (stream, "%s << %i", reg_names[true_regnum (XEXP (x, 0))],
++ value);
++ break;
++ }
++ case ASHIFT:
++ if (GET_CODE (XEXP (x, 1)) == CONST_INT)
++ fprintf (stream, "%s << %i", reg_names[true_regnum (XEXP (x, 0))],
++ (int) INTVAL (XEXP (x, 1)));
++ else if (REG_P (XEXP (x, 1)))
++ fprintf (stream, "%s << %s", reg_names[true_regnum (XEXP (x, 0))],
++ reg_names[true_regnum (XEXP (x, 1))]);
++ else
++ {
++ error = 1;
++ }
++ break;
++ case LSHIFTRT:
++ if (GET_CODE (XEXP (x, 1)) == CONST_INT)
++ fprintf (stream, "%s >> %i", reg_names[true_regnum (XEXP (x, 0))],
++ (int) INTVAL (XEXP (x, 1)));
++ else if (REG_P (XEXP (x, 1)))
++ fprintf (stream, "%s >> %s", reg_names[true_regnum (XEXP (x, 0))],
++ reg_names[true_regnum (XEXP (x, 1))]);
++ else
++ {
++ error = 1;
++ }
++ fprintf (stream, ">>");
++ break;
++ case PARALLEL:
++ {
++ /* Load store multiple */
++ int i;
++ int count = XVECLEN (x, 0);
++ int reglist16 = 0;
++ char reglist16_string[100];
++
++ for (i = 0; i < count; ++i)
++ {
++ rtx vec_elm = XVECEXP (x, 0, i);
++ if (GET_MODE (vec_elm) != SET)
++ {
++ debug_rtx (vec_elm);
++ internal_error ("Unknown element in parallel expression!");
++ }
++ if (GET_MODE (XEXP (vec_elm, 0)) == REG)
++ {
++ /* Load multiple */
++ reglist16 |= 1 << ASM_REGNUM (REGNO (XEXP (vec_elm, 0)));
++ }
++ else
++ {
++ /* Store multiple */
++ reglist16 |= 1 << ASM_REGNUM (REGNO (XEXP (vec_elm, 1)));
++ }
++ }
++
++ avr32_make_reglist16 (reglist16, reglist16_string);
++ fputs (reglist16_string, stream);
++
++ break;
++ }
++
++ default:
++ error = 1;
++ }
++
++ if (error)
++ {
++ debug_rtx (x);
++ internal_error ("Illegal expression for avr32_print_operand");
++ }
++}
++
++rtx
++avr32_get_note_reg_equiv (rtx insn)
++{
++ rtx note;
++
++ note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
++
++ if (note != NULL_RTX)
++ return XEXP (note, 0);
++ else
++ return NULL_RTX;
++}
++
++/*
++ Outputs to stdio stream stream the assembler syntax for an instruction
++ operand that is a memory reference whose address is x. x is an RTL
++ expression.
++
++ ToDo: fixme.
++*/
++void
++avr32_print_operand_address (FILE * stream, rtx x)
++{
++ fprintf (stream, "(%d) /* address */", REGNO (x));
++}
++
++/* Return true if _GLOBAL_OFFSET_TABLE_ symbol is mentioned. */
++bool
++avr32_got_mentioned_p (rtx addr)
++{
++ if (GET_CODE (addr) == MEM)
++ addr = XEXP (addr, 0);
++ while (GET_CODE (addr) == CONST)
++ addr = XEXP (addr, 0);
++ if (GET_CODE (addr) == SYMBOL_REF)
++ {
++ return streq (XSTR (addr, 0), "_GLOBAL_OFFSET_TABLE_");
++ }
++ if (GET_CODE (addr) == PLUS || GET_CODE (addr) == MINUS)
++ {
++ bool l1, l2;
++
++ l1 = avr32_got_mentioned_p (XEXP (addr, 0));
++ l2 = avr32_got_mentioned_p (XEXP (addr, 1));
++ return l1 || l2;
++ }
++ return false;
++}
++
++
++/* Find the symbol in an address expression. */
++
++rtx
++avr32_find_symbol (rtx addr)
++{
++ if (GET_CODE (addr) == MEM)
++ addr = XEXP (addr, 0);
++
++ while (GET_CODE (addr) == CONST)
++ addr = XEXP (addr, 0);
++
++ if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == LABEL_REF)
++ return addr;
++ if (GET_CODE (addr) == PLUS)
++ {
++ rtx l1, l2;
++
++ l1 = avr32_find_symbol (XEXP (addr, 0));
++ l2 = avr32_find_symbol (XEXP (addr, 1));
++ if (l1 != NULL_RTX && l2 == NULL_RTX)
++ return l1;
++ else if (l1 == NULL_RTX && l2 != NULL_RTX)
++ return l2;
++ }
++
++ return NULL_RTX;
++}
++
++
++/* Routines for manipulation of the constant pool. */
++
++/* AVR32 instructions cannot load a large constant directly into a
++ register; they have to come from a pc relative load. The constant
++ must therefore be placed in the addressable range of the pc
++ relative load. Depending on the precise pc relative load
++ instruction the range is somewhere between 256 bytes and 4k. This
++ means that we often have to dump a constant inside a function, and
++ generate code to branch around it.
++
++ It is important to minimize this, since the branches will slow
++ things down and make the code larger.
++
++ Normally we can hide the table after an existing unconditional
++ branch so that there is no interruption of the flow, but in the
++ worst case the code looks like this:
++
++ lddpc rn, L1
++ ...
++ rjmp L2
++ align
++ L1: .long value
++ L2:
++ ...
++
++ lddpc rn, L3
++ ...
++ rjmp L4
++ align
++ L3: .long value
++ L4:
++ ...
++
++ We fix this by performing a scan after scheduling, which notices
++ which instructions need to have their operands fetched from the
++ constant table and builds the table.
++
++ The algorithm starts by building a table of all the constants that
++ need fixing up and all the natural barriers in the function (places
++ where a constant table can be dropped without breaking the flow).
++ For each fixup we note how far the pc-relative replacement will be
++ able to reach and the offset of the instruction into the function.
++
++ Having built the table we then group the fixes together to form
++ tables that are as large as possible (subject to addressing
++ constraints) and emit each table of constants after the last
++ barrier that is within range of all the instructions in the group.
++ If a group does not contain a barrier, then we forcibly create one
++ by inserting a jump instruction into the flow. Once the table has
++ been inserted, the insns are then modified to reference the
++ relevant entry in the pool.
++
++ Possible enhancements to the algorithm (not implemented) are:
++
++ 1) For some processors and object formats, there may be benefit in
++ aligning the pools to the start of cache lines; this alignment
++ would need to be taken into account when calculating addressability
++ of a pool. */
++
++/* These typedefs are located at the start of this file, so that
++ they can be used in the prototypes there. This comment is to
++ remind readers of that fact so that the following structures
++ can be understood more easily.
++
++ typedef struct minipool_node Mnode;
++ typedef struct minipool_fixup Mfix; */
++
++struct minipool_node
++{
++ /* Doubly linked chain of entries. */
++ Mnode *next;
++ Mnode *prev;
++ /* The maximum offset into the code that this entry can be placed. While
++ pushing fixes for forward references, all entries are sorted in order of
++ increasing max_address. */
++ HOST_WIDE_INT max_address;
++ /* Similarly for an entry inserted for a backwards ref. */
++ HOST_WIDE_INT min_address;
++ /* The number of fixes referencing this entry. This can become zero if we
++ "unpush" an entry. In this case we ignore the entry when we come to
++ emit the code. */
++ int refcount;
++ /* The offset from the start of the minipool. */
++ HOST_WIDE_INT offset;
++ /* The value in table. */
++ rtx value;
++ /* The mode of value. */
++ enum machine_mode mode;
++ /* The size of the value. */
++ int fix_size;
++};
++
++struct minipool_fixup
++{
++ Mfix *next;
++ rtx insn;
++ HOST_WIDE_INT address;
++ rtx *loc;
++ enum machine_mode mode;
++ int fix_size;
++ rtx value;
++ Mnode *minipool;
++ HOST_WIDE_INT forwards;
++ HOST_WIDE_INT backwards;
++};
++
++
++/* Fixes less than a word need padding out to a word boundary. */
++#define MINIPOOL_FIX_SIZE(mode, value) \
++ (IS_FORCE_MINIPOOL(value) ? 0 : \
++ (GET_MODE_SIZE ((mode)) >= 4 ? GET_MODE_SIZE ((mode)) : 4))
++
++#define IS_FORCE_MINIPOOL(x) \
++ (GET_CODE(x) == UNSPEC && \
++ XINT(x, 1) == UNSPEC_FORCE_MINIPOOL)
++
++static Mnode *minipool_vector_head;
++static Mnode *minipool_vector_tail;
++
++/* The linked list of all minipool fixes required for this function. */
++Mfix *minipool_fix_head;
++Mfix *minipool_fix_tail;
++/* The fix entry for the current minipool, once it has been placed. */
++Mfix *minipool_barrier;
++
++/* Determines if INSN is the start of a jump table. Returns the end
++ of the TABLE or NULL_RTX. */
++static rtx
++is_jump_table (rtx insn)
++{
++ rtx table;
++
++ if (GET_CODE (insn) == JUMP_INSN
++ && JUMP_LABEL (insn) != NULL
++ && ((table = next_real_insn (JUMP_LABEL (insn)))
++ == next_real_insn (insn))
++ && table != NULL
++ && GET_CODE (table) == JUMP_INSN
++ && (GET_CODE (PATTERN (table)) == ADDR_VEC
++ || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC))
++ return table;
++
++ return NULL_RTX;
++}
++
++static HOST_WIDE_INT
++get_jump_table_size (rtx insn)
++{
++ /* ADDR_VECs only take room if read-only data does into the text section. */
++ if (JUMP_TABLES_IN_TEXT_SECTION
++#if !defined(READONLY_DATA_SECTION) && !defined(READONLY_DATA_SECTION_ASM_OP)
++ || 1
++#endif
++ )
++ {
++ rtx body = PATTERN (insn);
++ int elt = GET_CODE (body) == ADDR_DIFF_VEC ? 1 : 0;
++
++ return GET_MODE_SIZE (GET_MODE (body)) * XVECLEN (body, elt);
++ }
++
++ return 0;
++}
++
++/* Move a minipool fix MP from its current location to before MAX_MP.
++ If MAX_MP is NULL, then MP doesn't need moving, but the addressing
++ constraints may need updating. */
++static Mnode *
++move_minipool_fix_forward_ref (Mnode * mp, Mnode * max_mp,
++ HOST_WIDE_INT max_address)
++{
++ /* This should never be true and the code below assumes these are
++ different. */
++ if (mp == max_mp)
++ abort ();
++
++ if (max_mp == NULL)
++ {
++ if (max_address < mp->max_address)
++ mp->max_address = max_address;
++ }
++ else
++ {
++ if (max_address > max_mp->max_address - mp->fix_size)
++ mp->max_address = max_mp->max_address - mp->fix_size;
++ else
++ mp->max_address = max_address;
++
++ /* Unlink MP from its current position. Since max_mp is non-null,
++ mp->prev must be non-null. */
++ mp->prev->next = mp->next;
++ if (mp->next != NULL)
++ mp->next->prev = mp->prev;
++ else
++ minipool_vector_tail = mp->prev;
++
++ /* Re-insert it before MAX_MP. */
++ mp->next = max_mp;
++ mp->prev = max_mp->prev;
++ max_mp->prev = mp;
++
++ if (mp->prev != NULL)
++ mp->prev->next = mp;
++ else
++ minipool_vector_head = mp;
++ }
++
++ /* Save the new entry. */
++ max_mp = mp;
++
++ /* Scan over the preceding entries and adjust their addresses as required.
++ */
++ while (mp->prev != NULL
++ && mp->prev->max_address > mp->max_address - mp->prev->fix_size)
++ {
++ mp->prev->max_address = mp->max_address - mp->prev->fix_size;
++ mp = mp->prev;
++ }
++
++ return max_mp;
++}
++
++/* Add a constant to the minipool for a forward reference. Returns the
++ node added or NULL if the constant will not fit in this pool. */
++static Mnode *
++add_minipool_forward_ref (Mfix * fix)
++{
++ /* If set, max_mp is the first pool_entry that has a lower constraint than
++ the one we are trying to add. */
++ Mnode *max_mp = NULL;
++ HOST_WIDE_INT max_address = fix->address + fix->forwards;
++ Mnode *mp;
++
++ /* If this fix's address is greater than the address of the first entry,
++ then we can't put the fix in this pool. We subtract the size of the
++ current fix to ensure that if the table is fully packed we still have
++ enough room to insert this value by suffling the other fixes forwards. */
++ if (minipool_vector_head &&
++ fix->address >= minipool_vector_head->max_address - fix->fix_size)
++ return NULL;
++
++ /* Scan the pool to see if a constant with the same value has already been
++ added. While we are doing this, also note the location where we must
++ insert the constant if it doesn't already exist. */
++ for (mp = minipool_vector_head; mp != NULL; mp = mp->next)
++ {
++ if (GET_CODE (fix->value) == GET_CODE (mp->value)
++ && fix->mode == mp->mode
++ && (GET_CODE (fix->value) != CODE_LABEL
++ || (CODE_LABEL_NUMBER (fix->value)
++ == CODE_LABEL_NUMBER (mp->value)))
++ && rtx_equal_p (fix->value, mp->value))
++ {
++ /* More than one fix references this entry. */
++ mp->refcount++;
++ return move_minipool_fix_forward_ref (mp, max_mp, max_address);
++ }
++
++ /* Note the insertion point if necessary. */
++ if (max_mp == NULL && mp->max_address > max_address)
++ max_mp = mp;
++
++ }
++
++ /* The value is not currently in the minipool, so we need to create a new
++ entry for it. If MAX_MP is NULL, the entry will be put on the end of
++ the list since the placement is less constrained than any existing
++ entry. Otherwise, we insert the new fix before MAX_MP and, if
++ necessary, adjust the constraints on the other entries. */
++ mp = xmalloc (sizeof (*mp));
++ mp->fix_size = fix->fix_size;
++ mp->mode = fix->mode;
++ mp->value = fix->value;
++ mp->refcount = 1;
++ /* Not yet required for a backwards ref. */
++ mp->min_address = -65536;
++
++ if (max_mp == NULL)
++ {
++ mp->max_address = max_address;
++ mp->next = NULL;
++ mp->prev = minipool_vector_tail;
++
++ if (mp->prev == NULL)
++ {
++ minipool_vector_head = mp;
++ minipool_vector_label = gen_label_rtx ();
++ }
++ else
++ mp->prev->next = mp;
++
++ minipool_vector_tail = mp;
++ }
++ else
++ {
++ if (max_address > max_mp->max_address - mp->fix_size)
++ mp->max_address = max_mp->max_address - mp->fix_size;
++ else
++ mp->max_address = max_address;
++
++ mp->next = max_mp;
++ mp->prev = max_mp->prev;
++ max_mp->prev = mp;
++ if (mp->prev != NULL)
++ mp->prev->next = mp;
++ else
++ minipool_vector_head = mp;
++ }
++
++ /* Save the new entry. */
++ max_mp = mp;
++
++ /* Scan over the preceding entries and adjust their addresses as required.
++ */
++ while (mp->prev != NULL
++ && mp->prev->max_address > mp->max_address - mp->prev->fix_size)
++ {
++ mp->prev->max_address = mp->max_address - mp->prev->fix_size;
++ mp = mp->prev;
++ }
++
++ return max_mp;
++}
++
++static Mnode *
++move_minipool_fix_backward_ref (Mnode * mp, Mnode * min_mp,
++ HOST_WIDE_INT min_address)
++{
++ HOST_WIDE_INT offset;
++
++ /* This should never be true, and the code below assumes these are
++ different. */
++ if (mp == min_mp)
++ abort ();
++
++ if (min_mp == NULL)
++ {
++ if (min_address > mp->min_address)
++ mp->min_address = min_address;
++ }
++ else
++ {
++ /* We will adjust this below if it is too loose. */
++ mp->min_address = min_address;
++
++ /* Unlink MP from its current position. Since min_mp is non-null,
++ mp->next must be non-null. */
++ mp->next->prev = mp->prev;
++ if (mp->prev != NULL)
++ mp->prev->next = mp->next;
++ else
++ minipool_vector_head = mp->next;
++
++ /* Reinsert it after MIN_MP. */
++ mp->prev = min_mp;
++ mp->next = min_mp->next;
++ min_mp->next = mp;
++ if (mp->next != NULL)
++ mp->next->prev = mp;
++ else
++ minipool_vector_tail = mp;
++ }
++
++ min_mp = mp;
++
++ offset = 0;
++ for (mp = minipool_vector_head; mp != NULL; mp = mp->next)
++ {
++ mp->offset = offset;
++ if (mp->refcount > 0)
++ offset += mp->fix_size;
++
++ if (mp->next && mp->next->min_address < mp->min_address + mp->fix_size)
++ mp->next->min_address = mp->min_address + mp->fix_size;
++ }
++
++ return min_mp;
++}
++
++/* Add a constant to the minipool for a backward reference. Returns the
++ node added or NULL if the constant will not fit in this pool.
++
++ Note that the code for insertion for a backwards reference can be
++ somewhat confusing because the calculated offsets for each fix do
++ not take into account the size of the pool (which is still under
++ construction. */
++static Mnode *
++add_minipool_backward_ref (Mfix * fix)
++{
++ /* If set, min_mp is the last pool_entry that has a lower constraint than
++ the one we are trying to add. */
++ Mnode *min_mp = NULL;
++ /* This can be negative, since it is only a constraint. */
++ HOST_WIDE_INT min_address = fix->address - fix->backwards;
++ Mnode *mp;
++
++ /* If we can't reach the current pool from this insn, or if we can't insert
++ this entry at the end of the pool without pushing other fixes out of
++ range, then we don't try. This ensures that we can't fail later on. */
++ if (min_address >= minipool_barrier->address
++ || (minipool_vector_tail->min_address + fix->fix_size
++ >= minipool_barrier->address))
++ return NULL;
++
++ /* Scan the pool to see if a constant with the same value has already been
++ added. While we are doing this, also note the location where we must
++ insert the constant if it doesn't already exist. */
++ for (mp = minipool_vector_tail; mp != NULL; mp = mp->prev)
++ {
++ if (GET_CODE (fix->value) == GET_CODE (mp->value)
++ && fix->mode == mp->mode
++ && (GET_CODE (fix->value) != CODE_LABEL
++ || (CODE_LABEL_NUMBER (fix->value)
++ == CODE_LABEL_NUMBER (mp->value)))
++ && rtx_equal_p (fix->value, mp->value)
++ /* Check that there is enough slack to move this entry to the end
++ of the table (this is conservative). */
++ && (mp->max_address
++ > (minipool_barrier->address
++ + minipool_vector_tail->offset
++ + minipool_vector_tail->fix_size)))
++ {
++ mp->refcount++;
++ return move_minipool_fix_backward_ref (mp, min_mp, min_address);
++ }
++
++ if (min_mp != NULL)
++ mp->min_address += fix->fix_size;
++ else
++ {
++ /* Note the insertion point if necessary. */
++ if (mp->min_address < min_address)
++ {
++ min_mp = mp;
++ }
++ else if (mp->max_address
++ < minipool_barrier->address + mp->offset + fix->fix_size)
++ {
++ /* Inserting before this entry would push the fix beyond its
++ maximum address (which can happen if we have re-located a
++ forwards fix); force the new fix to come after it. */
++ min_mp = mp;
++ min_address = mp->min_address + fix->fix_size;
++ }
++ }
++ }
++
++ /* We need to create a new entry. */
++ mp = xmalloc (sizeof (*mp));
++ mp->fix_size = fix->fix_size;
++ mp->mode = fix->mode;
++ mp->value = fix->value;
++ mp->refcount = 1;
++ mp->max_address = minipool_barrier->address + 65536;
++
++ mp->min_address = min_address;
++
++ if (min_mp == NULL)
++ {
++ mp->prev = NULL;
++ mp->next = minipool_vector_head;
++
++ if (mp->next == NULL)
++ {
++ minipool_vector_tail = mp;
++ minipool_vector_label = gen_label_rtx ();
++ }
++ else
++ mp->next->prev = mp;
++
++ minipool_vector_head = mp;
++ }
++ else
++ {
++ mp->next = min_mp->next;
++ mp->prev = min_mp;
++ min_mp->next = mp;
++
++ if (mp->next != NULL)
++ mp->next->prev = mp;
++ else
++ minipool_vector_tail = mp;
++ }
++
++ /* Save the new entry. */
++ min_mp = mp;
++
++ if (mp->prev)
++ mp = mp->prev;
++ else
++ mp->offset = 0;
++
++ /* Scan over the following entries and adjust their offsets. */
++ while (mp->next != NULL)
++ {
++ if (mp->next->min_address < mp->min_address + mp->fix_size)
++ mp->next->min_address = mp->min_address + mp->fix_size;
++
++ if (mp->refcount)
++ mp->next->offset = mp->offset + mp->fix_size;
++ else
++ mp->next->offset = mp->offset;
++
++ mp = mp->next;
++ }
++
++ return min_mp;
++}
++
++static void
++assign_minipool_offsets (Mfix * barrier)
++{
++ HOST_WIDE_INT offset = 0;
++ Mnode *mp;
++
++ minipool_barrier = barrier;
++
++ for (mp = minipool_vector_head; mp != NULL; mp = mp->next)
++ {
++ mp->offset = offset;
++
++ if (mp->refcount > 0
++ /* If the value is (const_int 0) then this is a fake entry so don't
++ add an offset for it since it will not be output. */
++ && !(GET_CODE (mp->value) == CONST_INT && INTVAL (mp->value) == 0))
++ offset += mp->fix_size;
++ }
++}
++
++/* Print a symbolic form of X to the debug file, F. */
++static void
++avr32_print_value (FILE * f, rtx x)
++{
++ switch (GET_CODE (x))
++ {
++ case CONST_INT:
++ fprintf (f, "0x%x", (int) INTVAL (x));
++ return;
++
++ case CONST_DOUBLE:
++ fprintf (f, "<0x%lx,0x%lx>", (long) XWINT (x, 2), (long) XWINT (x, 3));
++ return;
++
++ case CONST_VECTOR:
++ {
++ int i;
++
++ fprintf (f, "<");
++ for (i = 0; i < CONST_VECTOR_NUNITS (x); i++)
++ {
++ fprintf (f, "0x%x", (int) INTVAL (CONST_VECTOR_ELT (x, i)));
++ if (i < (CONST_VECTOR_NUNITS (x) - 1))
++ fputc (',', f);
++ }
++ fprintf (f, ">");
++ }
++ return;
++
++ case CONST_STRING:
++ fprintf (f, "\"%s\"", XSTR (x, 0));
++ return;
++
++ case SYMBOL_REF:
++ fprintf (f, "`%s'", XSTR (x, 0));
++ return;
++
++ case LABEL_REF:
++ fprintf (f, "L%d", INSN_UID (XEXP (x, 0)));
++ return;
++
++ case CONST:
++ avr32_print_value (f, XEXP (x, 0));
++ return;
++
++ case PLUS:
++ avr32_print_value (f, XEXP (x, 0));
++ fprintf (f, "+");
++ avr32_print_value (f, XEXP (x, 1));
++ return;
++
++ case PC:
++ fprintf (f, "pc");
++ return;
++
++ default:
++ fprintf (f, "????");
++ return;
++ }
++}
++
++int
++is_minipool_label (rtx label)
++{
++ minipool_labels *cur_mp_label = cfun->machine->minipool_label_head;
++
++ if (GET_CODE (label) != CODE_LABEL)
++ return FALSE;
++
++ while (cur_mp_label)
++ {
++ if (CODE_LABEL_NUMBER (label)
++ == CODE_LABEL_NUMBER (cur_mp_label->label))
++ return TRUE;
++ cur_mp_label = cur_mp_label->next;
++ }
++ return FALSE;
++}
++
++static void
++new_minipool_label (rtx label)
++{
++ if (!cfun->machine->minipool_label_head)
++ {
++ cfun->machine->minipool_label_head =
++ ggc_alloc (sizeof (minipool_labels));
++ cfun->machine->minipool_label_tail = cfun->machine->minipool_label_head;
++ cfun->machine->minipool_label_head->label = label;
++ cfun->machine->minipool_label_head->next = 0;
++ cfun->machine->minipool_label_head->prev = 0;
++ }
++ else
++ {
++ cfun->machine->minipool_label_tail->next =
++ ggc_alloc (sizeof (minipool_labels));
++ cfun->machine->minipool_label_tail->next->label = label;
++ cfun->machine->minipool_label_tail->next->next = 0;
++ cfun->machine->minipool_label_tail->next->prev =
++ cfun->machine->minipool_label_tail;
++ cfun->machine->minipool_label_tail =
++ cfun->machine->minipool_label_tail->next;
++ }
++}
++
++/* Output the literal table */
++static void
++dump_minipool (rtx scan)
++{
++ Mnode *mp;
++ Mnode *nmp;
++
++ if (dump_file)
++ fprintf (dump_file,
++ ";; Emitting minipool after insn %u; address %ld; align %d (bytes)\n",
++ INSN_UID (scan), (unsigned long) minipool_barrier->address, 4);
++
++ scan = emit_insn_after (gen_consttable_start (), scan);
++ scan = emit_insn_after (gen_align_4 (), scan);
++ scan = emit_label_after (minipool_vector_label, scan);
++ new_minipool_label (minipool_vector_label);
++
++ for (mp = minipool_vector_head; mp != NULL; mp = nmp)
++ {
++ if (mp->refcount > 0)
++ {
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; Offset %u, min %ld, max %ld ",
++ (unsigned) mp->offset, (unsigned long) mp->min_address,
++ (unsigned long) mp->max_address);
++ avr32_print_value (dump_file, mp->value);
++ fputc ('\n', dump_file);
++ }
++
++ switch (mp->fix_size)
++ {
++#ifdef HAVE_consttable_4
++ case 4:
++ scan = emit_insn_after (gen_consttable_4 (mp->value), scan);
++ break;
++
++#endif
++#ifdef HAVE_consttable_8
++ case 8:
++ scan = emit_insn_after (gen_consttable_8 (mp->value), scan);
++ break;
++
++#endif
++ case 0:
++ /* This can happen for force-minipool entries which just are
++ there to force the minipool to be generate. */
++ break;
++ default:
++ abort ();
++ break;
++ }
++ }
++
++ nmp = mp->next;
++ free (mp);
++ }
++
++ minipool_vector_head = minipool_vector_tail = NULL;
++ scan = emit_insn_after (gen_consttable_end (), scan);
++ scan = emit_barrier_after (scan);
++}
++
++/* Return the cost of forcibly inserting a barrier after INSN. */
++static int
++avr32_barrier_cost (rtx insn)
++{
++ /* Basing the location of the pool on the loop depth is preferable, but at
++ the moment, the basic block information seems to be corrupt by this
++ stage of the compilation. */
++ int base_cost = 50;
++ rtx next = next_nonnote_insn (insn);
++
++ if (next != NULL && GET_CODE (next) == CODE_LABEL)
++ base_cost -= 20;
++
++ switch (GET_CODE (insn))
++ {
++ case CODE_LABEL:
++ /* It will always be better to place the table before the label, rather
++ than after it. */
++ return 50;
++
++ case INSN:
++ case CALL_INSN:
++ return base_cost;
++
++ case JUMP_INSN:
++ return base_cost - 10;
++
++ default:
++ return base_cost + 10;
++ }
++}
++
++/* Find the best place in the insn stream in the range
++ (FIX->address,MAX_ADDRESS) to forcibly insert a minipool barrier.
++ Create the barrier by inserting a jump and add a new fix entry for
++ it. */
++static Mfix *
++create_fix_barrier (Mfix * fix, HOST_WIDE_INT max_address)
++{
++ HOST_WIDE_INT count = 0;
++ rtx barrier;
++ rtx from = fix->insn;
++ rtx selected = from;
++ int selected_cost;
++ HOST_WIDE_INT selected_address;
++ Mfix *new_fix;
++ HOST_WIDE_INT max_count = max_address - fix->address;
++ rtx label = gen_label_rtx ();
++
++ selected_cost = avr32_barrier_cost (from);
++ selected_address = fix->address;
++
++ while (from && count < max_count)
++ {
++ rtx tmp;
++ int new_cost;
++
++ /* This code shouldn't have been called if there was a natural barrier
++ within range. */
++ if (GET_CODE (from) == BARRIER)
++ abort ();
++
++ /* Count the length of this insn. */
++ count += get_attr_length (from);
++
++ /* If there is a jump table, add its length. */
++ tmp = is_jump_table (from);
++ if (tmp != NULL)
++ {
++ count += get_jump_table_size (tmp);
++
++ /* Jump tables aren't in a basic block, so base the cost on the
++ dispatch insn. If we select this location, we will still put
++ the pool after the table. */
++ new_cost = avr32_barrier_cost (from);
++
++ if (count < max_count && new_cost <= selected_cost)
++ {
++ selected = tmp;
++ selected_cost = new_cost;
++ selected_address = fix->address + count;
++ }
++
++ /* Continue after the dispatch table. */
++ from = NEXT_INSN (tmp);
++ continue;
++ }
++
++ new_cost = avr32_barrier_cost (from);
++
++ if (count < max_count && new_cost <= selected_cost)
++ {
++ selected = from;
++ selected_cost = new_cost;
++ selected_address = fix->address + count;
++ }
++
++ from = NEXT_INSN (from);
++ }
++
++ /* Create a new JUMP_INSN that branches around a barrier. */
++ from = emit_jump_insn_after (gen_jump (label), selected);
++ JUMP_LABEL (from) = label;
++ barrier = emit_barrier_after (from);
++ emit_label_after (label, barrier);
++
++ /* Create a minipool barrier entry for the new barrier. */
++ new_fix = (Mfix *) obstack_alloc (&minipool_obstack, sizeof (*new_fix));
++ new_fix->insn = barrier;
++ new_fix->address = selected_address;
++ new_fix->next = fix->next;
++ fix->next = new_fix;
++
++ return new_fix;
++}
++
++/* Record that there is a natural barrier in the insn stream at
++ ADDRESS. */
++static void
++push_minipool_barrier (rtx insn, HOST_WIDE_INT address)
++{
++ Mfix *fix = (Mfix *) obstack_alloc (&minipool_obstack, sizeof (*fix));
++
++ fix->insn = insn;
++ fix->address = address;
++
++ fix->next = NULL;
++ if (minipool_fix_head != NULL)
++ minipool_fix_tail->next = fix;
++ else
++ minipool_fix_head = fix;
++
++ minipool_fix_tail = fix;
++}
++
++/* Record INSN, which will need fixing up to load a value from the
++ minipool. ADDRESS is the offset of the insn since the start of the
++ function; LOC is a pointer to the part of the insn which requires
++ fixing; VALUE is the constant that must be loaded, which is of type
++ MODE. */
++static void
++push_minipool_fix (rtx insn, HOST_WIDE_INT address, rtx * loc,
++ enum machine_mode mode, rtx value)
++{
++ Mfix *fix = (Mfix *) obstack_alloc (&minipool_obstack, sizeof (*fix));
++ rtx body = PATTERN (insn);
++
++ fix->insn = insn;
++ fix->address = address;
++ fix->loc = loc;
++ fix->mode = mode;
++ fix->fix_size = MINIPOOL_FIX_SIZE (mode, value);
++ fix->value = value;
++
++ if (GET_CODE (body) == PARALLEL)
++ {
++ /* Mcall : Ks16 << 2 */
++ fix->forwards = ((1 << 15) - 1) << 2;
++ fix->backwards = (1 << 15) << 2;
++ }
++ else if (GET_CODE (body) == SET
++ && GET_MODE_SIZE (GET_MODE (SET_DEST (body))) == 4)
++ {
++ /* Word Load */
++ if (TARGET_HARD_FLOAT
++ && GET_MODE_CLASS (GET_MODE (SET_DEST (body))) == MODE_FLOAT)
++ {
++ /* Ldc0.w : Ku12 << 2 */
++ fix->forwards = ((1 << 12) - 1) << 2;
++ fix->backwards = 0;
++ }
++ else
++ {
++ if (optimize_size)
++ {
++ /* Lddpc : Ku7 << 2 */
++ fix->forwards = ((1 << 7) - 1) << 2;
++ fix->backwards = 0;
++ }
++ else
++ {
++ /* Ld.w : Ks16 */
++ fix->forwards = ((1 << 15) - 4);
++ fix->backwards = (1 << 15);
++ }
++ }
++ }
++ else if (GET_CODE (body) == SET
++ && GET_MODE_SIZE (GET_MODE (SET_DEST (body))) == 8)
++ {
++ /* Double word load */
++ if (TARGET_HARD_FLOAT
++ && GET_MODE_CLASS (GET_MODE (SET_DEST (body))) == MODE_FLOAT)
++ {
++ /* Ldc0.d : Ku12 << 2 */
++ fix->forwards = ((1 << 12) - 1) << 2;
++ fix->backwards = 0;
++ }
++ else
++ {
++ /* Ld.d : Ks16 */
++ fix->forwards = ((1 << 15) - 4);
++ fix->backwards = (1 << 15);
++ }
++ }
++ else if (GET_CODE (body) == UNSPEC_VOLATILE
++ && XINT (body, 1) == VUNSPEC_MVRC)
++ {
++ /* Coprocessor load */
++ /* Ldc : Ku8 << 2 */
++ fix->forwards = ((1 << 8) - 1) << 2;
++ fix->backwards = 0;
++ }
++ else
++ {
++ /* Assume worst case which is lddpc insn. */
++ fix->forwards = ((1 << 7) - 1) << 2;
++ fix->backwards = 0;
++ }
++
++ fix->minipool = NULL;
++
++ /* If an insn doesn't have a range defined for it, then it isn't expecting
++ to be reworked by this code. Better to abort now than to generate duff
++ assembly code. */
++ if (fix->forwards == 0 && fix->backwards == 0)
++ abort ();
++
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; %smode fixup for i%d; addr %lu, range (%ld,%ld): ",
++ GET_MODE_NAME (mode),
++ INSN_UID (insn), (unsigned long) address,
++ -1 * (long) fix->backwards, (long) fix->forwards);
++ avr32_print_value (dump_file, fix->value);
++ fprintf (dump_file, "\n");
++ }
++
++ /* Add it to the chain of fixes. */
++ fix->next = NULL;
++
++ if (minipool_fix_head != NULL)
++ minipool_fix_tail->next = fix;
++ else
++ minipool_fix_head = fix;
++
++ minipool_fix_tail = fix;
++}
++
++/* Scan INSN and note any of its operands that need fixing.
++ If DO_PUSHES is false we do not actually push any of the fixups
++ needed. The function returns TRUE is any fixups were needed/pushed.
++ This is used by avr32_memory_load_p() which needs to know about loads
++ of constants that will be converted into minipool loads. */
++static bool
++note_invalid_constants (rtx insn, HOST_WIDE_INT address, int do_pushes)
++{
++ bool result = false;
++ int opno;
++
++ extract_insn (insn);
++
++ if (!constrain_operands (1))
++ fatal_insn_not_found (insn);
++
++ if (recog_data.n_alternatives == 0)
++ return false;
++
++ /* Fill in recog_op_alt with information about the constraints of this
++ insn. */
++ preprocess_constraints ();
++
++ for (opno = 0; opno < recog_data.n_operands; opno++)
++ {
++ rtx op;
++
++ /* Things we need to fix can only occur in inputs. */
++ if (recog_data.operand_type[opno] != OP_IN)
++ continue;
++
++ op = recog_data.operand[opno];
++
++ if (avr32_const_pool_ref_operand (op, GET_MODE (op)))
++ {
++ if (do_pushes)
++ {
++ rtx cop = avoid_constant_pool_reference (op);
++
++ /* Casting the address of something to a mode narrower than a
++ word can cause avoid_constant_pool_reference() to return the
++ pool reference itself. That's no good to us here. Lets
++ just hope that we can use the constant pool value directly.
++ */
++ if (op == cop)
++ cop = get_pool_constant (XEXP (op, 0));
++
++ push_minipool_fix (insn, address,
++ recog_data.operand_loc[opno],
++ recog_data.operand_mode[opno], cop);
++ }
++
++ result = true;
++ }
++ else if (TARGET_HAS_ASM_ADDR_PSEUDOS
++ && avr32_address_operand (op, GET_MODE (op)))
++ {
++ /* Handle pseudo instructions using a direct address. These pseudo
++ instructions might need entries in the constant pool and we must
++ therefor create a constant pool for them, in case the
++ assembler/linker needs to insert entries. */
++ if (do_pushes)
++ {
++ /* Push a dummy constant pool entry so that the .cpool
++ directive should be inserted on the appropriate place in the
++ code even if there are no real constant pool entries. This
++ is used by the assembler and linker to know where to put
++ generated constant pool entries. */
++ push_minipool_fix (insn, address,
++ recog_data.operand_loc[opno],
++ recog_data.operand_mode[opno],
++ gen_rtx_UNSPEC (VOIDmode,
++ gen_rtvec (1, const0_rtx),
++ UNSPEC_FORCE_MINIPOOL));
++ result = true;
++ }
++ }
++ }
++ return result;
++}
++
++
++static int
++avr32_insn_is_cast (rtx insn)
++{
++
++ if (NONJUMP_INSN_P (insn)
++ && GET_CODE (PATTERN (insn)) == SET
++ && (GET_CODE (SET_SRC (PATTERN (insn))) == ZERO_EXTEND
++ || GET_CODE (SET_SRC (PATTERN (insn))) == SIGN_EXTEND)
++ && REG_P (XEXP (SET_SRC (PATTERN (insn)), 0))
++ && REG_P (SET_DEST (PATTERN (insn))))
++ return true;
++ return false;
++}
++
++/* FIXME: The level of nesting in this function is way too deep. It needs to be
++ torn apart. */
++static void
++avr32_reorg_optimization (void)
++{
++ rtx first = get_insns ();
++ rtx insn;
++
++ if (TARGET_MD_REORG_OPTIMIZATION && (optimize_size || (optimize > 0)))
++ {
++
++ /* Scan through all insns looking for cast operations. */
++ if (dump_file)
++ {
++ fprintf (dump_file, ";; Deleting redundant cast operations:\n");
++ }
++ for (insn = first; insn; insn = NEXT_INSN (insn))
++ {
++ rtx reg, src_reg, scan;
++ enum machine_mode mode;
++ int unused_cast;
++ rtx label_ref;
++
++ if (avr32_insn_is_cast (insn)
++ && (GET_MODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == QImode
++ || GET_MODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == HImode))
++ {
++ mode = GET_MODE (XEXP (SET_SRC (PATTERN (insn)), 0));
++ reg = SET_DEST (PATTERN (insn));
++ src_reg = XEXP (SET_SRC (PATTERN (insn)), 0);
++ }
++ else
++ {
++ continue;
++ }
++
++ unused_cast = false;
++ label_ref = NULL_RTX;
++ for (scan = NEXT_INSN (insn); scan; scan = NEXT_INSN (scan))
++ {
++ /* Check if we have reached the destination of a simple
++ conditional jump which we have already scanned past. If so,
++ we can safely continue scanning. */
++ if (LABEL_P (scan) && label_ref != NULL_RTX)
++ {
++ if (CODE_LABEL_NUMBER (scan) ==
++ CODE_LABEL_NUMBER (XEXP (label_ref, 0)))
++ label_ref = NULL_RTX;
++ else
++ break;
++ }
++
++ if (!INSN_P (scan))
++ continue;
++
++ /* For conditional jumps we can manage to keep on scanning if
++ we meet the destination label later on before any new jump
++ insns occure. */
++ if (GET_CODE (scan) == JUMP_INSN)
++ {
++ if (any_condjump_p (scan) && label_ref == NULL_RTX)
++ label_ref = condjump_label (scan);
++ else
++ break;
++ }
++
++ if (!reg_mentioned_p (reg, PATTERN (scan)))
++ continue;
++
++ /* Check if casted register is used in this insn */
++ if ((regno_use_in (REGNO (reg), PATTERN (scan)) != NULL_RTX)
++ && (GET_MODE (regno_use_in (REGNO (reg), PATTERN (scan))) ==
++ GET_MODE (reg)))
++ {
++ /* If not used in the source to the set or in a memory
++ expression in the destiantion then the register is used
++ as a destination and is really dead. */
++ if (single_set (scan)
++ && GET_CODE (PATTERN (scan)) == SET
++ && REG_P (SET_DEST (PATTERN (scan)))
++ && !regno_use_in (REGNO (reg), SET_SRC (PATTERN (scan)))
++ && label_ref == NULL_RTX)
++ {
++ unused_cast = true;
++ }
++ break;
++ }
++
++ /* Check if register is dead or set in this insn */
++ if (dead_or_set_p (scan, reg))
++ {
++ unused_cast = true;
++ break;
++ }
++ }
++
++ /* Check if we have unresolved conditional jumps */
++ if (label_ref != NULL_RTX)
++ continue;
++
++ if (unused_cast)
++ {
++ if (REGNO (reg) == REGNO (XEXP (SET_SRC (PATTERN (insn)), 0)))
++ {
++ /* One operand cast, safe to delete */
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; INSN %i removed, casted register %i value not used.\n",
++ INSN_UID (insn), REGNO (reg));
++ }
++ SET_INSN_DELETED (insn);
++ /* Force the instruction to be recognized again */
++ INSN_CODE (insn) = -1;
++ }
++ else
++ {
++ /* Two operand cast, which really could be substituted with
++ a move, if the source register is dead after the cast
++ insn and then the insn which sets the source register
++ could instead directly set the destination register for
++ the cast. As long as there are no insns in between which
++ uses the register. */
++ rtx link = NULL_RTX;
++ rtx set;
++ rtx src_reg = XEXP (SET_SRC (PATTERN (insn)), 0);
++ unused_cast = false;
++
++ if (!find_reg_note (insn, REG_DEAD, src_reg))
++ continue;
++
++ /* Search for the insn which sets the source register */
++ for (link = LOG_LINKS (insn); link; link = XEXP (link, 1))
++ {
++ if (REG_NOTE_KIND (link) != 0)
++ continue;
++ set = single_set (XEXP (link, 0));
++ if (set && rtx_equal_p (src_reg, SET_DEST (set)))
++ {
++ link = XEXP (link, 0);
++ break;
++ }
++ }
++
++ /* Found no link or link is a call insn where we can not
++ change the destination register */
++ if (link == NULL_RTX || CALL_P (link))
++ continue;
++
++ /* Scan through all insn between link and insn */
++ for (scan = NEXT_INSN (link); scan; scan = NEXT_INSN (scan))
++ {
++ /* Don't try to trace forward past a CODE_LABEL if we
++ haven't seen INSN yet. Ordinarily, we will only
++ find the setting insn in LOG_LINKS if it is in the
++ same basic block. However, cross-jumping can insert
++ code labels in between the load and the call, and
++ can result in situations where a single call insn
++ may have two targets depending on where we came
++ from. */
++
++ if (GET_CODE (scan) == CODE_LABEL)
++ break;
++
++ if (!INSN_P (scan))
++ continue;
++
++ /* Don't try to trace forward past a JUMP. To optimize
++ safely, we would have to check that all the
++ instructions at the jump destination did not use REG.
++ */
++
++ if (GET_CODE (scan) == JUMP_INSN)
++ {
++ break;
++ }
++
++ if (!reg_mentioned_p (src_reg, PATTERN (scan)))
++ continue;
++
++ /* We have reached the cast insn */
++ if (scan == insn)
++ {
++ /* We can remove cast and replace the destination
++ register of the link insn with the destination
++ of the cast */
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; INSN %i removed, casted value unused. "
++ "Destination of removed cast operation: register %i, folded into INSN %i.\n",
++ INSN_UID (insn), REGNO (reg),
++ INSN_UID (link));
++ }
++ /* Update link insn */
++ SET_DEST (PATTERN (link)) =
++ gen_rtx_REG (mode, REGNO (reg));
++ /* Force the instruction to be recognized again */
++ INSN_CODE (link) = -1;
++
++ /* Delete insn */
++ SET_INSN_DELETED (insn);
++ /* Force the instruction to be recognized again */
++ INSN_CODE (insn) = -1;
++ break;
++ }
++ }
++ }
++ }
++ }
++ }
++
++ if (TARGET_MD_REORG_OPTIMIZATION && (optimize_size || (optimize > 0)))
++ {
++
++ /* Scan through all insns looking for shifted add operations */
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; Deleting redundant shifted add operations:\n");
++ }
++ for (insn = first; insn; insn = NEXT_INSN (insn))
++ {
++ rtx reg, mem_expr, scan, op0, op1;
++ int add_only_used_as_pointer;
++
++ if (INSN_P (insn)
++ && GET_CODE (PATTERN (insn)) == SET
++ && GET_CODE (SET_SRC (PATTERN (insn))) == PLUS
++ && (GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == MULT
++ || GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == ASHIFT)
++ && GET_CODE (XEXP (XEXP (SET_SRC (PATTERN (insn)), 0), 1)) ==
++ CONST_INT && REG_P (SET_DEST (PATTERN (insn)))
++ && REG_P (XEXP (SET_SRC (PATTERN (insn)), 1))
++ && REG_P (XEXP (XEXP (SET_SRC (PATTERN (insn)), 0), 0)))
++ {
++ reg = SET_DEST (PATTERN (insn));
++ mem_expr = SET_SRC (PATTERN (insn));
++ op0 = XEXP (XEXP (mem_expr, 0), 0);
++ op1 = XEXP (mem_expr, 1);
++ }
++ else
++ {
++ continue;
++ }
++
++ /* Scan forward the check if the result of the shifted add
++ operation is only used as an address in memory operations and
++ that the operands to the shifted add are not clobbered. */
++ add_only_used_as_pointer = false;
++ for (scan = NEXT_INSN (insn); scan; scan = NEXT_INSN (scan))
++ {
++ if (!INSN_P (scan))
++ continue;
++
++ /* Don't try to trace forward past a JUMP or CALL. To optimize
++ safely, we would have to check that all the instructions at
++ the jump destination did not use REG. */
++
++ if (GET_CODE (scan) == JUMP_INSN)
++ {
++ break;
++ }
++
++ /* If used in a call insn then we cannot optimize it away */
++ if (CALL_P (scan) && find_regno_fusage (scan, USE, REGNO (reg)))
++ break;
++
++ /* If any of the operands of the shifted add are clobbered we
++ cannot optimize the shifted adda away */
++ if ((reg_set_p (op0, scan) && (REGNO (op0) != REGNO (reg)))
++ || (reg_set_p (op1, scan) && (REGNO (op1) != REGNO (reg))))
++ break;
++
++ if (!reg_mentioned_p (reg, PATTERN (scan)))
++ continue;
++
++ /* If used any other place than as a pointer or as the
++ destination register we failed */
++ if (!(single_set (scan)
++ && GET_CODE (PATTERN (scan)) == SET
++ && ((MEM_P (SET_DEST (PATTERN (scan)))
++ && REG_P (XEXP (SET_DEST (PATTERN (scan)), 0))
++ && REGNO (XEXP (SET_DEST (PATTERN (scan)), 0)) ==
++ REGNO (reg)) || (MEM_P (SET_SRC (PATTERN (scan)))
++ &&
++ REG_P (XEXP
++ (SET_SRC (PATTERN (scan)),
++ 0))
++ &&
++ REGNO (XEXP
++ (SET_SRC (PATTERN (scan)),
++ 0)) == REGNO (reg))))
++ && !(GET_CODE (PATTERN (scan)) == SET
++ && REG_P (SET_DEST (PATTERN (scan)))
++ && !regno_use_in (REGNO (reg),
++ SET_SRC (PATTERN (scan)))))
++ break;
++
++ /* Check if register is dead or set in this insn */
++ if (dead_or_set_p (scan, reg))
++ {
++ add_only_used_as_pointer = true;
++ break;
++ }
++ }
++
++ if (add_only_used_as_pointer)
++ {
++ /* Lets delete the add insn and replace all memory references
++ which uses the pointer with the full expression. */
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; Deleting INSN %i since address expression can be folded into all "
++ "memory references using this expression\n",
++ INSN_UID (insn));
++ }
++ SET_INSN_DELETED (insn);
++ /* Force the instruction to be recognized again */
++ INSN_CODE (insn) = -1;
++
++ for (scan = NEXT_INSN (insn); scan; scan = NEXT_INSN (scan))
++ {
++ if (!INSN_P (scan))
++ continue;
++
++ if (!reg_mentioned_p (reg, PATTERN (scan)))
++ continue;
++
++ /* If used any other place than as a pointer or as the
++ destination register we failed */
++ if ((single_set (scan)
++ && GET_CODE (PATTERN (scan)) == SET
++ && ((MEM_P (SET_DEST (PATTERN (scan)))
++ && REG_P (XEXP (SET_DEST (PATTERN (scan)), 0))
++ && REGNO (XEXP (SET_DEST (PATTERN (scan)), 0)) ==
++ REGNO (reg)) || (MEM_P (SET_SRC (PATTERN (scan)))
++ &&
++ REG_P (XEXP
++ (SET_SRC (PATTERN (scan)),
++ 0))
++ &&
++ REGNO (XEXP
++ (SET_SRC (PATTERN (scan)),
++ 0)) == REGNO (reg)))))
++ {
++ if (dump_file)
++ {
++ fprintf (dump_file,
++ ";; Register %i replaced by indexed address in INSN %i\n",
++ REGNO (reg), INSN_UID (scan));
++ }
++ if (MEM_P (SET_DEST (PATTERN (scan))))
++ XEXP (SET_DEST (PATTERN (scan)), 0) = mem_expr;
++ else
++ XEXP (SET_SRC (PATTERN (scan)), 0) = mem_expr;
++ }
++
++ /* Check if register is dead or set in this insn */
++ if (dead_or_set_p (scan, reg))
++ {
++ break;
++ }
++
++ }
++ }
++ }
++ }
++}
++
++/* Exported to toplev.c.
++
++ Do a final pass over the function, just before delayed branch
++ scheduling. */
++
++static void
++avr32_reorg (void)
++{
++ rtx insn;
++ HOST_WIDE_INT address = 0;
++ Mfix *fix;
++
++ minipool_fix_head = minipool_fix_tail = NULL;
++
++ /* The first insn must always be a note, or the code below won't scan it
++ properly. */
++ insn = get_insns ();
++ if (GET_CODE (insn) != NOTE)
++ abort ();
++
++ /* Scan all the insns and record the operands that will need fixing. */
++ for (insn = next_nonnote_insn (insn); insn; insn = next_nonnote_insn (insn))
++ {
++ if (GET_CODE (insn) == BARRIER)
++ push_minipool_barrier (insn, address);
++ else if (INSN_P (insn))
++ {
++ rtx table;
++
++ note_invalid_constants (insn, address, true);
++ address += get_attr_length (insn);
++
++ /* If the insn is a vector jump, add the size of the table and skip
++ the table. */
++ if ((table = is_jump_table (insn)) != NULL)
++ {
++ address += get_jump_table_size (table);
++ insn = table;
++ }
++ }
++ }
++
++ fix = minipool_fix_head;
++
++ /* Now scan the fixups and perform the required changes. */
++ while (fix)
++ {
++ Mfix *ftmp;
++ Mfix *fdel;
++ Mfix *last_added_fix;
++ Mfix *last_barrier = NULL;
++ Mfix *this_fix;
++
++ /* Skip any further barriers before the next fix. */
++ while (fix && GET_CODE (fix->insn) == BARRIER)
++ fix = fix->next;
++
++ /* No more fixes. */
++ if (fix == NULL)
++ break;
++
++ last_added_fix = NULL;
++
++ for (ftmp = fix; ftmp; ftmp = ftmp->next)
++ {
++ if (GET_CODE (ftmp->insn) == BARRIER)
++ {
++ if (ftmp->address >= minipool_vector_head->max_address)
++ break;
++
++ last_barrier = ftmp;
++ }
++ else if ((ftmp->minipool = add_minipool_forward_ref (ftmp)) == NULL)
++ break;
++
++ last_added_fix = ftmp; /* Keep track of the last fix added.
++ */
++ }
++
++ /* If we found a barrier, drop back to that; any fixes that we could
++ have reached but come after the barrier will now go in the next
++ mini-pool. */
++ if (last_barrier != NULL)
++ {
++ /* Reduce the refcount for those fixes that won't go into this pool
++ after all. */
++ for (fdel = last_barrier->next;
++ fdel && fdel != ftmp; fdel = fdel->next)
++ {
++ fdel->minipool->refcount--;
++ fdel->minipool = NULL;
++ }
++
++ ftmp = last_barrier;
++ }
++ else
++ {
++ /* ftmp is first fix that we can't fit into this pool and there no
++ natural barriers that we could use. Insert a new barrier in the
++ code somewhere between the previous fix and this one, and
++ arrange to jump around it. */
++ HOST_WIDE_INT max_address;
++
++ /* The last item on the list of fixes must be a barrier, so we can
++ never run off the end of the list of fixes without last_barrier
++ being set. */
++ if (ftmp == NULL)
++ abort ();
++
++ max_address = minipool_vector_head->max_address;
++ /* Check that there isn't another fix that is in range that we
++ couldn't fit into this pool because the pool was already too
++ large: we need to put the pool before such an instruction. */
++ if (ftmp->address < max_address)
++ max_address = ftmp->address;
++
++ last_barrier = create_fix_barrier (last_added_fix, max_address);
++ }
++
++ assign_minipool_offsets (last_barrier);
++
++ while (ftmp)
++ {
++ if (GET_CODE (ftmp->insn) != BARRIER
++ && ((ftmp->minipool = add_minipool_backward_ref (ftmp))
++ == NULL))
++ break;
++
++ ftmp = ftmp->next;
++ }
++
++ /* Scan over the fixes we have identified for this pool, fixing them up
++ and adding the constants to the pool itself. */
++ for (this_fix = fix; this_fix && ftmp != this_fix;
++ this_fix = this_fix->next)
++ if (GET_CODE (this_fix->insn) != BARRIER
++ /* Do nothing for entries present just to force the insertion of
++ a minipool. */
++ && !IS_FORCE_MINIPOOL (this_fix->value))
++ {
++ rtx addr = plus_constant (gen_rtx_LABEL_REF (VOIDmode,
++ minipool_vector_label),
++ this_fix->minipool->offset);
++ *this_fix->loc = gen_rtx_MEM (this_fix->mode, addr);
++ }
++
++ dump_minipool (last_barrier->insn);
++ fix = ftmp;
++ }
++
++ /* Free the minipool memory. */
++ obstack_free (&minipool_obstack, minipool_startobj);
++
++ avr32_reorg_optimization ();
++}
++
++
++/*
++ Hook for doing some final scanning of instructions. Does nothing yet...*/
++void
++avr32_final_prescan_insn (rtx insn ATTRIBUTE_UNUSED,
++ rtx * opvec ATTRIBUTE_UNUSED,
++ int noperands ATTRIBUTE_UNUSED)
++{
++ return;
++}
++
++
++
++int
++avr32_expand_movcc (enum machine_mode mode, rtx operands[])
++{
++ rtx operator;
++ rtx compare_op0 = avr32_compare_op0;
++ rtx compare_op1 = avr32_compare_op1;
++
++ /* Only allow certain compare operations */
++ if (GET_MODE (compare_op0) != DImode
++ && GET_MODE (compare_op0) != SImode
++ && GET_MODE (compare_op0) != HImode && GET_MODE (compare_op0) != QImode)
++ return FALSE;
++
++ if (GET_CODE (compare_op0) == MEM)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (GET_MODE (compare_op0), compare_op0);
++ }
++
++ if (GET_CODE (compare_op1) == MEM)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (GET_MODE (compare_op1), compare_op1);
++ }
++
++ /* For DI, HI and QI mode force comparison operands to registers */
++ if (GET_MODE (compare_op0) == DImode
++ || GET_MODE (compare_op0) == HImode || GET_MODE (compare_op0) == QImode)
++ {
++ if (GET_CODE (compare_op0) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (GET_MODE (compare_op0), compare_op0);
++ }
++
++ if (GET_CODE (compare_op1) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (GET_MODE (compare_op0), compare_op1);
++ }
++ }
++
++ /* Force any immediate compare operands for SI, larger than the L
++ constraint, to a register */
++ if (GET_MODE (compare_op0) == SImode)
++ {
++ if ((GET_CODE (compare_op0) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (compare_op0), 'K',
++ "Ks21")))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (SImode, compare_op0);
++ }
++
++ if ((GET_CODE (compare_op1) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (compare_op1), 'K',
++ "Ks21")))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (SImode, compare_op1);
++ }
++ }
++
++ /* If we have immediates larger than can be allowed in conditional mov
++ instructions, force them to registers */
++ if (GET_CODE (operands[2]) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (operands[2]), 'K', "Ks08"))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[2] = force_reg (mode, operands[2]);
++ }
++
++ if (GET_CODE (operands[3]) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (operands[3]), 'K', "Ks08"))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[3] = force_reg (mode, operands[3]);
++ }
++
++ /* Emit the actual instruction */
++ operator = gen_rtx_EQ (VOIDmode, const0_rtx, const0_rtx);
++ PUT_CODE (operator, GET_CODE (operands[1]));
++ switch (mode)
++ {
++ case SImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_movsicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_movsicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_movsicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_movsicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ case HImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_movhicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_movhicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_movhicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_movhicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ case QImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_movqicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_movqicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_movqicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_movqicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ default:
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++
++int
++avr32_expand_addcc (enum machine_mode mode, rtx operands[])
++{
++ rtx operator;
++ rtx compare_op0 = avr32_compare_op0;
++ rtx compare_op1 = avr32_compare_op1;
++
++ /* Check if we have an add/sub with an k8 immediate */
++ if (!(GET_CODE (operands[3]) == CONST_INT
++ && avr32_const_ok_for_constraint_p (-INTVAL (operands[3]), 'K',
++ "Ks08")))
++ return FALSE;
++ else
++ /* Flip sign */
++ operands[3] = GEN_INT (-INTVAL (operands[3]));
++
++ /* Only allow certain compare operations */
++ if (GET_MODE (compare_op0) != DImode
++ && GET_MODE (compare_op0) != SImode
++ && GET_MODE (compare_op0) != HImode && GET_MODE (compare_op0) != QImode)
++ return FALSE;
++
++ if (GET_CODE (compare_op0) == MEM)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (GET_MODE (compare_op0), compare_op0);
++ }
++
++ if (GET_CODE (compare_op1) == MEM)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (GET_MODE (compare_op1), compare_op1);
++ }
++
++ /* For DI, HI and QI mode force comparison operands to registers */
++ if (GET_MODE (compare_op0) == DImode
++ || GET_MODE (compare_op0) == HImode || GET_MODE (compare_op0) == QImode)
++ {
++ if (GET_CODE (compare_op0) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (GET_MODE (compare_op0), compare_op0);
++ }
++
++ if (GET_CODE (compare_op1) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (GET_MODE (compare_op0), compare_op1);
++ }
++ }
++
++ /* Force any immediate compare operands for SI, larger than the L
++ constraint, to a register */
++ if (GET_MODE (compare_op0) == SImode)
++ {
++ if ((GET_CODE (compare_op0) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (compare_op0), 'K',
++ "Ks21")))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op0 = force_reg (SImode, compare_op0);
++ }
++
++ if ((GET_CODE (compare_op1) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (compare_op1), 'K',
++ "Ks21")))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ compare_op1 = force_reg (SImode, compare_op1);
++ }
++ }
++
++ /* If we have immediates larger than can be allowed in conditional mov
++ instructions, force them to registers */
++ if (GET_CODE (operands[2]) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (operands[2]), 'K', "Ks08"))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[2] = force_reg (mode, operands[2]);
++ }
++
++ if (GET_CODE (operands[3]) == CONST_INT
++ && !avr32_const_ok_for_constraint_p (INTVAL (operands[3]), 'K', "Ks08"))
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[3] = force_reg (mode, operands[3]);
++ }
++
++ if (GET_CODE (operands[0]) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[0] = force_reg (GET_MODE (operands[0]), operands[0]);
++ }
++
++ if (GET_CODE (operands[2]) != REG)
++ {
++ if (no_new_pseudos)
++ return FALSE;
++ else
++ operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
++ }
++
++ /* Check if operands[0] and operands[2] are different */
++ if (REGNO (operands[0]) != REGNO (operands[2]))
++ {
++ emit_move_insn (operands[0], operands[2]);
++ operands[2] = operands[0];
++ }
++
++ /* Emit the actual instruction */
++ operator = gen_rtx_EQ (VOIDmode, const0_rtx, const0_rtx);
++ PUT_CODE (operator, GET_CODE (operands[1]));
++ switch (mode)
++ {
++ case SImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_addsicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_addsicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_addsicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_addsicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ case HImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_addhicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_addhicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_addhicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_addhicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ case QImode:
++ switch (GET_MODE (compare_op0))
++ {
++ case SImode:
++ emit_insn (gen_addqicc_cmpsi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case DImode:
++ emit_insn (gen_addqicc_cmpdi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case HImode:
++ emit_insn (gen_addqicc_cmphi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ case QImode:
++ emit_insn (gen_addqicc_cmpqi
++ (operands[0], operator, operands[2], operands[3],
++ compare_op0, compare_op1));
++ break;
++ default:
++ return FALSE;
++ }
++ break;
++ default:
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++/* Function for changing the condition on the next instruction,
++ should be used when emmiting compare instructions and
++ the condition of the next instruction needs to change.
++*/
++int
++set_next_insn_cond (rtx cur_insn, rtx new_cond)
++{
++ rtx next_insn = next_nonnote_insn (cur_insn);
++ if ((next_insn != NULL_RTX)
++ && (INSN_P (next_insn))
++ && (GET_CODE (PATTERN (next_insn)) == SET)
++ && (GET_CODE (SET_SRC (PATTERN (next_insn))) == IF_THEN_ELSE))
++ {
++ /* Branch instructions */
++ XEXP (SET_SRC (PATTERN (next_insn)), 0) = new_cond;
++ /* Force the instruction to be recognized again */
++ INSN_CODE (next_insn) = -1;
++ return TRUE;
++ }
++ else if ((next_insn != NULL_RTX)
++ && (INSN_P (next_insn))
++ && (GET_CODE (PATTERN (next_insn)) == SET)
++ && comparison_operator (SET_SRC (PATTERN (next_insn)),
++ GET_MODE (SET_SRC (PATTERN (next_insn)))))
++ {
++ /* scc with no compare */
++ SET_SRC (PATTERN (next_insn)) = new_cond;
++ /* Force the instruction to be recognized again */
++ INSN_CODE (next_insn) = -1;
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++/* Function for obtaining the condition for the next instruction
++ after cur_insn.
++*/
++rtx
++get_next_insn_cond (rtx cur_insn)
++{
++ rtx next_insn = next_nonnote_insn (cur_insn);
++ rtx cond = NULL_RTX;
++ if ((next_insn != NULL_RTX)
++ && (INSN_P (next_insn))
++ && (GET_CODE (PATTERN (next_insn)) == SET)
++ && (GET_CODE (SET_SRC (PATTERN (next_insn))) == IF_THEN_ELSE))
++ {
++ /* Branch instructions */
++ cond = XEXP (SET_SRC (PATTERN (next_insn)), 0);
++ }
++ else if ((next_insn != NULL_RTX)
++ && (INSN_P (next_insn))
++ && (GET_CODE (PATTERN (next_insn)) == SET)
++ && comparison_operator (SET_SRC (PATTERN (next_insn)),
++ GET_MODE (SET_SRC (PATTERN (next_insn)))))
++ {
++ /* scc with no compare */
++ cond = SET_SRC (PATTERN (next_insn));
++ }
++
++ return cond;
++}
++
++int
++avr32_expand_scc (enum rtx_code cond, rtx * operands)
++{
++
++ rtx comparation;
++ /* Only allow certain compare operations */
++ if (GET_MODE (avr32_compare_op0) != DImode
++ && GET_MODE (avr32_compare_op0) != SImode
++ && GET_MODE (avr32_compare_op0) != HImode
++ && GET_MODE (avr32_compare_op0) != QImode)
++ return FALSE;
++
++ /* Delete compare instruction as it is merged into this instruction */
++ remove_insn (get_last_insn_anywhere ());
++
++ if (!REG_P (avr32_compare_op0))
++ avr32_compare_op0 =
++ force_reg (GET_MODE (avr32_compare_op0), avr32_compare_op0);
++
++ if (GET_MODE (avr32_compare_op0) != SImode && !REG_P (avr32_compare_op1))
++ {
++ avr32_compare_op1 =
++ force_reg (GET_MODE (avr32_compare_op0), avr32_compare_op1);
++ }
++ else if (GET_MODE (avr32_compare_op0) == SImode
++ && !REG_P (avr32_compare_op1)
++ && (GET_CODE (avr32_compare_op1) != CONST_INT
++ || (GET_CODE (avr32_compare_op1) == CONST_INT
++ &&
++ !avr32_const_ok_for_constraint_p (INTVAL
++ (avr32_compare_op1), 'K',
++ "Ks21"))))
++ avr32_compare_op1 =
++ force_reg (GET_MODE (avr32_compare_op0), avr32_compare_op1);
++
++
++ comparation =
++ gen_rtx_EQ (SImode,
++ gen_rtx_COMPARE (GET_MODE (avr32_compare_op0),
++ avr32_compare_op0, avr32_compare_op1),
++ const0_rtx);
++ /* Set correct condition */
++ PUT_CODE (comparation, cond);
++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], comparation));
++ return TRUE;
++}
++
++rtx
++avr32_output_cmp (rtx cond, enum machine_mode mode, rtx op0, rtx op1)
++{
++
++ rtx new_cond = NULL_RTX;
++ rtx ops[2];
++ rtx compare_pattern;
++ ops[0] = op0;
++ ops[1] = op1;
++
++ compare_pattern = gen_rtx_COMPARE (mode, op0, op1);
++
++ new_cond = is_compare_redundant (compare_pattern, cond);
++
++ if (new_cond != NULL_RTX)
++ return new_cond;
++
++ /* Insert compare */
++ switch (mode)
++ {
++ case QImode:
++ output_asm_insn ("cp.b\t%0, %1", ops);
++ break;
++ case HImode:
++ output_asm_insn ("cp.h\t%0, %1", ops);
++ break;
++ case SImode:
++ output_asm_insn ("cp.w\t%0, %1", ops);
++ break;
++ case DImode:
++ if (rtx_equal_p (op1, const0_rtx))
++ output_asm_insn ("cp.w\t%0, %1\ncpc\t%m0", ops);
++ else
++ output_asm_insn ("cp.w\t%0, %1\ncpc\t%m0, %m1", ops);
++ break;
++ default:
++ internal_error ("Unknown comparison mode");
++ break;
++ }
++
++ return cond;
++}
++
++int
++avr32_load_multiple_operation (rtx op,
++ enum machine_mode mode ATTRIBUTE_UNUSED)
++{
++ int count = XVECLEN (op, 0);
++ unsigned int dest_regno;
++ rtx src_addr;
++ rtx elt;
++ int i = 1, base = 0;
++
++ if (count <= 1 || GET_CODE (XVECEXP (op, 0, 0)) != SET)
++ return 0;
++
++ /* Check to see if this might be a write-back. */
++ if (GET_CODE (SET_SRC (elt = XVECEXP (op, 0, 0))) == PLUS)
++ {
++ i++;
++ base = 1;
++
++ /* Now check it more carefully. */
++ if (GET_CODE (SET_DEST (elt)) != REG
++ || GET_CODE (XEXP (SET_SRC (elt), 0)) != REG
++ || GET_CODE (XEXP (SET_SRC (elt), 1)) != CONST_INT
++ || INTVAL (XEXP (SET_SRC (elt), 1)) != (count - 1) * 4)
++ return 0;
++ }
++
++ /* Perform a quick check so we don't blow up below. */
++ if (count <= 1
++ || GET_CODE (XVECEXP (op, 0, i - 1)) != SET
++ || GET_CODE (SET_DEST (XVECEXP (op, 0, i - 1))) != REG
++ || GET_CODE (SET_SRC (XVECEXP (op, 0, i - 1))) != UNSPEC)
++ return 0;
++
++ dest_regno = REGNO (SET_DEST (XVECEXP (op, 0, i - 1)));
++ src_addr = XEXP (SET_SRC (XVECEXP (op, 0, i - 1)), 0);
++
++ for (; i < count; i++)
++ {
++ elt = XVECEXP (op, 0, i);
++
++ if (GET_CODE (elt) != SET
++ || GET_CODE (SET_DEST (elt)) != REG
++ || GET_MODE (SET_DEST (elt)) != SImode
++ || GET_CODE (SET_SRC (elt)) != UNSPEC)
++ return 0;
++ }
++
++ return 1;
++}
++
++int
++avr32_store_multiple_operation (rtx op,
++ enum machine_mode mode ATTRIBUTE_UNUSED)
++{
++ int count = XVECLEN (op, 0);
++ int src_regno;
++ rtx dest_addr;
++ rtx elt;
++ int i = 1;
++
++ if (count <= 1 || GET_CODE (XVECEXP (op, 0, 0)) != SET)
++ return 0;
++
++ /* Perform a quick check so we don't blow up below. */
++ if (count <= i
++ || GET_CODE (XVECEXP (op, 0, i - 1)) != SET
++ || GET_CODE (SET_DEST (XVECEXP (op, 0, i - 1))) != MEM
++ || GET_CODE (SET_SRC (XVECEXP (op, 0, i - 1))) != UNSPEC)
++ return 0;
++
++ src_regno = REGNO (SET_SRC (XVECEXP (op, 0, i - 1)));
++ dest_addr = XEXP (SET_DEST (XVECEXP (op, 0, i - 1)), 0);
++
++ for (; i < count; i++)
++ {
++ elt = XVECEXP (op, 0, i);
++
++ if (GET_CODE (elt) != SET
++ || GET_CODE (SET_DEST (elt)) != MEM
++ || GET_MODE (SET_DEST (elt)) != SImode
++ || GET_CODE (SET_SRC (elt)) != UNSPEC)
++ return 0;
++ }
++
++ return 1;
++}
++
++int
++avr32_valid_macmac_bypass (rtx insn_out, rtx insn_in)
++{
++ /* Check if they use the same accumulator */
++ if (rtx_equal_p
++ (SET_DEST (PATTERN (insn_out)), SET_DEST (PATTERN (insn_in))))
++ {
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++int
++avr32_valid_mulmac_bypass (rtx insn_out, rtx insn_in)
++{
++ /*
++ Check if the mul instruction produces the accumulator for the mac
++ instruction. */
++ if (rtx_equal_p
++ (SET_DEST (PATTERN (insn_out)), SET_DEST (PATTERN (insn_in))))
++ {
++ return TRUE;
++ }
++ return FALSE;
++}
++
++int
++avr32_store_bypass (rtx insn_out, rtx insn_in)
++{
++ /* Only valid bypass if the output result is used as an src in the store
++ instruction, NOT if used as a pointer or base. */
++ if (rtx_equal_p
++ (SET_DEST (PATTERN (insn_out)), SET_SRC (PATTERN (insn_in))))
++ {
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++int
++avr32_mul_waw_bypass (rtx insn_out, rtx insn_in)
++{
++ /* Check if the register holding the result from the mul instruction is
++ used as a result register in the input instruction. */
++ if (rtx_equal_p
++ (SET_DEST (PATTERN (insn_out)), SET_DEST (PATTERN (insn_in))))
++ {
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++int
++avr32_valid_load_double_bypass (rtx insn_out, rtx insn_in)
++{
++ /* Check if the first loaded word in insn_out is used in insn_in. */
++ rtx dst_reg;
++ rtx second_loaded_reg;
++
++ /* If this is a double alu operation then the bypass is not valid */
++ if ((get_attr_type (insn_in) == TYPE_ALU
++ || get_attr_type (insn_in) == TYPE_ALU2)
++ && (GET_MODE_SIZE (GET_MODE (SET_DEST (PATTERN (insn_out)))) > 4))
++ return FALSE;
++
++ /* Get the destination register in the load */
++ if (!REG_P (SET_DEST (PATTERN (insn_out))))
++ return FALSE;
++
++ dst_reg = SET_DEST (PATTERN (insn_out));
++ second_loaded_reg = gen_rtx_REG (SImode, REGNO (dst_reg) + 1);
++
++ if (!reg_mentioned_p (second_loaded_reg, PATTERN (insn_in)))
++ return TRUE;
++
++ return FALSE;
++}
++
++
++int
++avr32_valid_load_quad_bypass (rtx insn_out, rtx insn_in)
++{
++ /*
++ Check if the two first loaded word in insn_out are used in insn_in. */
++ rtx dst_reg;
++ rtx third_loaded_reg, fourth_loaded_reg;
++
++ /* Get the destination register in the load */
++ if (!REG_P (SET_DEST (PATTERN (insn_out))))
++ return FALSE;
++
++ dst_reg = SET_DEST (PATTERN (insn_out));
++ third_loaded_reg = gen_rtx_REG (SImode, REGNO (dst_reg) + 2);
++ fourth_loaded_reg = gen_rtx_REG (SImode, REGNO (dst_reg) + 3);
++
++ if (!reg_mentioned_p (third_loaded_reg, PATTERN (insn_in))
++ && !reg_mentioned_p (fourth_loaded_reg, PATTERN (insn_in)))
++ {
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++int
++avr32_sched_use_dfa_pipeline_interface (void)
++{
++ /* No need to scedule on avr32_uc architecture. */
++ return (avr32_arch->arch_type != ARCH_TYPE_AVR32_UC);
++}
++
++void
++avr32_select_rtx_section (enum machine_mode mode ATTRIBUTE_UNUSED,
++ rtx x ATTRIBUTE_UNUSED,
++ unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED)
++{
++ /* Let ASM_OUTPUT_POOL_PROLOGUE take care of this */
++}
++
++/* Set up library functions to comply to AVR32 ABI */
++
++static void
++avr32_init_libfuncs (void)
++{
++ /* Convert gcc run-time function names to AVR32 ABI names */
++
++ /* Double-precision floating-point arithmetic. */
++ set_optab_libfunc (add_optab, DFmode, "__avr32_f64_add");
++ set_optab_libfunc (sdiv_optab, DFmode, "__avr32_f64_div");
++ set_optab_libfunc (smul_optab, DFmode, "__avr32_f64_mul");
++ set_optab_libfunc (neg_optab, DFmode, NULL);
++ set_optab_libfunc (sub_optab, DFmode, "__avr32_f64_sub");
++
++ /* Double-precision comparisons. */
++ set_optab_libfunc (eq_optab, DFmode, "__avr32_f64_cmp_eq");
++ set_optab_libfunc (ne_optab, DFmode, NULL);
++ set_optab_libfunc (lt_optab, DFmode, "__avr32_f64_cmp_lt");
++ set_optab_libfunc (le_optab, DFmode, NULL);
++ set_optab_libfunc (ge_optab, DFmode, "__avr32_f64_cmp_ge");
++ set_optab_libfunc (gt_optab, DFmode, NULL);
++
++ /* Single-precision floating-point arithmetic. */
++ set_optab_libfunc (add_optab, SFmode, "__avr32_f32_add");
++ set_optab_libfunc (sdiv_optab, SFmode, "__avr32_f32_div");
++ set_optab_libfunc (smul_optab, SFmode, "__avr32_f32_mul");
++ set_optab_libfunc (neg_optab, SFmode, NULL);
++ set_optab_libfunc (sub_optab, SFmode, "__avr32_f32_sub");
++
++ /* Single-precision comparisons. */
++ set_optab_libfunc (eq_optab, SFmode, "__avr32_f32_cmp_eq");
++ set_optab_libfunc (ne_optab, SFmode, NULL);
++ set_optab_libfunc (lt_optab, SFmode, "__avr32_f32_cmp_lt");
++ set_optab_libfunc (le_optab, SFmode, NULL);
++ set_optab_libfunc (ge_optab, SFmode, "__avr32_f32_cmp_ge");
++ set_optab_libfunc (gt_optab, SFmode, NULL);
++
++ /* Floating-point to integer conversions. */
++ set_conv_libfunc (sfix_optab, SImode, DFmode, "__avr32_f64_to_s32");
++ set_conv_libfunc (ufix_optab, SImode, DFmode, "__avr32_f64_to_u32");
++ set_conv_libfunc (sfix_optab, DImode, DFmode, "__avr32_f64_to_s64");
++ set_conv_libfunc (ufix_optab, DImode, DFmode, "__avr32_f64_to_u64");
++ set_conv_libfunc (sfix_optab, SImode, SFmode, "__avr32_f32_to_s32");
++ set_conv_libfunc (ufix_optab, SImode, SFmode, "__avr32_f32_to_u32");
++ set_conv_libfunc (sfix_optab, DImode, SFmode, "__avr32_f32_to_s64");
++ set_conv_libfunc (ufix_optab, DImode, SFmode, "__avr32_f32_to_u64");
++
++ /* Conversions between floating types. */
++ set_conv_libfunc (trunc_optab, SFmode, DFmode, "__avr32_f64_to_f32");
++ set_conv_libfunc (sext_optab, DFmode, SFmode, "__avr32_f32_to_f64");
++
++ /* Integer to floating-point conversions. Table 8. */
++ set_conv_libfunc (sfloat_optab, DFmode, SImode, "__avr32_s32_to_f64");
++ set_conv_libfunc (sfloat_optab, DFmode, DImode, "__avr32_s64_to_f64");
++ set_conv_libfunc (sfloat_optab, SFmode, SImode, "__avr32_s32_to_f32");
++ set_conv_libfunc (sfloat_optab, SFmode, DImode, "__avr32_s64_to_f32");
++ set_conv_libfunc (ufloat_optab, DFmode, SImode, "__avr32_u32_to_f64");
++ set_conv_libfunc (ufloat_optab, SFmode, SImode, "__avr32_u32_to_f32");
++ /* TODO: Add these to gcc library functions */
++
++ set_conv_libfunc (ufloat_optab, DFmode, DImode, NULL);
++ set_conv_libfunc (ufloat_optab, SFmode, DImode, NULL);
++
++ /* Long long. Table 9. */
++ set_optab_libfunc (smul_optab, DImode, "__avr32_mul64");
++ set_optab_libfunc (sdiv_optab, DImode, "__avr32_sdiv64");
++ set_optab_libfunc (udiv_optab, DImode, "__avr32_udiv64");
++ set_optab_libfunc (smod_optab, DImode, "__avr32_smod64");
++ set_optab_libfunc (umod_optab, DImode, "__avr32_umod64");
++ set_optab_libfunc (ashl_optab, DImode, "__avr32_lsl64");
++ set_optab_libfunc (lshr_optab, DImode, "__avr32_lsr64");
++ set_optab_libfunc (ashr_optab, DImode, "__avr32_asr64");
++}
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32-elf.h gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-elf.h
+--- gcc-4.0.2/gcc/config/avr32/avr32-elf.h 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-elf.h 2006-11-17 10:38:10.000000000 +0100
+@@ -0,0 +1,82 @@
++/*
++ Elf specific definitions.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++
++/*****************************************************************************
++ * Controlling the Compilator Driver, 'gcc'
++ *****************************************************************************/
++
++/* Run-time Target Specification. */
++#undef TARGET_VERSION
++#define TARGET_VERSION fputs (" (AVR32 GNU with ELF)", stderr);
++
++/*
++Another C string constant used much like LINK_SPEC. The
++difference between the two is that STARTFILE_SPEC is used at
++the very beginning of the command given to the linker.
++
++If this macro is not defined, a default is provided that loads the
++standard C startup file from the usual place. See gcc.c.
++*/
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC "crt0%O%s crti%O%s crtbegin%O%s"
++
++#undef LINK_SPEC
++#define LINK_SPEC "%{muse-oscall:--defsym __do_not_use_oscall_coproc__=0} %{mrelax|O*:%{mno-relax|O0|O1: ;:--relax}} %{mpart=*:-mavr32elf_%*} %{mcpu=*:-mavr32elf_%*}"
++
++
++/*
++Another C string constant used much like LINK_SPEC. The
++difference between the two is that ENDFILE_SPEC is used at
++the very end of the command given to the linker.
++
++Do not define this macro if it does not need to do anything.
++*/
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
++
++
++/* Target CPU builtins. */
++#define TARGET_CPU_CPP_BUILTINS() \
++ do \
++ { \
++ builtin_define ("__avr32__"); \
++ builtin_define ("__AVR32__"); \
++ builtin_define ("__AVR32_ELF__"); \
++ builtin_define (avr32_part->macro); \
++ builtin_define (avr32_arch->macro); \
++ if (avr32_arch->uarch_type == UARCH_TYPE_AVR32A) \
++ builtin_define ("__AVR32_AVR32A__"); \
++ else \
++ builtin_define ("__AVR32_AVR32B__"); \
++ if (TARGET_UNALIGNED_WORD) \
++ builtin_define ("__AVR32_HAS_UNALIGNED_WORD__"); \
++ if (TARGET_SIMD) \
++ builtin_define ("__AVR32_HAS_SIMD__"); \
++ if (TARGET_DSP) \
++ builtin_define ("__AVR32_HAS_DSP__"); \
++ if (TARGET_RMW) \
++ builtin_define ("__AVR32_HAS_RMW__"); \
++ if (TARGET_BRANCH_PRED) \
++ builtin_define ("__AVR32_HAS_BRANCH_PRED__"); \
++ } \
++ while (0)
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32.h gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.h
+--- gcc-4.0.2/gcc/config/avr32/avr32.h 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.h 2006-11-10 15:14:06.000000000 +0100
+@@ -0,0 +1,3374 @@
++/*
++ Definitions of target machine for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++ Initial porting by Anders dland.
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifndef GCC_AVR32_H
++#define GCC_AVR32_H
++
++
++#ifndef OBJECT_FORMAT_ELF
++#error avr32.h included before elfos.h
++#endif
++
++#ifndef LOCAL_LABEL_PREFIX
++#define LOCAL_LABEL_PREFIX "."
++#endif
++
++#ifndef SUBTARGET_CPP_SPEC
++#define SUBTARGET_CPP_SPEC "-D__ELF__"
++#endif
++
++
++extern struct rtx_def *avr32_compare_op0;
++extern struct rtx_def *avr32_compare_op1;
++
++
++extern struct rtx_def *avr32_acc_cache;
++
++/* cache instruction op5 codes */
++#define AVR32_CACHE_INVALIDATE_ICACHE 1
++
++/* These bits describe the different types of function supported
++ by the AVR32 backend. They are exclusive. ie a function cannot be both a
++ normal function and an interworked function, for example. Knowing the
++ type of a function is important for determining its prologue and
++ epilogue sequences.
++ Note value 7 is currently unassigned. Also note that the interrupt
++ function types all have bit 2 set, so that they can be tested for easily.
++ Note that 0 is deliberately chosen for AVR32_FT_UNKNOWN so that when the
++ machine_function structure is initialized (to zero) func_type will
++ default to unknown. This will force the first use of avr32_current_func_type
++ to call avr32_compute_func_type. */
++#define AVR32_FT_UNKNOWN 0 /* Type has not yet been determined.
++ */
++#define AVR32_FT_NORMAL 1 /* Your normal, straightforward
++ function. */
++#define AVR32_FT_ACALL 2 /* An acall function. */
++#define AVR32_FT_EXCEPTION_HANDLER 3 /* A C++ exception handler. */
++#define AVR32_FT_ISR_FULL 4 /* A fully shadowed interrupt mode. */
++#define AVR32_FT_ISR_HALF 5 /* A half shadowed interrupt mode. */
++#define AVR32_FT_ISR_NONE 6 /* No shadow registers. */
++
++#define AVR32_FT_TYPE_MASK ((1 << 3) - 1)
++
++/* In addition functions can have several type modifiers,
++ outlined by these bit masks: */
++#define AVR32_FT_INTERRUPT (1 << 2) /* Note overlap with FT_ISR
++ and above. */
++#define AVR32_FT_NAKED (1 << 3) /* No prologue or epilogue. */
++#define AVR32_FT_VOLATILE (1 << 4) /* Does not return. */
++#define AVR32_FT_NESTED (1 << 5) /* Embedded inside another
++ func. */
++
++/* Some macros to test these flags. */
++#define AVR32_FUNC_TYPE(t) (t & AVR32_FT_TYPE_MASK)
++#define IS_INTERRUPT(t) (t & AVR32_FT_INTERRUPT)
++#define IS_VOLATILE(t) (t & AVR32_FT_VOLATILE)
++#define IS_NAKED(t) (t & AVR32_FT_NAKED)
++#define IS_NESTED(t) (t & AVR32_FT_NESTED)
++
++
++typedef struct minipool_labels
++GTY ((chain_next ("%h.next"), chain_prev ("%h.prev")))
++{
++ rtx label;
++ struct minipool_labels *prev;
++ struct minipool_labels *next;
++} minipool_labels;
++
++/* A C structure for machine-specific, per-function data.
++ This is added to the cfun structure. */
++
++typedef struct machine_function
++GTY (())
++{
++ /* Records the type of the current function. */
++ unsigned long func_type;
++ /* List of minipool labels, use for checking if code label is valid in a
++ memory expression */
++ minipool_labels *minipool_label_head;
++ minipool_labels *minipool_label_tail;
++} machine_function;
++
++/* Initialize data used by insn expanders. This is called from insn_emit,
++ once for every function before code is generated. */
++#define INIT_EXPANDERS avr32_init_expanders ()
++
++/******************************************************************************
++ * SPECS
++ *****************************************************************************/
++
++#ifndef ASM_SPEC
++#define ASM_SPEC "%{fpic:--pic} %{mrelax|O*:%{mno-relax|O0|O1: ;:--linkrelax}} %{march=*:-march=%*} %{mpart=*:-mpart=%*}"
++#endif
++
++#ifndef MULTILIB_DEFAULTS
++#define MULTILIB_DEFAULTS { "march=ap" }
++#endif
++
++
++/******************************************************************************
++ * Run-time Target Specification
++ *****************************************************************************/
++extern int target_flags;
++
++/* Part types. Keep this in sync with the order of avr32_part_types in avr32.c*/
++enum part_type
++{
++ PART_TYPE_AVR32_NONE,
++ PART_TYPE_AVR32_AP7000,
++ PART_TYPE_AVR32_AP7010,
++ PART_TYPE_AVR32_AP7020,
++ PART_TYPE_AVR32_UC3A0256,
++ PART_TYPE_AVR32_UC3A0512,
++ PART_TYPE_AVR32_UC3A1128,
++ PART_TYPE_AVR32_UC3A1256,
++ PART_TYPE_AVR32_UC3A1512
++};
++
++/* Microarchitectures. */
++enum microarchitecture_type
++{
++ UARCH_TYPE_AVR32A,
++ UARCH_TYPE_AVR32B
++};
++
++/* Architectures types which specifies the pipeline.
++ Keep this in sync with avr32_arch_types in avr32.c*/
++enum architecture_type
++{
++ ARCH_TYPE_AVR32_AP,
++ ARCH_TYPE_AVR32_UC
++};
++
++/* Flag specifying if the cpu has support for DSP instructions.*/
++#define FLAG_AVR32_HAS_DSP (1 << 0)
++/* Flag specifying if the cpu has support for Read-Modify-Write
++ instructions.*/
++#define FLAG_AVR32_HAS_RMW (1 << 1)
++/* Flag specifying if the cpu has support for SIMD instructions. */
++#define FLAG_AVR32_HAS_SIMD (1 << 2)
++/* Flag specifying if the cpu has support for unaligned memory word access. */
++#define FLAG_AVR32_HAS_UNALIGNED_WORD (1 << 3)
++/* Flag specifying if the cpu has support for branch prediction. */
++#define FLAG_AVR32_HAS_BRANCH_PRED (1 << 4)
++
++/* Structure for holding information about different avr32 CPUs/parts */
++struct part_type_s
++{
++ const char *const name;
++ enum part_type part_type;
++ enum architecture_type arch_type;
++ /* Must lie outside user's namespace. NULL == no macro. */
++ const char *const macro;
++};
++
++/* Structure for holding information about different avr32 pipeline
++ architectures. */
++struct arch_type_s
++{
++ const char *const name;
++ enum architecture_type arch_type;
++ enum microarchitecture_type uarch_type;
++ const unsigned long feature_flags;
++ /* Must lie outside user's namespace. NULL == no macro. */
++ const char *const macro;
++};
++
++extern const struct part_type_s *avr32_part;
++extern const struct arch_type_s *avr32_arch;
++
++#define USE_RODATA_SECTION (1 << 0)
++#define AVR32_FLAG_HARD_FLOAT (1 << 1)
++#define AVR32_FLAG_FORCE_DOUBLE_ALIGN (1 << 2)
++#define AVR32_FLAG_RELAX (1 << 4)
++#define AVR32_FLAG_NO_INIT_GOT (1 << 5)
++#define AVR32_FLAG_NO_REORG_OPT (1 << 6)
++#define AVR32_FLAG_NO_ASM_ADDR_PSEUDOS (1 << 7)
++#define AVR32_FLAG_NO_PIC (1 << 8)
++
++#define TARGET_HARD_FLOAT (target_flags & AVR32_FLAG_HARD_FLOAT)
++#define TARGET_SOFT_FLOAT (!TARGET_HARD_FLOAT)
++#define TARGET_FORCE_DOUBLE_ALIGN (target_flags & AVR32_FLAG_FORCE_DOUBLE_ALIGN)
++#define TARGET_RELAX (target_flags & AVR32_FLAG_RELAX)
++#define TARGET_NO_INIT_GOT (target_flags & AVR32_FLAG_NO_INIT_GOT)
++#define TARGET_MD_REORG_OPTIMIZATION (!(target_flags & AVR32_FLAG_NO_REORG_OPT))
++#define TARGET_HAS_ASM_ADDR_PSEUDOS (!(target_flags & AVR32_FLAG_NO_ASM_ADDR_PSEUDOS))
++
++#define TARGET_SIMD (avr32_arch->feature_flags & FLAG_AVR32_HAS_SIMD)
++#define TARGET_DSP (avr32_arch->feature_flags & FLAG_AVR32_HAS_DSP)
++#define TARGET_RMW (avr32_arch->feature_flags & FLAG_AVR32_HAS_RMW)
++#define TARGET_UNALIGNED_WORD (avr32_arch->feature_flags & FLAG_AVR32_HAS_UNALIGNED_WORD)
++#define TARGET_BRANCH_PRED (avr32_arch->feature_flags & FLAG_AVR32_HAS_BRANCH_PRED)
++
++
++#define TARGET_SWITCHES { \
++ { "use-rodata-section", USE_RODATA_SECTION, \
++ N_("Do not put readonly-data in .text section, but in .rodata.") }, \
++ { "hard-float", AVR32_FLAG_HARD_FLOAT, \
++ N_("Use floating point coprocessor instructions.") }, \
++ { "soft-float", -AVR32_FLAG_HARD_FLOAT, \
++ N_("Use software floating-point library for floating-point operations.") }, \
++ { "force-double-align", AVR32_FLAG_FORCE_DOUBLE_ALIGN, \
++ N_("Force double-word alignment for double-word memory accesses.") }, \
++ { "no-init-got", AVR32_FLAG_NO_INIT_GOT, \
++ N_("Do not initialize GOT register before using it when compiling PIC code.") }, \
++ { "relax", AVR32_FLAG_RELAX, \
++ N_("Let invoked assembler and linker do relaxing (Enabled by default when optimization level is >1).") }, \
++ { "no-relax", -AVR32_FLAG_RELAX, \
++ N_("Don't let invoked assembler and linker do relaxing.") }, \
++ { "no-reorg-opt", AVR32_FLAG_NO_REORG_OPT, \
++ N_("Do not perform machine dependent optimizations in reorg stage.") }, \
++ { "asm-addr-pseudos", -AVR32_FLAG_NO_ASM_ADDR_PSEUDOS, \
++ N_("Use assembler pseudo-instructions lda.w and call for handling direct addresses. (Enabled by default)") }, \
++ { "no-asm-addr-pseudos", AVR32_FLAG_NO_ASM_ADDR_PSEUDOS, \
++ N_("Do not use assembler pseudo-instructions lda.w and call for handling direct addresses.") }, \
++ { "no-pic", AVR32_FLAG_NO_PIC, \
++ N_("Do not emit position-independent code (will break dynamic linking.)") }, \
++ { "", 0, NULL } \
++}
++
++
++extern const char *avr32_part_name;
++extern const char *avr32_arch_name;
++
++#define TARGET_OPTIONS { \
++ { "part=", &avr32_part_name, N_("Specify the AVR32 part name"), 0}, \
++ { "cpu=", &avr32_part_name, N_("Specify the AVR32 part name (deprecated)"), 0}, \
++ { "arch=", &avr32_arch_name, N_("Specify the AVR32 architecture name"), 0} }
++
++#define CAN_DEBUG_WITHOUT_FP
++
++/******************************************************************************
++ * Storage Layout
++ *****************************************************************************/
++
++/*
++Define this macro to have the value 1 if the most significant bit in a
++byte has the lowest number; otherwise define it to have the value zero.
++This means that bit-field instructions count from the most significant
++bit. If the machine has no bit-field instructions, then this must still
++be defined, but it doesn't matter which value it is defined to. This
++macro need not be a constant.
++
++This macro does not affect the way structure fields are packed into
++bytes or words; that is controlled by BYTES_BIG_ENDIAN.
++*/
++#define BITS_BIG_ENDIAN 0
++
++/*
++Define this macro to have the value 1 if the most significant byte in a
++word has the lowest number. This macro need not be a constant.
++*/
++/*
++ Data is stored in an big-endian way.
++*/
++#define BYTES_BIG_ENDIAN 1
++
++/*
++Define this macro to have the value 1 if, in a multiword object, the
++most significant word has the lowest number. This applies to both
++memory locations and registers; GCC fundamentally assumes that the
++order of words in memory is the same as the order in registers. This
++macro need not be a constant.
++*/
++/*
++ Data is stored in an bin-endian way.
++*/
++#define WORDS_BIG_ENDIAN 1
++
++/*
++Define this macro if WORDS_BIG_ENDIAN is not constant. This must be a
++constant value with the same meaning as WORDS_BIG_ENDIAN, which will be
++used only when compiling libgcc2.c. Typically the value will be set
++based on preprocessor defines.
++*/
++#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
++
++/*
++Define this macro to have the value 1 if DFmode, XFmode or
++TFmode floating point numbers are stored in memory with the word
++containing the sign bit at the lowest address; otherwise define it to
++have the value 0. This macro need not be a constant.
++
++You need not define this macro if the ordering is the same as for
++multi-word integers.
++*/
++/* #define FLOAT_WORDS_BIG_ENDIAN 1 */
++
++/*
++Define this macro to be the number of bits in an addressable storage
++unit (byte); normally 8.
++*/
++#define BITS_PER_UNIT 8
++
++/*
++Number of bits in a word; normally 32.
++*/
++#define BITS_PER_WORD 32
++
++/*
++Maximum number of bits in a word. If this is undefined, the default is
++BITS_PER_WORD. Otherwise, it is the constant value that is the
++largest value that BITS_PER_WORD can have at run-time.
++*/
++/* MAX_BITS_PER_WORD not defined*/
++
++/*
++Number of storage units in a word; normally 4.
++*/
++#define UNITS_PER_WORD 4
++
++/*
++Minimum number of units in a word. If this is undefined, the default is
++UNITS_PER_WORD. Otherwise, it is the constant value that is the
++smallest value that UNITS_PER_WORD can have at run-time.
++*/
++/* MIN_UNITS_PER_WORD not defined */
++
++/*
++Width of a pointer, in bits. You must specify a value no wider than the
++width of Pmode. If it is not equal to the width of Pmode,
++you must define POINTERS_EXTEND_UNSIGNED.
++*/
++#define POINTER_SIZE 32
++
++/*
++A C expression whose value is greater than zero if pointers that need to be
++extended from being POINTER_SIZE bits wide to Pmode are to
++be zero-extended and zero if they are to be sign-extended. If the value
++is less then zero then there must be an "ptr_extend" instruction that
++extends a pointer from POINTER_SIZE to Pmode.
++
++You need not define this macro if the POINTER_SIZE is equal
++to the width of Pmode.
++*/
++/* #define POINTERS_EXTEND_UNSIGNED */
++
++/*
++A Macro to update M and UNSIGNEDP when an object whose type
++is TYPE and which has the specified mode and signedness is to be
++stored in a register. This macro is only called when TYPE is a
++scalar type.
++
++On most RISC machines, which only have operations that operate on a full
++register, define this macro to set M to word_mode if
++M is an integer mode narrower than BITS_PER_WORD. In most
++cases, only integer modes should be widened because wider-precision
++floating-point operations are usually more expensive than their narrower
++counterparts.
++
++For most machines, the macro definition does not change UNSIGNEDP.
++However, some machines, have instructions that preferentially handle
++either signed or unsigned quantities of certain modes. For example, on
++the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
++sign-extend the result to 64 bits. On such machines, set
++UNSIGNEDP according to which kind of extension is more efficient.
++
++Do not define this macro if it would never modify M.
++*/
++#define PROMOTE_MODE(M, UNSIGNEDP, TYPE) \
++ do \
++ { \
++ if (GET_MODE_CLASS (M) == MODE_INT \
++ && GET_MODE_SIZE (M) < 4) \
++ { \
++ (M) = SImode; \
++ } \
++ } \
++ while (0)
++
++/* Define if operations between registers always perform the operation
++ on the full register even if a narrower mode is specified. */
++#define WORD_REGISTER_OPERATIONS
++
++/* Define if loading in MODE, an integral mode narrower than BITS_PER_WORD
++ will either zero-extend or sign-extend. The value of this macro should
++ be the code that says which one of the two operations is implicitly
++ done, UNKNOWN if not known. */
++#define LOAD_EXTEND_OP(MODE) \
++ (((MODE) == QImode) ? ZERO_EXTEND \
++ : ((MODE) == HImode) ? SIGN_EXTEND : UNKNOWN)
++
++
++/*
++Define this macro if the promotion described by PROMOTE_MODE
++should only be performed for outgoing function arguments or
++function return values, as specified by PROMOTE_FUNCTION_ARGS
++and PROMOTE_FUNCTION_RETURN, respectively.
++*/
++/* #define PROMOTE_FOR_CALL_ONLY */
++
++/*
++Normal alignment required for function parameters on the stack, in
++bits. All stack parameters receive at least this much alignment
++regardless of data type. On most machines, this is the same as the
++size of an integer.
++*/
++#define PARM_BOUNDARY 32
++
++/*
++Define this macro to the minimum alignment enforced by hardware for the
++stack pointer on this machine. The definition is a C expression for the
++desired alignment (measured in bits). This value is used as a default
++if PREFERRED_STACK_BOUNDARY is not defined. On most machines,
++this should be the same as PARM_BOUNDARY.
++*/
++#define STACK_BOUNDARY 32
++
++/*
++Define this macro if you wish to preserve a certain alignment for the
++stack pointer, greater than what the hardware enforces. The definition
++is a C expression for the desired alignment (measured in bits). This
++macro must evaluate to a value equal to or larger than
++STACK_BOUNDARY.
++*/
++#define PREFERRED_STACK_BOUNDARY (TARGET_FORCE_DOUBLE_ALIGN ? 64 : 32 )
++
++/*
++Alignment required for a function entry point, in bits.
++*/
++#define FUNCTION_BOUNDARY 16
++
++/*
++Biggest alignment that any data type can require on this machine, in bits.
++*/
++#define BIGGEST_ALIGNMENT (TARGET_FORCE_DOUBLE_ALIGN ? 64 : 32 )
++
++/*
++If defined, the smallest alignment, in bits, that can be given to an
++object that can be referenced in one operation, without disturbing any
++nearby object. Normally, this is BITS_PER_UNIT, but may be larger
++on machines that don't have byte or half-word store operations.
++*/
++#define MINIMUM_ATOMIC_ALIGNMENT BITS_PER_UNIT
++
++
++/*
++An integer expression for the size in bits of the largest integer machine mode that
++should actually be used. All integer machine modes of this size or smaller can be
++used for structures and unions with the appropriate sizes. If this macro is undefined,
++GET_MODE_BITSIZE (DImode) is assumed.*/
++#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode)
++
++
++/*
++If defined, a C expression to compute the alignment given to a constant
++that is being placed in memory. CONSTANT is the constant and
++BASIC_ALIGN is the alignment that the object would ordinarily
++have. The value of this macro is used instead of that alignment to
++align the object.
++
++If this macro is not defined, then BASIC_ALIGN is used.
++
++The typical use of this macro is to increase alignment for string
++constants to be word aligned so that strcpy calls that copy
++constants can be done inline.
++*/
++#define CONSTANT_ALIGNMENT(CONSTANT, BASIC_ALIGN) \
++ ((TREE_CODE(CONSTANT) == STRING_CST) ? BITS_PER_WORD : BASIC_ALIGN)
++
++/* Try to align string to a word. */
++#define DATA_ALIGNMENT(TYPE, ALIGN) \
++ ({(TREE_CODE (TYPE) == ARRAY_TYPE \
++ && TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
++ && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN));})
++
++/* Try to align local store strings to a word. */
++#define LOCAL_ALIGNMENT(TYPE, ALIGN) \
++ ({(TREE_CODE (TYPE) == ARRAY_TYPE \
++ && TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
++ && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN));})
++
++/*
++Define this macro to be the value 1 if instructions will fail to work
++if given data not on the nominal alignment. If instructions will merely
++go slower in that case, define this macro as 0.
++*/
++#define STRICT_ALIGNMENT 1
++
++/*
++Define this if you wish to imitate the way many other C compilers handle
++alignment of bit-fields and the structures that contain them.
++
++The behavior is that the type written for a bit-field (int,
++short, or other integer type) imposes an alignment for the
++entire structure, as if the structure really did contain an ordinary
++field of that type. In addition, the bit-field is placed within the
++structure so that it would fit within such a field, not crossing a
++boundary for it.
++
++Thus, on most machines, a bit-field whose type is written as int
++would not cross a four-byte boundary, and would force four-byte
++alignment for the whole structure. (The alignment used may not be four
++bytes; it is controlled by the other alignment parameters.)
++
++If the macro is defined, its definition should be a C expression;
++a nonzero value for the expression enables this behavior.
++
++Note that if this macro is not defined, or its value is zero, some
++bit-fields may cross more than one alignment boundary. The compiler can
++support such references if there are insv, extv, and
++extzv insns that can directly reference memory.
++
++The other known way of making bit-fields work is to define
++STRUCTURE_SIZE_BOUNDARY as large as BIGGEST_ALIGNMENT.
++Then every structure can be accessed with fullwords.
++
++Unless the machine has bit-field instructions or you define
++STRUCTURE_SIZE_BOUNDARY that way, you must define
++PCC_BITFIELD_TYPE_MATTERS to have a nonzero value.
++
++If your aim is to make GCC use the same conventions for laying out
++bit-fields as are used by another compiler, here is how to investigate
++what the other compiler does. Compile and run this program:
++
++struct foo1
++{
++ char x;
++ char :0;
++ char y;
++};
++
++struct foo2
++{
++ char x;
++ int :0;
++ char y;
++};
++
++main ()
++{
++ printf ("Size of foo1 is %d\n",
++ sizeof (struct foo1));
++ printf ("Size of foo2 is %d\n",
++ sizeof (struct foo2));
++ exit (0);
++}
++
++If this prints 2 and 5, then the compiler's behavior is what you would
++get from PCC_BITFIELD_TYPE_MATTERS.
++*/
++#define PCC_BITFIELD_TYPE_MATTERS 1
++
++
++/******************************************************************************
++ * Layout of Source Language Data Types
++ *****************************************************************************/
++
++/*
++A C expression for the size in bits of the type int on the
++target machine. If you don't define this, the default is one word.
++*/
++#define INT_TYPE_SIZE 32
++
++/*
++A C expression for the size in bits of the type short on the
++target machine. If you don't define this, the default is half a word. (If
++this would be less than one storage unit, it is rounded up to one unit.)
++*/
++#define SHORT_TYPE_SIZE 16
++
++/*
++A C expression for the size in bits of the type long on the
++target machine. If you don't define this, the default is one word.
++*/
++#define LONG_TYPE_SIZE 32
++
++
++/*
++A C expression for the size in bits of the type long long on the
++target machine. If you don't define this, the default is two
++words. If you want to support GNU Ada on your machine, the value of this
++macro must be at least 64.
++*/
++#define LONG_LONG_TYPE_SIZE 64
++
++/*
++A C expression for the size in bits of the type char on the
++target machine. If you don't define this, the default is
++BITS_PER_UNIT.
++*/
++#define CHAR_TYPE_SIZE 8
++
++
++/*
++A C expression for the size in bits of the C++ type bool and
++C99 type _Bool on the target machine. If you don't define
++this, and you probably shouldn't, the default is CHAR_TYPE_SIZE.
++*/
++#define BOOL_TYPE_SIZE 8
++
++
++/*
++An expression whose value is 1 or 0, according to whether the type
++char should be signed or unsigned by default. The user can
++always override this default with the options -fsigned-char
++and -funsigned-char.
++*/
++/* We are using unsigned char */
++#define DEFAULT_SIGNED_CHAR 0
++
++
++/*
++A C expression for a string describing the name of the data type to use
++for size values. The typedef name size_t is defined using the
++contents of the string.
++
++The string can contain more than one keyword. If so, separate them with
++spaces, and write first any length keyword, then unsigned if
++appropriate, and finally int. The string must exactly match one
++of the data type names defined in the function
++init_decl_processing in the file c-decl.c. You may not
++omit int or change the order - that would cause the compiler to
++crash on startup.
++
++If you don't define this macro, the default is "long unsigned int".
++*/
++#define SIZE_TYPE "long unsigned int"
++
++/*
++A C expression for a string describing the name of the data type to use
++for the result of subtracting two pointers. The typedef name
++ptrdiff_t is defined using the contents of the string. See
++SIZE_TYPE above for more information.
++
++If you don't define this macro, the default is "long int".
++*/
++#define PTRDIFF_TYPE "long int"
++
++
++/*
++A C expression for the size in bits of the data type for wide
++characters. This is used in cpp, which cannot make use of
++WCHAR_TYPE.
++*/
++#define WCHAR_TYPE_SIZE 32
++
++
++/*
++A C expression for a string describing the name of the data type to
++use for wide characters passed to printf and returned from
++getwc. The typedef name wint_t is defined using the
++contents of the string. See SIZE_TYPE above for more
++information.
++
++If you don't define this macro, the default is "unsigned int".
++*/
++#define WINT_TYPE "unsigned int"
++
++/*
++A C expression for a string describing the name of the data type that
++can represent any value of any standard or extended signed integer type.
++The typedef name intmax_t is defined using the contents of the
++string. See SIZE_TYPE above for more information.
++
++If you don't define this macro, the default is the first of
++"int", "long int", or "long long int" that has as
++much precision as long long int.
++*/
++#define INTMAX_TYPE "long long int"
++
++/*
++A C expression for a string describing the name of the data type that
++can represent any value of any standard or extended unsigned integer
++type. The typedef name uintmax_t is defined using the contents
++of the string. See SIZE_TYPE above for more information.
++
++If you don't define this macro, the default is the first of
++"unsigned int", "long unsigned int", or "long long unsigned int"
++that has as much precision as long long unsigned int.
++*/
++#define UINTMAX_TYPE "long long unsigned int"
++
++
++/******************************************************************************
++ * Register Usage
++ *****************************************************************************/
++
++/* Convert from gcc internal register number to register number
++ used in assembly code */
++#define ASM_REGNUM(reg) (LAST_REGNUM - (reg))
++#define ASM_FP_REGNUM(reg) (LAST_FP_REGNUM - (reg))
++
++/* Convert between register number used in assembly to gcc
++ internal register number */
++#define INTERNAL_REGNUM(reg) (LAST_REGNUM - (reg))
++#define INTERNAL_FP_REGNUM(reg) (LAST_FP_REGNUM - (reg))
++
++/** Basic Characteristics of Registers **/
++
++/*
++Number of hardware registers known to the compiler. They receive
++numbers 0 through FIRST_PSEUDO_REGISTER-1; thus, the first
++pseudo register's number really is assigned the number
++FIRST_PSEUDO_REGISTER.
++*/
++#define FIRST_PSEUDO_REGISTER (LAST_FP_REGNUM + 1)
++
++#define FIRST_REGNUM 0
++#define LAST_REGNUM 15
++#define NUM_FP_REGS 16
++#define FIRST_FP_REGNUM 16
++#define LAST_FP_REGNUM (16+NUM_FP_REGS-1)
++
++/*
++An initializer that says which registers are used for fixed purposes
++all throughout the compiled code and are therefore not available for
++general allocation. These would include the stack pointer, the frame
++pointer (except on machines where that can be used as a general
++register when no frame pointer is needed), the program counter on
++machines where that is considered one of the addressable registers,
++and any other numbered register with a standard use.
++
++This information is expressed as a sequence of numbers, separated by
++commas and surrounded by braces. The nth number is 1 if
++register n is fixed, 0 otherwise.
++
++The table initialized from this macro, and the table initialized by
++the following one, may be overridden at run time either automatically,
++by the actions of the macro CONDITIONAL_REGISTER_USAGE, or by
++the user with the command options -ffixed-[reg],
++-fcall-used-[reg] and -fcall-saved-[reg].
++*/
++
++/* The internal gcc register numbers are reversed
++ compared to the real register numbers since
++ gcc expects data types stored over multiple
++ registers in the register file to be big endian
++ if the memory layout is big endian. But this
++ is not the case for avr32 so we fake a big
++ endian register file. */
++
++#define FIXED_REGISTERS { \
++ 1, /* Program Counter */ \
++ 0, /* Link Register */ \
++ 1, /* Stack Pointer */ \
++ 0, /* r12 */ \
++ 0, /* r11 */ \
++ 0, /* r10 */ \
++ 0, /* r9 */ \
++ 0, /* r8 */ \
++ 0, /* r7 */ \
++ 0, /* r6 */ \
++ 0, /* r5 */ \
++ 0, /* r4 */ \
++ 0, /* r3 */ \
++ 0, /* r2 */ \
++ 0, /* r1 */ \
++ 0, /* r0 */ \
++ 0, /* f15 */ \
++ 0, /* f14 */ \
++ 0, /* f13 */ \
++ 0, /* f12 */ \
++ 0, /* f11 */ \
++ 0, /* f10 */ \
++ 0, /* f9 */ \
++ 0, /* f8 */ \
++ 0, /* f7 */ \
++ 0, /* f6 */ \
++ 0, /* f5 */ \
++ 0, /* f4 */ \
++ 0, /* f3 */ \
++ 0, /* f2*/ \
++ 0, /* f1 */ \
++ 0 /* f0 */ \
++}
++
++/*
++Like FIXED_REGISTERS but has 1 for each register that is
++clobbered (in general) by function calls as well as for fixed
++registers. This macro therefore identifies the registers that are not
++available for general allocation of values that must live across
++function calls.
++
++If a register has 0 in CALL_USED_REGISTERS, the compiler
++automatically saves it on function entry and restores it on function
++exit, if the register is used within the function.
++*/
++#define CALL_USED_REGISTERS { \
++ 1, /* Program Counter */ \
++ 0, /* Link Register */ \
++ 1, /* Stack Pointer */ \
++ 1, /* r12 */ \
++ 1, /* r11 */ \
++ 1, /* r10 */ \
++ 1, /* r9 */ \
++ 1, /* r8 */ \
++ 0, /* r7 */ \
++ 0, /* r6 */ \
++ 0, /* r5 */ \
++ 0, /* r4 */ \
++ 0, /* r3 */ \
++ 0, /* r2 */ \
++ 0, /* r1 */ \
++ 0, /* r0 */ \
++ 1, /* f15 */ \
++ 1, /* f14 */ \
++ 1, /* f13 */ \
++ 1, /* f12 */ \
++ 1, /* f11 */ \
++ 1, /* f10 */ \
++ 1, /* f9 */ \
++ 1, /* f8 */ \
++ 0, /* f7 */ \
++ 0, /* f6 */ \
++ 0, /* f5 */ \
++ 0, /* f4 */ \
++ 0, /* f3 */ \
++ 0, /* f2*/ \
++ 0, /* f1*/ \
++ 0, /* f0 */ \
++}
++
++/* Interrupt functions can only use registers that have already been
++ saved by the prologue, even if they would normally be
++ call-clobbered. */
++#define HARD_REGNO_RENAME_OK(SRC, DST) \
++ (! IS_INTERRUPT (cfun->machine->func_type) || \
++ regs_ever_live[DST])
++
++
++/*
++Zero or more C statements that may conditionally modify five variables
++fixed_regs, call_used_regs, global_regs,
++reg_names, and reg_class_contents, to take into account
++any dependence of these register sets on target flags. The first three
++of these are of type char [] (interpreted as Boolean vectors).
++global_regs is a const char *[], and
++reg_class_contents is a HARD_REG_SET. Before the macro is
++called, fixed_regs, call_used_regs,
++reg_class_contents, and reg_names have been initialized
++from FIXED_REGISTERS, CALL_USED_REGISTERS,
++REG_CLASS_CONTENTS, and REGISTER_NAMES, respectively.
++global_regs has been cleared, and any -ffixed-[reg],
++-fcall-used-[reg] and -fcall-saved-[reg]
++command options have been applied.
++
++You need not define this macro if it has no work to do.
++
++If the usage of an entire class of registers depends on the target
++flags, you may indicate this to GCC by using this macro to modify
++fixed_regs and call_used_regs to 1 for each of the
++registers in the classes which should not be used by GCC. Also define
++the macro REG_CLASS_FROM_LETTER to return NO_REGS if it
++is called with a letter for a class that shouldn't be used.
++
++ (However, if this class is not included in GENERAL_REGS and all
++of the insn patterns whose constraints permit this class are
++controlled by target switches, then GCC will automatically avoid using
++these registers when the target switches are opposed to them.)
++*/
++#define CONDITIONAL_REGISTER_USAGE \
++ do \
++ { \
++ int regno; \
++ \
++ if (TARGET_SOFT_FLOAT) \
++ { \
++ for (regno = FIRST_FP_REGNUM; \
++ regno <= LAST_FP_REGNUM; ++regno) \
++ fixed_regs[regno] = call_used_regs[regno] = 1; \
++ } \
++ if (flag_pic) \
++ { \
++ fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
++ call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
++ } \
++ } \
++ while (0)
++
++
++/*
++If the program counter has a register number, define this as that
++register number. Otherwise, do not define it.
++*/
++
++#define LAST_AVR32_REGNUM 16
++
++
++/** Order of Allocation of Registers **/
++
++/*
++If defined, an initializer for a vector of integers, containing the
++numbers of hard registers in the order in which GCC should prefer
++to use them (from most preferred to least).
++
++If this macro is not defined, registers are used lowest numbered first
++(all else being equal).
++
++One use of this macro is on machines where the highest numbered
++registers must always be saved and the save-multiple-registers
++instruction supports only sequences of consecutive registers. On such
++machines, define REG_ALLOC_ORDER to be an initializer that lists
++the highest numbered allocable register first.
++*/
++#define REG_ALLOC_ORDER \
++{ \
++ INTERNAL_REGNUM(8), \
++ INTERNAL_REGNUM(9), \
++ INTERNAL_REGNUM(10), \
++ INTERNAL_REGNUM(11), \
++ INTERNAL_REGNUM(12), \
++ LR_REGNUM, \
++ INTERNAL_REGNUM(7), \
++ INTERNAL_REGNUM(6), \
++ INTERNAL_REGNUM(5), \
++ INTERNAL_REGNUM(4), \
++ INTERNAL_REGNUM(3), \
++ INTERNAL_REGNUM(2), \
++ INTERNAL_REGNUM(1), \
++ INTERNAL_REGNUM(0), \
++ INTERNAL_FP_REGNUM(15), \
++ INTERNAL_FP_REGNUM(14), \
++ INTERNAL_FP_REGNUM(13), \
++ INTERNAL_FP_REGNUM(12), \
++ INTERNAL_FP_REGNUM(11), \
++ INTERNAL_FP_REGNUM(10), \
++ INTERNAL_FP_REGNUM(9), \
++ INTERNAL_FP_REGNUM(8), \
++ INTERNAL_FP_REGNUM(7), \
++ INTERNAL_FP_REGNUM(6), \
++ INTERNAL_FP_REGNUM(5), \
++ INTERNAL_FP_REGNUM(4), \
++ INTERNAL_FP_REGNUM(3), \
++ INTERNAL_FP_REGNUM(2), \
++ INTERNAL_FP_REGNUM(1), \
++ INTERNAL_FP_REGNUM(0), \
++ SP_REGNUM, \
++ PC_REGNUM \
++}
++
++
++/** How Values Fit in Registers **/
++
++/*
++A C expression for the number of consecutive hard registers, starting
++at register number REGNO, required to hold a value of mode
++MODE.
++
++On a machine where all registers are exactly one word, a suitable
++definition of this macro is
++
++#define HARD_REGNO_NREGS(REGNO, MODE) \
++ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
++ / UNITS_PER_WORD)
++*/
++#define HARD_REGNO_NREGS(REGNO, MODE) \
++ ((unsigned int)((GET_MODE_SIZE(MODE) + UNITS_PER_WORD -1 ) / UNITS_PER_WORD))
++
++/*
++A C expression that is nonzero if it is permissible to store a value
++of mode MODE in hard register number REGNO (or in several
++registers starting with that one). For a machine where all registers
++are equivalent, a suitable definition is
++
++ #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
++
++You need not include code to check for the numbers of fixed registers,
++because the allocation mechanism considers them to be always occupied.
++
++On some machines, double-precision values must be kept in even/odd
++register pairs. You can implement that by defining this macro to reject
++odd register numbers for such modes.
++
++The minimum requirement for a mode to be OK in a register is that the
++mov[mode] instruction pattern support moves between the
++register and other hard register in the same class and that moving a
++value into the register and back out not alter it.
++
++Since the same instruction used to move word_mode will work for
++all narrower integer modes, it is not necessary on any machine for
++HARD_REGNO_MODE_OK to distinguish between these modes, provided
++you define patterns movhi, etc., to take advantage of this. This
++is useful because of the interaction between HARD_REGNO_MODE_OK
++and MODES_TIEABLE_P; it is very desirable for all integer modes
++to be tieable.
++
++Many machines have special registers for floating point arithmetic.
++Often people assume that floating point machine modes are allowed only
++in floating point registers. This is not true. Any registers that
++can hold integers can safely hold a floating point machine
++mode, whether or not floating arithmetic can be done on it in those
++registers. Integer move instructions can be used to move the values.
++
++On some machines, though, the converse is true: fixed-point machine
++modes may not go in floating registers. This is true if the floating
++registers normalize any value stored in them, because storing a
++non-floating value there would garble it. In this case,
++HARD_REGNO_MODE_OK should reject fixed-point machine modes in
++floating registers. But if the floating registers do not automatically
++normalize, if you can store any bit pattern in one and retrieve it
++unchanged without a trap, then any machine mode may go in a floating
++register, so you can define this macro to say so.
++
++The primary significance of special floating registers is rather that
++they are the registers acceptable in floating point arithmetic
++instructions. However, this is of no concern to
++HARD_REGNO_MODE_OK. You handle it by writing the proper
++constraints for those instructions.
++
++On some machines, the floating registers are especially slow to access,
++so that it is better to store a value in a stack frame than in such a
++register if floating point arithmetic is not being done. As long as the
++floating registers are not in class GENERAL_REGS, they will not
++be used unless some pattern's constraint asks for one.
++*/
++#define HARD_REGNO_MODE_OK(REGNO, MODE) avr32_hard_regno_mode_ok(REGNO, MODE)
++
++/*
++A C expression that is nonzero if a value of mode
++MODE1 is accessible in mode MODE2 without copying.
++
++If HARD_REGNO_MODE_OK(R, MODE1) and
++HARD_REGNO_MODE_OK(R, MODE2) are always the same for
++any R, then MODES_TIEABLE_P(MODE1, MODE2)
++should be nonzero. If they differ for any R, you should define
++this macro to return zero unless some other mechanism ensures the
++accessibility of the value in a narrower mode.
++
++You should define this macro to return nonzero in as many cases as
++possible since doing so will allow GCC to perform better register
++allocation.
++*/
++#define MODES_TIEABLE_P(MODE1, MODE2) \
++ (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2))
++
++
++
++/******************************************************************************
++ * Register Classes
++ *****************************************************************************/
++
++/*
++An enumeral type that must be defined with all the register class names
++as enumeral values. NO_REGS must be first. ALL_REGS
++must be the last register class, followed by one more enumeral value,
++LIM_REG_CLASSES, which is not a register class but rather
++tells how many classes there are.
++
++Each register class has a number, which is the value of casting
++the class name to type int. The number serves as an index
++in many of the tables described below.
++*/
++enum reg_class
++{
++ NO_REGS,
++ GENERAL_REGS,
++ FP_REGS,
++ ALL_REGS,
++ LIM_REG_CLASSES
++};
++
++/*
++The number of distinct register classes, defined as follows:
++ #define N_REG_CLASSES (int) LIM_REG_CLASSES
++*/
++#define N_REG_CLASSES (int)LIM_REG_CLASSES
++
++/*
++An initializer containing the names of the register classes as C string
++constants. These names are used in writing some of the debugging dumps.
++*/
++#define REG_CLASS_NAMES \
++{ \
++ "NO_REGS", \
++ "GENERAL_REGS", \
++ "FLOATING_POINT_REGS", \
++ "ALL_REGS" \
++}
++
++/*
++An initializer containing the contents of the register classes, as integers
++which are bit masks. The nth integer specifies the contents of class
++n. The way the integer mask is interpreted is that
++register r is in the class if mask & (1 << r) is 1.
++
++When the machine has more than 32 registers, an integer does not suffice.
++Then the integers are replaced by sub-initializers, braced groupings containing
++several integers. Each sub-initializer must be suitable as an initializer
++for the type HARD_REG_SET which is defined in hard-reg-set.h.
++In this situation, the first integer in each sub-initializer corresponds to
++registers 0 through 31, the second integer to registers 32 through 63, and
++so on.
++*/
++#define REG_CLASS_CONTENTS { \
++ {0x00000000}, /* NO_REGS */ \
++ {0x0000FFFF}, /* GENERAL_REGS */ \
++ {0xFFFF0000}, /* FP_REGS */ \
++ {0x7FFFFFFF}, /* ALL_REGS */ \
++}
++
++
++/*
++A C expression whose value is a register class containing hard register
++REGNO. In general there is more than one such class; choose a class
++which is minimal, meaning that no smaller class also contains the
++register.
++*/
++#define REGNO_REG_CLASS(REGNO) ((REGNO < 16) ? GENERAL_REGS : FP_REGS)
++
++/*
++A macro whose definition is the name of the class to which a valid
++base register must belong. A base register is one used in an address
++which is the register value plus a displacement.
++*/
++#define BASE_REG_CLASS GENERAL_REGS
++
++/*
++This is a variation of the BASE_REG_CLASS macro which allows
++the selection of a base register in a mode depenedent manner. If
++mode is VOIDmode then it should return the same value as
++BASE_REG_CLASS.
++*/
++#define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS
++
++/*
++A macro whose definition is the name of the class to which a valid
++index register must belong. An index register is one used in an
++address where its value is either multiplied by a scale factor or
++added to another register (as well as added to a displacement).
++*/
++#define INDEX_REG_CLASS BASE_REG_CLASS
++
++/*
++A C expression which defines the machine-dependent operand constraint
++letters for register classes. If CHAR is such a letter, the
++value should be the register class corresponding to it. Otherwise,
++the value should be NO_REGS. The register letter r,
++corresponding to class GENERAL_REGS, will not be passed
++to this macro; you do not need to handle it.
++*/
++#define REG_CLASS_FROM_LETTER(CHAR) ((CHAR) == 'f' ? FP_REGS : NO_REGS)
++
++
++/* These assume that REGNO is a hard or pseudo reg number.
++ They give nonzero only if REGNO is a hard reg of the suitable class
++ or a pseudo reg currently allocated to a suitable hard reg.
++ Since they use reg_renumber, they are safe only once reg_renumber
++ has been allocated, which happens in local-alloc.c. */
++#define TEST_REGNO(R, TEST, VALUE) \
++ ((R TEST VALUE) || ((unsigned) reg_renumber[R] TEST VALUE))
++
++/*
++A C expression which is nonzero if register number num is suitable for use as a base
++register in operand addresses. It may be either a suitable hard register or a pseudo
++register that has been allocated such a hard register.
++*/
++#define REGNO_OK_FOR_BASE_P(NUM) TEST_REGNO(NUM, <=, LAST_REGNUM)
++
++/*
++A C expression which is nonzero if register number NUM is
++suitable for use as an index register in operand addresses. It may be
++either a suitable hard register or a pseudo register that has been
++allocated such a hard register.
++
++The difference between an index register and a base register is that
++the index register may be scaled. If an address involves the sum of
++two registers, neither one of them scaled, then either one may be
++labeled the ``base'' and the other the ``index''; but whichever
++labeling is used must fit the machine's constraints of which registers
++may serve in each capacity. The compiler will try both labelings,
++looking for one that is valid, and will reload one or both registers
++only if neither labeling works.
++*/
++#define REGNO_OK_FOR_INDEX_P(NUM) TEST_REGNO(NUM, <=, LAST_REGNUM)
++
++/*
++A C expression that places additional restrictions on the register class
++to use when it is necessary to copy value X into a register in class
++CLASS. The value is a register class; perhaps CLASS, or perhaps
++another, smaller class. On many machines, the following definition is
++safe: #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
++
++Sometimes returning a more restrictive class makes better code. For
++example, on the 68000, when X is an integer constant that is in range
++for a 'moveq' instruction, the value of this macro is always
++DATA_REGS as long as CLASS includes the data registers.
++Requiring a data register guarantees that a 'moveq' will be used.
++
++If X is a const_double, by returning NO_REGS
++you can force X into a memory constant. This is useful on
++certain machines where immediate floating values cannot be loaded into
++certain kinds of registers.
++*/
++#define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS
++
++
++
++/*
++A C expression for the maximum number of consecutive registers
++of class CLASS needed to hold a value of mode MODE.
++
++This is closely related to the macro HARD_REGNO_NREGS. In fact,
++the value of the macro CLASS_MAX_NREGS(CLASS, MODE)
++should be the maximum value of HARD_REGNO_NREGS(REGNO, MODE)
++for all REGNO values in the class CLASS.
++
++This macro helps control the handling of multiple-word values
++in the reload pass.
++*/
++#define CLASS_MAX_NREGS(CLASS, MODE) /* ToDo:fixme */ \
++ (unsigned int)((GET_MODE_SIZE(MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
++
++
++/*
++ Using CONST_OK_FOR_CONSTRAINT_P instead of CONS_OK_FOR_LETTER_P
++ in order to support constraints with more than one letter.
++ Only two letters are then used for constant constraints,
++ the letter 'K' and the letter 'I'. The constraint starting with
++ these letters must consist of four characters. The character following
++ 'K' or 'I' must be either 'u' (unsigned) or 's' (signed) to specify
++ if the constant is zero or sign extended. The last two characters specify
++ the length in bits of the constant. The base constraint letter 'I' means
++ that this is an negated constant, meaning that actually -VAL should be
++ checked to lie withing the valid range instead of VAL which is used when
++ 'K' is the base constraint letter.
++
++*/
++
++#define CONSTRAINT_LEN(C, STR) \
++ ( ((C) == 'K' || (C) == 'I') ? 4 : \
++ ((C) == 'R') ? 5 : \
++ ((C) == 'N' || (C) == 'O' || \
++ (C) == 'P' || (C) == 'L' || (C) == 'J') ? -1 : \
++ DEFAULT_CONSTRAINT_LEN((C), (STR)) )
++
++#define CONST_OK_FOR_CONSTRAINT_P(VALUE, C, STR) \
++ avr32_const_ok_for_constraint_p(VALUE, C, STR)
++
++/*
++A C expression that defines the machine-dependent operand constraint
++letters that specify particular ranges of const_double values ('G' or 'H').
++
++If C is one of those letters, the expression should check that
++VALUE, an RTX of code const_double, is in the appropriate
++range and return 1 if so, 0 otherwise. If C is not one of those
++letters, the value should be 0 regardless of VALUE.
++
++const_double is used for all floating-point constants and for
++DImode fixed-point constants. A given letter can accept either
++or both kinds of values. It can use GET_MODE to distinguish
++between these kinds.
++*/
++#define CONST_DOUBLE_OK_FOR_LETTER_P(OP, C) \
++ ((C) == 'G' ? avr32_const_double_immediate(OP) : 0)
++
++/*
++A C expression that defines the optional machine-dependent constraint
++letters that can be used to segregate specific types of operands, usually
++memory references, for the target machine. Any letter that is not
++elsewhere defined and not matched by REG_CLASS_FROM_LETTER
++may be used. Normally this macro will not be defined.
++
++If it is required for a particular target machine, it should return 1
++if VALUE corresponds to the operand type represented by the
++constraint letter C. If C is not defined as an extra
++constraint, the value returned should be 0 regardless of VALUE.
++
++For example, on the ROMP, load instructions cannot have their output
++in r0 if the memory reference contains a symbolic address. Constraint
++letter 'Q' is defined as representing a memory address that does
++not contain a symbolic address. An alternative is specified with
++a 'Q' constraint on the input and 'r' on the output. The next
++alternative specifies 'm' on the input and a register class that
++does not include r0 on the output.
++*/
++#define EXTRA_CONSTRAINT_STR(OP, C, STR) \
++ ((C) == 'W' ? avr32_address_operand(OP, GET_MODE(OP)) : \
++ (C) == 'R' ? (avr32_indirect_register_operand(OP, GET_MODE(OP)) || \
++ (avr32_imm_disp_memory_operand(OP, GET_MODE(OP)) \
++ && avr32_const_ok_for_constraint_p( \
++ INTVAL(XEXP(XEXP(OP, 0), 1)), \
++ (STR)[1], &(STR)[1]))) : \
++ (C) == 'S' ? avr32_indexed_memory_operand(OP, GET_MODE(OP)) : \
++ (C) == 'T' ? avr32_const_pool_ref_operand(OP, GET_MODE(OP)) : \
++ (C) == 'U' ? SYMBOL_REF_RCALL_FUNCTION_P(OP) : \
++ (C) == 'Z' ? avr32_cop_memory_operand(OP, GET_MODE(OP)) : \
++ 0)
++
++
++#define EXTRA_MEMORY_CONSTRAINT(C, STR) ( ((C) == 'R') || \
++ ((C) == 'S') || \
++ ((C) == 'Z') )
++
++
++/* Returns nonzero if op is a function SYMBOL_REF which
++ can be called using an rcall instruction */
++#define SYMBOL_REF_RCALL_FUNCTION_P(op) \
++ ( GET_CODE(op) == SYMBOL_REF \
++ && SYMBOL_REF_FUNCTION_P(op) \
++ && SYMBOL_REF_LOCAL_P(op) \
++ && !SYMBOL_REF_EXTERNAL_P(op) \
++ && !TARGET_HAS_ASM_ADDR_PSEUDOS )
++
++/******************************************************************************
++ * Stack Layout and Calling Conventions
++ *****************************************************************************/
++
++/** Basic Stack Layout **/
++
++/*
++Define this macro if pushing a word onto the stack moves the stack
++pointer to a smaller address.
++
++When we say, ``define this macro if ...,'' it means that the
++compiler checks this macro only with #ifdef so the precise
++definition used does not matter.
++*/
++/* pushm decrece SP: *(--SP) <-- Rx */
++#define STACK_GROWS_DOWNWARD
++
++/*
++This macro defines the operation used when something is pushed
++on the stack. In RTL, a push operation will be
++(set (mem (STACK_PUSH_CODE (reg sp))) ...)
++
++The choices are PRE_DEC, POST_DEC, PRE_INC,
++and POST_INC. Which of these is correct depends on
++the stack direction and on whether the stack pointer points
++to the last item on the stack or whether it points to the
++space for the next item on the stack.
++
++The default is PRE_DEC when STACK_GROWS_DOWNWARD is
++defined, which is almost always right, and PRE_INC otherwise,
++which is often wrong.
++*/
++/* pushm: *(--SP) <-- Rx */
++#define STACK_PUSH_CODE PRE_DEC
++
++/*
++Define this macro if the addresses of local variable slots are at negative
++offsets from the frame pointer.
++*/
++#define FRAME_GROWS_DOWNWARD
++
++
++/*
++Offset from the frame pointer to the first local variable slot to be allocated.
++
++If FRAME_GROWS_DOWNWARD, find the next slot's offset by
++subtracting the first slot's length from STARTING_FRAME_OFFSET.
++Otherwise, it is found by adding the length of the first slot to the
++value STARTING_FRAME_OFFSET.
++ (i'm not sure if the above is still correct.. had to change it to get
++ rid of an overfull. --mew 2feb93 )
++*/
++#define STARTING_FRAME_OFFSET 0
++
++/*
++Offset from the stack pointer register to the first location at which
++outgoing arguments are placed. If not specified, the default value of
++zero is used. This is the proper value for most machines.
++
++If ARGS_GROW_DOWNWARD, this is the offset to the location above
++the first location at which outgoing arguments are placed.
++*/
++#define STACK_POINTER_OFFSET 0
++
++/*
++Offset from the argument pointer register to the first argument's
++address. On some machines it may depend on the data type of the
++function.
++
++If ARGS_GROW_DOWNWARD, this is the offset to the location above
++the first argument's address.
++*/
++#define FIRST_PARM_OFFSET(FUNDECL) 0
++
++
++/*
++A C expression whose value is RTL representing the address in a stack
++frame where the pointer to the caller's frame is stored. Assume that
++FRAMEADDR is an RTL expression for the address of the stack frame
++itself.
++
++If you don't define this macro, the default is to return the value
++of FRAMEADDR - that is, the stack frame address is also the
++address of the stack word that points to the previous frame.
++*/
++#define DYNAMIC_CHAIN_ADDRESS(FRAMEADDR) plus_constant ((FRAMEADDR), 4)
++
++
++/*
++A C expression whose value is RTL representing the value of the return
++address for the frame COUNT steps up from the current frame, after
++the prologue. FRAMEADDR is the frame pointer of the COUNT
++frame, or the frame pointer of the COUNT - 1 frame if
++RETURN_ADDR_IN_PREVIOUS_FRAME is defined.
++
++The value of the expression must always be the correct address when
++COUNT is zero, but may be NULL_RTX if there is not way to
++determine the return address of other frames.
++*/
++#define RETURN_ADDR_RTX(COUNT, FRAMEADDR) avr32_return_addr(COUNT, FRAMEADDR)
++
++
++/*
++A C expression whose value is RTL representing the location of the
++incoming return address at the beginning of any function, before the
++prologue. This RTL is either a REG, indicating that the return
++value is saved in 'REG', or a MEM representing a location in
++the stack.
++
++You only need to define this macro if you want to support call frame
++debugging information like that provided by DWARF 2.
++
++If this RTL is a REG, you should also define
++DWARF_FRAME_RETURN_COLUMN to DWARF_FRAME_REGNUM (REGNO).
++*/
++#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LR_REGNUM)
++
++
++
++/*
++A C expression whose value is an integer giving the offset, in bytes,
++from the value of the stack pointer register to the top of the stack
++frame at the beginning of any function, before the prologue. The top of
++the frame is defined to be the value of the stack pointer in the
++previous frame, just before the call instruction.
++
++You only need to define this macro if you want to support call frame
++debugging information like that provided by DWARF 2.
++*/
++#define INCOMING_FRAME_SP_OFFSET 0
++
++
++/** Exception Handling Support **/
++
++#define DWARF2_UNWIND_INFO 1
++
++/*
++A C expression whose value is the Nth register number used for
++data by exception handlers, or INVALID_REGNUM if fewer than
++N registers are usable.
++
++The exception handling library routines communicate with the exception
++handlers via a set of agreed upon registers. Ideally these registers
++should be call-clobbered; it is possible to use call-saved registers,
++but may negatively impact code size. The target must support at least
++2 data registers, but should define 4 if there are enough free registers.
++
++You must define this macro if you want to support call frame exception
++handling like that provided by DWARF 2.
++*/
++/*
++ Use r8-r11
++*/
++#define EH_RETURN_DATA_REGNO(N) \
++ ((N) < 4 ? INTERNAL_REGNUM((N) + 8U) : INVALID_REGNUM)
++
++/*
++A C expression whose value is RTL representing a location in which
++to store a stack adjustment to be applied before function return.
++This is used to unwind the stack to an exception handler's call frame.
++It will be assigned zero on code paths that return normally.
++
++Typically this is a call-clobbered hard register that is otherwise
++untouched by the epilogue, but could also be a stack slot.
++
++You must define this macro if you want to support call frame exception
++handling like that provided by DWARF 2.
++*/
++/*
++ I don't think functions that may throw exceptions can ever be leaf
++ functions, so we may safely use LR for this.
++*/
++#define EH_RETURN_STACKADJ_REGNO LR_REGNUM
++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG(SImode, EH_RETURN_STACKADJ_REGNO)
++
++/*
++A C expression whose value is RTL representing a location in which
++to store the address of an exception handler to which we should
++return. It will not be assigned on code paths that return normally.
++
++Typically this is the location in the call frame at which the normal
++return address is stored. For targets that return by popping an
++address off the stack, this might be a memory address just below
++the target call frame rather than inside the current call
++frame. EH_RETURN_STACKADJ_RTX will have already been assigned,
++so it may be used to calculate the location of the target call frame.
++
++Some targets have more complex requirements than storing to an
++address calculable during initial code generation. In that case
++the eh_return instruction pattern should be used instead.
++
++If you want to support call frame exception handling, you must
++define either this macro or the eh_return instruction pattern.
++*/
++/*
++ We define the eh_return instruction pattern, so this isn't needed.
++*/
++/* #define EH_RETURN_HANDLER_RTX gen_rtx_REG(Pmode, RET_REGISTER) */
++
++/*
++ This macro chooses the encoding of pointers embedded in the
++ exception handling sections. If at all possible, this should be
++ defined such that the exception handling section will not require
++ dynamic relocations, and so may be read-only.
++
++ code is 0 for data, 1 for code labels, 2 for function
++ pointers. global is true if the symbol may be affected by dynamic
++ relocations. The macro should return a combination of the DW_EH_PE_*
++ defines as found in dwarf2.h.
++
++ If this macro is not defined, pointers will not be encoded but
++ represented directly.
++*/
++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
++ ((flag_pic && (GLOBAL) ? DW_EH_PE_indirect : 0) \
++ | (flag_pic ? DW_EH_PE_pcrel : DW_EH_PE_absptr) \
++ | DW_EH_PE_sdata4)
++
++/* ToDo: The rest of this subsection */
++
++/** Specifying How Stack Checking is Done **/
++/* ToDo: All in this subsection */
++
++/** Registers That Address the Stack Frame **/
++
++/*
++The register number of the stack pointer register, which must also be a
++fixed register according to FIXED_REGISTERS. On most machines,
++the hardware determines which register this is.
++*/
++/* Using r13 as stack pointer. */
++#define STACK_POINTER_REGNUM INTERNAL_REGNUM(13)
++
++/*
++The register number of the frame pointer register, which is used to
++access automatic variables in the stack frame. On some machines, the
++hardware determines which register this is. On other machines, you can
++choose any register you wish for this purpose.
++*/
++/* Use r7 */
++#define FRAME_POINTER_REGNUM INTERNAL_REGNUM(7)
++
++
++
++/*
++The register number of the arg pointer register, which is used to access
++the function's argument list. On some machines, this is the same as the
++frame pointer register. On some machines, the hardware determines which
++register this is. On other machines, you can choose any register you
++wish for this purpose. If this is not the same register as the frame
++pointer register, then you must mark it as a fixed register according to
++FIXED_REGISTERS, or arrange to be able to eliminate it (see Section
++10.10.5 [Elimination], page 224).
++*/
++/* Using r5 */
++#define ARG_POINTER_REGNUM INTERNAL_REGNUM(4)
++
++
++/*
++Register numbers used for passing a function's static chain pointer. If
++register windows are used, the register number as seen by the called
++function is STATIC_CHAIN_INCOMING_REGNUM, while the register
++number as seen by the calling function is STATIC_CHAIN_REGNUM. If
++these registers are the same, STATIC_CHAIN_INCOMING_REGNUM need
++not be defined.
++
++The static chain register need not be a fixed register.
++
++If the static chain is passed in memory, these macros should not be
++defined; instead, the next two macros should be defined.
++*/
++/* Using r0 */
++#define STATIC_CHAIN_REGNUM INTERNAL_REGNUM(0)
++
++
++/** Eliminating Frame Pointer and Arg Pointer **/
++
++/*
++A C expression which is nonzero if a function must have and use a frame
++pointer. This expression is evaluated in the reload pass. If its value is
++nonzero the function will have a frame pointer.
++
++The expression can in principle examine the current function and decide
++according to the facts, but on most machines the constant 0 or the
++constant 1 suffices. Use 0 when the machine allows code to be generated
++with no frame pointer, and doing so saves some time or space. Use 1
++when there is no possible advantage to avoiding a frame pointer.
++
++In certain cases, the compiler does not know how to produce valid code
++without a frame pointer. The compiler recognizes those cases and
++automatically gives the function a frame pointer regardless of what
++FRAME_POINTER_REQUIRED says. You don't need to worry about
++them.
++
++In a function that does not require a frame pointer, the frame pointer
++register can be allocated for ordinary usage, unless you mark it as a
++fixed register. See FIXED_REGISTERS for more information.
++*/
++/* We need the frame pointer when compiling for profiling */
++#define FRAME_POINTER_REQUIRED (current_function_profile)
++
++/*
++A C statement to store in the variable DEPTH_VAR the difference
++between the frame pointer and the stack pointer values immediately after
++the function prologue. The value would be computed from information
++such as the result of get_frame_size () and the tables of
++registers regs_ever_live and call_used_regs.
++
++If ELIMINABLE_REGS is defined, this macro will be not be used and
++need not be defined. Otherwise, it must be defined even if
++FRAME_POINTER_REQUIRED is defined to always be true; in that
++case, you may set DEPTH_VAR to anything.
++*/
++#define INITIAL_FRAME_POINTER_OFFSET(DEPTH_VAR) ((DEPTH_VAR) = get_frame_size())
++
++/*
++If defined, this macro specifies a table of register pairs used to
++eliminate unneeded registers that point into the stack frame. If it is not
++defined, the only elimination attempted by the compiler is to replace
++references to the frame pointer with references to the stack pointer.
++
++The definition of this macro is a list of structure initializations, each
++of which specifies an original and replacement register.
++
++On some machines, the position of the argument pointer is not known until
++the compilation is completed. In such a case, a separate hard register
++must be used for the argument pointer. This register can be eliminated by
++replacing it with either the frame pointer or the argument pointer,
++depending on whether or not the frame pointer has been eliminated.
++
++In this case, you might specify:
++ #define ELIMINABLE_REGS \
++ {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
++ {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
++ {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
++
++Note that the elimination of the argument pointer with the stack pointer is
++specified first since that is the preferred elimination.
++*/
++#define ELIMINABLE_REGS \
++{ \
++ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM }, \
++ { ARG_POINTER_REGNUM, STACK_POINTER_REGNUM }, \
++ { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM } \
++}
++
++/*
++A C expression that returns nonzero if the compiler is allowed to try
++to replace register number FROM with register number
++TO. This macro need only be defined if ELIMINABLE_REGS
++is defined, and will usually be the constant 1, since most of the cases
++preventing register elimination are things that the compiler already
++knows about.
++*/
++#define CAN_ELIMINATE(FROM, TO) 1
++
++/*
++This macro is similar to INITIAL_FRAME_POINTER_OFFSET. It
++specifies the initial difference between the specified pair of
++registers. This macro must be defined if ELIMINABLE_REGS is
++defined.
++*/
++#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
++ ((OFFSET) = avr32_initial_elimination_offset(FROM, TO))
++
++/** Passing Function Arguments on the Stack **/
++
++
++/*
++A C expression. If nonzero, push insns will be used to pass
++outgoing arguments.
++If the target machine does not have a push instruction, set it to zero.
++That directs GCC to use an alternate strategy: to
++allocate the entire argument block and then store the arguments into
++it. When PUSH_ARGS is nonzero, PUSH_ROUNDING must be defined too.
++*/
++#define PUSH_ARGS 1
++
++
++/*
++A C expression that is the number of bytes actually pushed onto the
++stack when an instruction attempts to push NPUSHED bytes.
++
++On some machines, the definition
++
++ #define PUSH_ROUNDING(BYTES) (BYTES)
++
++will suffice. But on other machines, instructions that appear
++to push one byte actually push two bytes in an attempt to maintain
++alignment. Then the definition should be
++
++ #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
++*/
++/* Push 4 bytes at the time. */
++#define PUSH_ROUNDING(NPUSHED) (((NPUSHED) + 3) & ~3)
++
++/*
++A C expression. If nonzero, the maximum amount of space required for
++outgoing arguments will be computed and placed into the variable
++current_function_outgoing_args_size. No space will be pushed
++onto the stack for each call; instead, the function prologue should
++increase the stack frame size by this amount.
++
++Setting both PUSH_ARGS and ACCUMULATE_OUTGOING_ARGS is not proper.
++*/
++#define ACCUMULATE_OUTGOING_ARGS 0
++
++
++
++
++/*
++A C expression that should indicate the number of bytes of its own
++arguments that a function pops on returning, or 0 if the
++function pops no arguments and the caller must therefore pop them all
++after the function returns.
++
++FUNDECL is a C variable whose value is a tree node that describes
++the function in question. Normally it is a node of type
++FUNCTION_DECL that describes the declaration of the function.
++From this you can obtain the DECL_ATTRIBUTES of the function.
++
++FUNTYPE is a C variable whose value is a tree node that
++describes the function in question. Normally it is a node of type
++FUNCTION_TYPE that describes the data type of the function.
++From this it is possible to obtain the data types of the value and
++arguments (if known).
++
++When a call to a library function is being considered, FUNDECL
++will contain an identifier node for the library function. Thus, if
++you need to distinguish among various library functions, you can do so
++by their names. Note that ``library function'' in this context means
++a function used to perform arithmetic, whose name is known specially
++in the compiler and was not mentioned in the C code being compiled.
++
++STACK_SIZE is the number of bytes of arguments passed on the
++stack. If a variable number of bytes is passed, it is zero, and
++argument popping will always be the responsibility of the calling function.
++
++On the VAX, all functions always pop their arguments, so the definition
++of this macro is STACK_SIZE. On the 68000, using the standard
++calling convention, no functions pop their arguments, so the value of
++the macro is always 0 in this case. But an alternative calling
++convention is available in which functions that take a fixed number of
++arguments pop them but other functions (such as printf) pop
++nothing (the caller pops all). When this convention is in use,
++FUNTYPE is examined to determine whether a function takes a fixed
++number of arguments.
++*/
++#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACK_SIZE) 0
++
++
++/*Return true if this function can we use a single return instruction*/
++#define USE_RETURN_INSN(ISCOND) avr32_use_return_insn(ISCOND)
++
++/*
++A C expression that should indicate the number of bytes a call sequence
++pops off the stack. It is added to the value of RETURN_POPS_ARGS
++when compiling a function call.
++
++CUM is the variable in which all arguments to the called function
++have been accumulated.
++
++On certain architectures, such as the SH5, a call trampoline is used
++that pops certain registers off the stack, depending on the arguments
++that have been passed to the function. Since this is a property of the
++call site, not of the called function, RETURN_POPS_ARGS is not
++appropriate.
++*/
++#define CALL_POPS_ARGS(CUM) 0
++
++/* Passing Arguments in Registers */
++
++/*
++A C expression that controls whether a function argument is passed
++in a register, and which register.
++
++The arguments are CUM, which summarizes all the previous
++arguments; MODE, the machine mode of the argument; TYPE,
++the data type of the argument as a tree node or 0 if that is not known
++(which happens for C support library functions); and NAMED,
++which is 1 for an ordinary argument and 0 for nameless arguments that
++correspond to '...' in the called function's prototype.
++TYPE can be an incomplete type if a syntax error has previously
++occurred.
++
++The value of the expression is usually either a reg RTX for the
++hard register in which to pass the argument, or zero to pass the
++argument on the stack.
++
++For machines like the VAX and 68000, where normally all arguments are
++pushed, zero suffices as a definition.
++
++The value of the expression can also be a parallel RTX. This is
++used when an argument is passed in multiple locations. The mode of the
++of the parallel should be the mode of the entire argument. The
++parallel holds any number of expr_list pairs; each one
++describes where part of the argument is passed. In each
++expr_list the first operand must be a reg RTX for the hard
++register in which to pass this part of the argument, and the mode of the
++register RTX indicates how large this part of the argument is. The
++second operand of the expr_list is a const_int which gives
++the offset in bytes into the entire argument of where this part starts.
++As a special exception the first expr_list in the parallel
++RTX may have a first operand of zero. This indicates that the entire
++argument is also stored on the stack.
++
++The last time this macro is called, it is called with MODE == VOIDmode,
++and its result is passed to the call or call_value
++pattern as operands 2 and 3 respectively.
++
++The usual way to make the ISO library 'stdarg.h' work on a machine
++where some arguments are usually passed in registers, is to cause
++nameless arguments to be passed on the stack instead. This is done
++by making FUNCTION_ARG return 0 whenever NAMED is 0.
++
++You may use the macro MUST_PASS_IN_STACK (MODE, TYPE)
++in the definition of this macro to determine if this argument is of a
++type that must be passed in the stack. If REG_PARM_STACK_SPACE
++is not defined and FUNCTION_ARG returns nonzero for such an
++argument, the compiler will abort. If REG_PARM_STACK_SPACE is
++defined, the argument will be computed in the stack and then loaded into
++a register. */
++
++#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
++ avr32_function_arg(&(CUM), MODE, TYPE, NAMED)
++
++
++
++
++/*
++A C type for declaring a variable that is used as the first argument of
++FUNCTION_ARG and other related values. For some target machines,
++the type int suffices and can hold the number of bytes of
++argument so far.
++
++There is no need to record in CUMULATIVE_ARGS anything about the
++arguments that have been passed on the stack. The compiler has other
++variables to keep track of that. For target machines on which all
++arguments are passed on the stack, there is no need to store anything in
++CUMULATIVE_ARGS; however, the data structure must exist and
++should not be empty, so use int.
++*/
++typedef struct avr32_args
++{
++ /* Index representing the argument register the current function argument
++ will occupy */
++ int index;
++ /* A mask with bits representing the argument registers: if a bit is set
++ then this register is used for an arguemnt */
++ int used_index;
++ /* TRUE if this function has anonymous arguments */
++ int uses_anonymous_args;
++ /* The size in bytes of the named arguments pushed on the stack */
++ int stack_pushed_args_size;
++ /* Set to true if this function needs a Return Value Pointer */
++ int use_rvp;
++
++} CUMULATIVE_ARGS;
++
++
++#define FIRST_CUM_REG_INDEX 0
++#define LAST_CUM_REG_INDEX 4
++#define GET_REG_INDEX(CUM) ((CUM)->index)
++#define SET_REG_INDEX(CUM, INDEX) ((CUM)->index = (INDEX));
++#define GET_USED_INDEX(CUM, INDEX) ((CUM)->used_index & (1 << (INDEX)))
++#define SET_USED_INDEX(CUM, INDEX) \
++ do \
++ { \
++ if (INDEX >= 0) \
++ (CUM)->used_index |= (1 << (INDEX)); \
++ } \
++ while (0)
++#define SET_INDEXES_UNUSED(CUM) ((CUM)->used_index = 0)
++
++
++/*
++ A C statement (sans semicolon) for initializing the variable cum for the
++ state at the beginning of the argument list. The variable has type
++ CUMULATIVE_ARGS. The value of FNTYPE is the tree node for the data type of
++ the function which will receive the args, or 0 if the args are to a compiler
++ support library function. For direct calls that are not libcalls, FNDECL
++ contain the declaration node of the function. FNDECL is also set when
++ INIT_CUMULATIVE_ARGS is used to find arguments for the function being
++ compiled. N_NAMED_ARGS is set to the number of named arguments, including a
++ structure return address if it is passed as a parameter, when making a call.
++ When processing incoming arguments, N_NAMED_ARGS is set to -1.
++
++ When processing a call to a compiler support library function, LIBNAME
++ identifies which one. It is a symbol_ref rtx which contains the name of the
++ function, as a string. LIBNAME is 0 when an ordinary C function call is
++ being processed. Thus, each time this macro is called, either LIBNAME or
++ FNTYPE is nonzero, but never both of them at once.
++*/
++#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
++ avr32_init_cumulative_args(&(CUM), FNTYPE, LIBNAME, FNDECL)
++
++
++/*
++A C statement (sans semicolon) to update the summarizer variable
++CUM to advance past an argument in the argument list. The
++values MODE, TYPE and NAMED describe that argument.
++Once this is done, the variable CUM is suitable for analyzing
++the following argument with FUNCTION_ARG, etc.
++
++This macro need not do anything if the argument in question was passed
++on the stack. The compiler knows how to track the amount of stack space
++used for arguments without any special help.
++*/
++#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
++ avr32_function_arg_advance(&(CUM), MODE, TYPE, NAMED)
++
++/*
++If defined, a C expression which determines whether, and in which direction,
++to pad out an argument with extra space. The value should be of type
++enum direction: either 'upward' to pad above the argument,
++'downward' to pad below, or 'none' to inhibit padding.
++
++The amount of padding is always just enough to reach the next
++multiple of FUNCTION_ARG_BOUNDARY; this macro does not control
++it.
++
++This macro has a default definition which is right for most systems.
++For little-endian machines, the default is to pad upward. For
++big-endian machines, the default is to pad downward for an argument of
++constant size shorter than an int, and upward otherwise.
++*/
++#define FUNCTION_ARG_PADDING(MODE, TYPE) \
++ avr32_function_arg_padding(MODE, TYPE)
++
++/*
++ Specify padding for the last element of a block move between registers
++ and memory. First is nonzero if this is the only element. Defining
++ this macro allows better control of register function parameters on
++ big-endian machines, without using PARALLEL rtl. In particular,
++ MUST_PASS_IN_STACK need not test padding and mode of types in registers,
++ as there is no longer a "wrong" part of a register; For example, a three
++ byte aggregate may be passed in the high part of a register if so required.
++*/
++#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
++ avr32_function_arg_padding(MODE, TYPE)
++
++/*
++If defined, a C expression which determines whether the default
++implementation of va_arg will attempt to pad down before reading the
++next argument, if that argument is smaller than its aligned space as
++controlled by PARM_BOUNDARY. If this macro is not defined, all such
++arguments are padded down if BYTES_BIG_ENDIAN is true.
++*/
++#define PAD_VARARGS_DOWN \
++ (FUNCTION_ARG_PADDING (TYPE_MODE (type), type) == downward)
++
++
++/*
++A C expression that is nonzero if REGNO is the number of a hard
++register in which function arguments are sometimes passed. This does
++not include implicit arguments such as the static chain and
++the structure-value address. On many machines, no registers can be
++used for this purpose since all function arguments are pushed on the
++stack.
++*/
++/*
++ Use r8 - r12 for function arguments.
++*/
++#define FUNCTION_ARG_REGNO_P(REGNO) \
++ (REGNO >= 3 && REGNO <= 7)
++
++/* Number of registers used for passing function arguments */
++#define NUM_ARG_REGS 5
++
++/*
++If defined, the order in which arguments are loaded into their
++respective argument registers is reversed so that the last
++argument is loaded first. This macro only affects arguments
++passed in registers.
++*/
++/* #define LOAD_ARGS_REVERSED */
++
++/** How Scalar Function Values Are Returned **/
++
++/* AVR32 is using r12 as return register. */
++#define RET_REGISTER (15 - 12)
++
++/*
++Define this macro if -traditional should not cause functions
++declared to return float to convert the value to double.
++*/
++/* #define TRADITIONAL_RETURN_FLOAT */
++
++/*
++A C expression to create an RTX representing the place where a
++function returns a value of data type VALTYPE. VALTYPE is
++a tree node representing a data type. Write TYPE_MODE(VALTYPE)
++to get the machine mode used to represent that type.
++On many machines, only the mode is relevant. (Actually, on most
++machines, scalar values are returned in the same place regardless of
++mode).
++
++The value of the expression is usually a reg RTX for the hard
++register where the return value is stored. The value can also be a
++parallel RTX, if the return value is in multiple places. See
++FUNCTION_ARG for an explanation of the parallel form.
++
++If PROMOTE_FUNCTION_RETURN is defined, you must apply the same
++promotion rules specified in PROMOTE_MODE if VALTYPE is a
++scalar type.
++
++If the precise function being called is known, FUNC is a tree
++node (FUNCTION_DECL) for it; otherwise, FUNC is a null
++pointer. This makes it possible to use a different value-returning
++convention for specific functions when all their calls are
++known.
++
++FUNCTION_VALUE is not used for return vales with aggregate data
++types, because these are returned in another way. See
++STRUCT_VALUE_REGNUM and related macros, below.
++*/
++#define FUNCTION_VALUE(VALTYPE, FUNC) avr32_function_value(VALTYPE, FUNC)
++
++
++/*
++A C expression to create an RTX representing the place where a library
++function returns a value of mode MODE. If the precise function
++being called is known, FUNC is a tree node
++(FUNCTION_DECL) for it; otherwise, func is a null
++pointer. This makes it possible to use a different value-returning
++convention for specific functions when all their calls are
++known.
++
++Note that "library function" in this context means a compiler
++support routine, used to perform arithmetic, whose name is known
++specially by the compiler and was not mentioned in the C code being
++compiled.
++
++The definition of LIBRARY_VALUE need not be concerned aggregate
++data types, because none of the library functions returns such types.
++*/
++#define LIBCALL_VALUE(MODE) avr32_libcall_value(MODE)
++
++/*
++A C expression that is nonzero if REGNO is the number of a hard
++register in which the values of called function may come back.
++
++A register whose use for returning values is limited to serving as the
++second of a pair (for a value of type double, say) need not be
++recognized by this macro. So for most machines, this definition
++suffices:
++ #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
++
++If the machine has register windows, so that the caller and the called
++function use different registers for the return value, this macro
++should recognize only the caller's register numbers.
++*/
++/*
++ When returning a value of mode DImode, r11:r10 is used, else r12 is used.
++*/
++#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == RET_REGISTER \
++ || (REGNO) == INTERNAL_REGNUM(11))
++
++
++/** How Large Values Are Returned **/
++
++
++/*
++Define this macro to be 1 if all structure and union return values must be
++in memory. Since this results in slower code, this should be defined
++only if needed for compatibility with other compilers or with an ABI.
++If you define this macro to be 0, then the conventions used for structure
++and union return values are decided by the RETURN_IN_MEMORY macro.
++
++If not defined, this defaults to the value 1.
++*/
++#define DEFAULT_PCC_STRUCT_RETURN 0
++
++
++
++
++/** Generating Code for Profiling **/
++
++/*
++A C statement or compound statement to output to FILE some
++assembler code to call the profiling subroutine mcount.
++
++The details of how mcount expects to be called are determined by
++your operating system environment, not by GCC. To figure them out,
++compile a small program for profiling using the system's installed C
++compiler and look at the assembler code that results.
++
++Older implementations of mcount expect the address of a counter
++variable to be loaded into some register. The name of this variable is
++'LP' followed by the number LABELNO, so you would generate
++the name using 'LP%d' in a fprintf.
++*/
++/* ToDo: fixme */
++#ifndef FUNCTION_PROFILER
++#define FUNCTION_PROFILER(FILE, LABELNO) \
++ fprintf((FILE), "/* profiler %d */", (LABELNO))
++#endif
++
++
++/*****************************************************************************
++ * Trampolines for Nested Functions *
++ *****************************************************************************/
++
++/*
++A C statement to output, on the stream FILE, assembler code for a
++block of data that contains the constant parts of a trampoline. This
++code should not include a label - the label is taken care of
++automatically.
++
++If you do not define this macro, it means no template is needed
++for the target. Do not define this macro on systems where the block move
++code to copy the trampoline into place would be larger than the code
++to generate it on the spot.
++*/
++/* ToDo: correct? */
++#define TRAMPOLINE_TEMPLATE(FILE) avr32_trampoline_template(FILE);
++
++
++/*
++A C expression for the size in bytes of the trampoline, as an integer.
++*/
++/* ToDo: fixme */
++#define TRAMPOLINE_SIZE 0x0C
++
++/*
++Alignment required for trampolines, in bits.
++
++If you don't define this macro, the value of BIGGEST_ALIGNMENT
++is used for aligning trampolines.
++*/
++#define TRAMPOLINE_ALIGNMENT 16
++
++/*
++A C statement to initialize the variable parts of a trampoline.
++ADDR is an RTX for the address of the trampoline; FNADDR is
++an RTX for the address of the nested function; STATIC_CHAIN is an
++RTX for the static chain value that should be passed to the function
++when it is called.
++*/
++#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, STATIC_CHAIN) \
++ avr32_initialize_trampoline(ADDR, FNADDR, STATIC_CHAIN)
++
++
++/******************************************************************************
++ * Implicit Calls to Library Routines
++ *****************************************************************************/
++
++/* Tail calling. */
++
++/* A C expression that evaluates to true if it is ok to perform a sibling
++ call to DECL. */
++#define FUNCTION_OK_FOR_SIBCALL(DECL) 0
++
++#define OVERRIDE_OPTIONS avr32_override_options ()
++
++
++
++/******************************************************************************
++ * Addressing Modes
++ *****************************************************************************/
++
++/*
++A C expression that is nonzero if the machine supports pre-increment,
++pre-decrement, post-increment, or post-decrement addressing respectively.
++*/
++/*
++ AVR32 supports Rp++ and --Rp
++*/
++#define HAVE_PRE_INCREMENT 0
++#define HAVE_PRE_DECREMENT 1
++#define HAVE_POST_INCREMENT 1
++#define HAVE_POST_DECREMENT 0
++
++/*
++A C expression that is nonzero if the machine supports pre- or
++post-address side-effect generation involving constants other than
++the size of the memory operand.
++*/
++#define HAVE_PRE_MODIFY_DISP 0
++#define HAVE_POST_MODIFY_DISP 0
++
++/*
++A C expression that is nonzero if the machine supports pre- or
++post-address side-effect generation involving a register displacement.
++*/
++#define HAVE_PRE_MODIFY_REG 0
++#define HAVE_POST_MODIFY_REG 0
++
++/*
++A C expression that is 1 if the RTX X is a constant which
++is a valid address. On most machines, this can be defined as
++CONSTANT_P (X), but a few machines are more restrictive
++in which constant addresses are supported.
++
++CONSTANT_P accepts integer-values expressions whose values are
++not explicitly known, such as symbol_ref, label_ref, and
++high expressions and const arithmetic expressions, in
++addition to const_int and const_double expressions.
++*/
++#define CONSTANT_ADDRESS_P(X) CONSTANT_P(X)
++
++/*
++A number, the maximum number of registers that can appear in a valid
++memory address. Note that it is up to you to specify a value equal to
++the maximum number that GO_IF_LEGITIMATE_ADDRESS would ever
++accept.
++*/
++#define MAX_REGS_PER_ADDRESS 2
++
++/*
++A C compound statement with a conditional goto LABEL;
++executed if X (an RTX) is a legitimate memory address on the
++target machine for a memory operand of mode MODE.
++
++It usually pays to define several simpler macros to serve as
++subroutines for this one. Otherwise it may be too complicated to
++understand.
++
++This macro must exist in two variants: a strict variant and a
++non-strict one. The strict variant is used in the reload pass. It
++must be defined so that any pseudo-register that has not been
++allocated a hard register is considered a memory reference. In
++contexts where some kind of register is required, a pseudo-register
++with no hard register must be rejected.
++
++The non-strict variant is used in other passes. It must be defined to
++accept all pseudo-registers in every context where some kind of
++register is required.
++
++Compiler source files that want to use the strict variant of this
++macro define the macro REG_OK_STRICT. You should use an
++#ifdef REG_OK_STRICT conditional to define the strict variant
++in that case and the non-strict variant otherwise.
++
++Subroutines to check for acceptable registers for various purposes (one
++for base registers, one for index registers, and so on) are typically
++among the subroutines used to define GO_IF_LEGITIMATE_ADDRESS.
++Then only these subroutine macros need have two variants; the higher
++levels of macros may be the same whether strict or not.
++
++Normally, constant addresses which are the sum of a symbol_ref
++and an integer are stored inside a const RTX to mark them as
++constant. Therefore, there is no need to recognize such sums
++specifically as legitimate addresses. Normally you would simply
++recognize any const as legitimate.
++
++Usually PRINT_OPERAND_ADDRESS is not prepared to handle constant
++sums that are not marked with const. It assumes that a naked
++plus indicates indexing. If so, then you must reject such
++naked constant sums as illegitimate addresses, so that none of them will
++be given to PRINT_OPERAND_ADDRESS.
++
++On some machines, whether a symbolic address is legitimate depends on
++the section that the address refers to. On these machines, define the
++macro ENCODE_SECTION_INFO to store the information into the
++symbol_ref, and then check for it here. When you see a
++const, you will have to look inside it to find the
++symbol_ref in order to determine the section.
++
++The best way to modify the name string is by adding text to the
++beginning, with suitable punctuation to prevent any ambiguity. Allocate
++the new name in saveable_obstack. You will have to modify
++ASM_OUTPUT_LABELREF to remove and decode the added text and
++output the name accordingly, and define STRIP_NAME_ENCODING to
++access the original name string.
++
++You can check the information stored here into the symbol_ref in
++the definitions of the macros GO_IF_LEGITIMATE_ADDRESS and
++PRINT_OPERAND_ADDRESS.
++*/
++#ifdef REG_OK_STRICT
++# define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL) \
++ do \
++ { \
++ if (avr32_legitimate_address(MODE, X, 1)) \
++ goto LABEL; \
++ } \
++ while (0)
++#else
++# define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL) \
++ do \
++ { \
++ if (avr32_legitimate_address(MODE, X, 0)) \
++ goto LABEL; \
++ } \
++ while (0)
++#endif
++
++/*
++A C expression that is nonzero if X (assumed to be a reg
++RTX) is valid for use as a base register. For hard registers, it
++should always accept those which the hardware permits and reject the
++others. Whether the macro accepts or rejects pseudo registers must be
++controlled by REG_OK_STRICT as described above. This usually
++requires two variant definitions, of which REG_OK_STRICT
++controls the one actually used.
++*/
++#ifdef REG_OK_STRICT
++# define REG_OK_FOR_BASE_P(X) \
++ REGNO_OK_FOR_BASE_P(REGNO(X))
++#else
++# define REG_OK_FOR_BASE_P(X) \
++ ((REGNO(X) <= LAST_REGNUM) || (REGNO(X) >= FIRST_PSEUDO_REGISTER))
++#endif
++
++
++/*
++A C expression that is nonzero if X (assumed to be a reg
++RTX) is valid for use as an index register.
++
++The difference between an index register and a base register is that
++the index register may be scaled. If an address involves the sum of
++two registers, neither one of them scaled, then either one may be
++labeled the "base" and the other the "index"; but whichever
++labeling is used must fit the machine's constraints of which registers
++may serve in each capacity. The compiler will try both labelings,
++looking for one that is valid, and will reload one or both registers
++only if neither labeling works.
++*/
++#define REG_OK_FOR_INDEX_P(X) \
++ REG_OK_FOR_BASE_P(X)
++
++
++/*
++A C compound statement that attempts to replace X with a valid
++memory address for an operand of mode MODE. win will be a
++C statement label elsewhere in the code; the macro definition may use
++
++ GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
++
++to avoid further processing if the address has become legitimate.
++
++X will always be the result of a call to break_out_memory_refs,
++and OLDX will be the operand that was given to that function to produce
++X.
++
++The code generated by this macro should not alter the substructure of
++X. If it transforms X into a more legitimate form, it
++should assign X (which will always be a C variable) a new value.
++
++It is not necessary for this macro to come up with a legitimate
++address. The compiler has standard ways of doing so in all cases. In
++fact, it is safe for this macro to do nothing. But often a
++machine-dependent strategy can generate better code.
++*/
++#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) \
++ do \
++ { \
++ if (GET_CODE(X) == PLUS \
++ && GET_CODE(XEXP(X, 0)) == REG \
++ && GET_CODE(XEXP(X, 1)) == CONST_INT \
++ && !CONST_OK_FOR_CONSTRAINT_P(INTVAL(XEXP(X, 1)), \
++ 'K', "Ks16")) \
++ { \
++ rtx index = force_reg(SImode, XEXP(X, 1)); \
++ X = gen_rtx_PLUS( SImode, XEXP(X, 0), index); \
++ } \
++ GO_IF_LEGITIMATE_ADDRESS(MODE, X, WIN); \
++ } \
++ while(0)
++
++
++/*
++A C statement or compound statement with a conditional
++goto LABEL; executed if memory address X (an RTX) can have
++different meanings depending on the machine mode of the memory
++reference it is used for or if the address is valid for some modes
++but not others.
++
++Autoincrement and autodecrement addresses typically have mode-dependent
++effects because the amount of the increment or decrement is the size
++of the operand being addressed. Some machines have other mode-dependent
++addresses. Many RISC machines have no mode-dependent addresses.
++
++You may assume that ADDR is a valid address for the machine.
++*/
++#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) \
++ do \
++ { \
++ if (GET_CODE (ADDR) == POST_INC \
++ || GET_CODE (ADDR) == PRE_DEC) \
++ goto LABEL; \
++ } \
++ while (0)
++
++/*
++A C expression that is nonzero if X is a legitimate constant for
++an immediate operand on the target machine. You can assume that
++X satisfies CONSTANT_P, so you need not check this. In fact,
++'1' is a suitable definition for this macro on machines where
++anything CONSTANT_P is valid.
++*/
++#define LEGITIMATE_CONSTANT_P(X) avr32_legitimate_constant_p(X)
++
++
++/******************************************************************************
++ * Condition Code Status
++ *****************************************************************************/
++
++#define HAVE_conditional_move 1
++
++/*
++C code for a data type which is used for declaring the mdep
++component of cc_status. It defaults to int.
++
++This macro is not used on machines that do not use cc0.
++*/
++
++typedef struct
++{
++ int flags;
++ rtx value;
++ int fpflags;
++ rtx fpvalue;
++} avr32_status_reg;
++
++
++#define CC_STATUS_MDEP avr32_status_reg
++
++/*
++A C expression to initialize the mdep field to "empty".
++The default definition does nothing, since most machines don't use
++the field anyway. If you want to use the field, you should probably
++define this macro to initialize it.
++
++This macro is not used on machines that do not use cc0.
++*/
++
++#define CC_STATUS_MDEP_INIT \
++ (cc_status.mdep.flags = CC_NONE , cc_status.mdep.value = 0)
++
++#define FPCC_STATUS_INIT \
++ (cc_status.mdep.fpflags = CC_NONE , cc_status.mdep.fpvalue = 0)
++
++/*
++A C compound statement to set the components of cc_status
++appropriately for an insn INSN whose body is EXP. It is
++this macro's responsibility to recognize insns that set the condition
++code as a byproduct of other activity as well as those that explicitly
++set (cc0).
++
++This macro is not used on machines that do not use cc0.
++
++If there are insns that do not set the condition code but do alter
++other machine registers, this macro must check to see whether they
++invalidate the expressions that the condition code is recorded as
++reflecting. For example, on the 68000, insns that store in address
++registers do not set the condition code, which means that usually
++NOTICE_UPDATE_CC can leave cc_status unaltered for such
++insns. But suppose that the previous insn set the condition code
++based on location 'a4@@(102)' and the current insn stores a new
++value in 'a4'. Although the condition code is not changed by
++this, it will no longer be true that it reflects the contents of
++'a4@@(102)'. Therefore, NOTICE_UPDATE_CC must alter
++cc_status in this case to say that nothing is known about the
++condition code value.
++
++The definition of NOTICE_UPDATE_CC must be prepared to deal
++with the results of peephole optimization: insns whose patterns are
++parallel RTXs containing various reg, mem or
++constants which are just the operands. The RTL structure of these
++insns is not sufficient to indicate what the insns actually do. What
++NOTICE_UPDATE_CC should do when it sees one is just to run
++CC_STATUS_INIT.
++
++A possible definition of NOTICE_UPDATE_CC is to call a function
++that looks at an attribute (see Insn Attributes) named, for example,
++'cc'. This avoids having detailed information about patterns in
++two places, the 'md' file and in NOTICE_UPDATE_CC.
++*/
++
++#define NOTICE_UPDATE_CC(EXP, INSN) avr32_notice_update_cc(EXP, INSN)
++
++
++
++
++/******************************************************************************
++ * Describing Relative Costs of Operations
++ *****************************************************************************/
++
++
++
++/*
++A C expression for the cost of moving data of mode MODE from a
++register in class FROM to one in class TO. The classes are
++expressed using the enumeration values such as GENERAL_REGS. A
++value of 2 is the default; other values are interpreted relative to
++that.
++
++It is not required that the cost always equal 2 when FROM is the
++same as TO; on some machines it is expensive to move between
++registers if they are not general registers.
++
++If reload sees an insn consisting of a single set between two
++hard registers, and if REGISTER_MOVE_COST applied to their
++classes returns a value of 2, reload does not check to ensure that the
++constraints of the insn are met. Setting a cost of other than 2 will
++allow reload to verify that the constraints are met. You should do this
++if the movm pattern's constraints do not allow such copying.
++*/
++#define REGISTER_MOVE_COST(MODE, FROM, TO) \
++ ((GET_MODE_SIZE(MODE) <= 4) ? 2: \
++ (GET_MODE_SIZE(MODE) <= 8) ? 3: \
++ 4)
++
++/*
++A C expression for the cost of moving data of mode MODE between a
++register of class CLASS and memory; IN is zero if the value
++is to be written to memory, nonzero if it is to be read in. This cost
++is relative to those in REGISTER_MOVE_COST. If moving between
++registers and memory is more expensive than between two registers, you
++should define this macro to express the relative cost.
++
++If you do not define this macro, GCC uses a default cost of 4 plus
++the cost of copying via a secondary reload register, if one is
++needed. If your machine requires a secondary reload register to copy
++between memory and a register of CLASS but the reload mechanism is
++more complex than copying via an intermediate, define this macro to
++reflect the actual cost of the move.
++
++GCC defines the function memory_move_secondary_cost if
++secondary reloads are needed. It computes the costs due to copying via
++a secondary register. If your machine copies from memory using a
++secondary register in the conventional way but the default base value of
++4 is not correct for your machine, define this macro to add some other
++value to the result of that function. The arguments to that function
++are the same as to this macro.
++*/
++/*
++ Memory moves are costly
++*/
++#define MEMORY_MOVE_COST(MODE, CLASS, IN) 10
++/*
++ (((IN) ? ((GET_MODE_SIZE(MODE) < 4) ? 4 : \
++ (GET_MODE_SIZE(MODE) > 8) ? 6 : \
++ 3) \
++ : ((GET_MODE_SIZE(MODE) > 8) ? 4 : 2)))
++*/
++
++/*
++A C expression for the cost of a branch instruction. A value of 1 is
++the default; other values are interpreted relative to that.
++*/
++ /* Try to use conditionals as much as possible */
++#define BRANCH_COST (TARGET_BRANCH_PRED ? 3 : 5)
++
++/*A C expression for the maximum number of instructions to execute via conditional
++ execution instructions instead of a branch. A value of BRANCH_COST+1 is the default
++ if the machine does not use cc0, and 1 if it does use cc0.*/
++#define MAX_CONDITIONAL_EXECUTE 3
++
++/*
++Define this macro as a C expression which is nonzero if accessing less
++than a word of memory (i.e.: a char or a short) is no
++faster than accessing a word of memory, i.e., if such access
++require more than one instruction or if there is no difference in cost
++between byte and (aligned) word loads.
++
++When this macro is not defined, the compiler will access a field by
++finding the smallest containing object; when it is defined, a fullword
++load will be used if alignment permits. Unless bytes accesses are
++faster than word accesses, using word accesses is preferable since it
++may eliminate subsequent memory access if subsequent accesses occur to
++other fields in the same word of the structure, but to different bytes.
++*/
++#define SLOW_BYTE_ACCESS 1
++
++
++/*
++Define this macro if it is as good or better to call a constant
++function address than to call an address kept in a register.
++*/
++#define NO_FUNCTION_CSE
++
++
++/******************************************************************************
++ * Adjusting the Instruction Scheduler
++ *****************************************************************************/
++
++/*****************************************************************************
++ * Dividing the Output into Sections (Texts, Data, ...) *
++ *****************************************************************************/
++
++/*
++A C expression whose value is a string, including spacing, containing the
++assembler operation that should precede instructions and read-only data.
++Normally "\t.text" is right.
++*/
++#define TEXT_SECTION_ASM_OP "\t.text"
++/*
++A C statement that switches to the default section containing instructions.
++Normally this is not needed, as simply defining TEXT_SECTION_ASM_OP
++is enough. The MIPS port uses this to sort all functions after all data
++declarations.
++*/
++/* #define TEXT_SECTION */
++
++/*
++A C expression whose value is a string, including spacing, containing the
++assembler operation to identify the following data as writable initialized
++data. Normally "\t.data" is right.
++*/
++#define DATA_SECTION_ASM_OP "\t.data"
++
++/*
++If defined, a C expression whose value is a string, including spacing,
++containing the assembler operation to identify the following data as
++shared data. If not defined, DATA_SECTION_ASM_OP will be used.
++*/
++
++/*
++A C expression whose value is a string, including spacing, containing
++the assembler operation to identify the following data as read-only
++initialized data.
++*/
++#undef READONLY_DATA_SECTION_ASM_OP
++#define READONLY_DATA_SECTION_ASM_OP \
++ ((target_flags & USE_RODATA_SECTION) ? \
++ "\t.section\t.rodata" : \
++ TEXT_SECTION_ASM_OP )
++
++
++/*
++If defined, a C expression whose value is a string, including spacing,
++containing the assembler operation to identify the following data as
++uninitialized global data. If not defined, and neither
++ASM_OUTPUT_BSS nor ASM_OUTPUT_ALIGNED_BSS are defined,
++uninitialized global data will be output in the data section if
++-fno-common is passed, otherwise ASM_OUTPUT_COMMON will be
++used.
++*/
++#define BSS_SECTION_ASM_OP "\t.section\t.bss"
++
++/*
++If defined, a C expression whose value is a string, including spacing,
++containing the assembler operation to identify the following data as
++uninitialized global shared data. If not defined, and
++BSS_SECTION_ASM_OP is, the latter will be used.
++*/
++/*#define SHARED_BSS_SECTION_ASM_OP "\trseg\tshared_bbs_section:data:noroot(0)\n"*/
++/*
++If defined, a C expression whose value is a string, including spacing,
++containing the assembler operation to identify the following data as
++initialization code. If not defined, GCC will assume such a section does
++not exist.
++*/
++#undef INIT_SECTION_ASM_OP
++#define INIT_SECTION_ASM_OP "\t.section\t.init"
++
++/*
++If defined, a C expression whose value is a string, including spacing,
++containing the assembler operation to identify the following data as
++finalization code. If not defined, GCC will assume such a section does
++not exist.
++*/
++#undef FINI_SECTION_ASM_OP
++#define FINI_SECTION_ASM_OP "\t.section\t.fini"
++
++/*
++If defined, an ASM statement that switches to a different section
++via SECTION_OP, calls FUNCTION, and switches back to
++the text section. This is used in crtstuff.c if
++INIT_SECTION_ASM_OP or FINI_SECTION_ASM_OP to calls
++to initialization and finalization functions from the init and fini
++sections. By default, this macro uses a simple function call. Some
++ports need hand-crafted assembly code to avoid dependencies on
++registers initialized in the function prologue or to ensure that
++constant pools don't end up too far way in the text section.
++*/
++#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
++ asm ( SECTION_OP "\n" \
++ "mcall r6[" USER_LABEL_PREFIX #FUNC "@got]\n" \
++ TEXT_SECTION_ASM_OP);
++
++
++/*
++Define this macro to be an expression with a nonzero value if jump
++tables (for tablejump insns) should be output in the text
++section, along with the assembler instructions. Otherwise, the
++readonly data section is used.
++
++This macro is irrelevant if there is no separate readonly data section.
++*/
++#define JUMP_TABLES_IN_TEXT_SECTION 1
++
++
++/******************************************************************************
++ * Position Independent Code (PIC)
++ *****************************************************************************/
++
++#ifndef AVR32_ALWAYS_PIC
++#define AVR32_ALWAYS_PIC 0
++#endif
++
++/* GOT is set to r6 */
++#define PIC_OFFSET_TABLE_REGNUM INTERNAL_REGNUM(6)
++
++/*
++A C expression that is nonzero if X is a legitimate immediate
++operand on the target machine when generating position independent code.
++You can assume that X satisfies CONSTANT_P, so you need not
++check this. You can also assume flag_pic is true, so you need not
++check it either. You need not define this macro if all constants
++(including SYMBOL_REF) can be immediate operands when generating
++position independent code.
++*/
++/* We can't directly access anything that contains a symbol,
++ nor can we indirect via the constant pool. */
++#define LEGITIMATE_PIC_OPERAND_P(X) avr32_legitimate_pic_operand_p(X)
++
++
++/* We need to know when we are making a constant pool; this determines
++ whether data needs to be in the GOT or can be referenced via a GOT
++ offset. */
++extern int making_const_table;
++
++/******************************************************************************
++ * Defining the Output Assembler Language
++ *****************************************************************************/
++
++
++/*
++A C string constant describing how to begin a comment in the target
++assembler language. The compiler assumes that the comment will end at
++the end of the line.
++*/
++#define ASM_COMMENT_START "# "
++
++/*
++A C string constant for text to be output before each asm
++statement or group of consecutive ones. Normally this is
++"#APP", which is a comment that has no effect on most
++assemblers but tells the GNU assembler that it must check the lines
++that follow for all valid assembler constructs.
++*/
++#undef ASM_APP_ON
++#define ASM_APP_ON "#APP\n"
++
++/*
++A C string constant for text to be output after each asm
++statement or group of consecutive ones. Normally this is
++"#NO_APP", which tells the GNU assembler to resume making the
++time-saving assumptions that are valid for ordinary compiler output.
++*/
++#undef ASM_APP_OFF
++#define ASM_APP_OFF "#NO_APP\n"
++
++
++
++#define FILE_ASM_OP "\t.file\n"
++#define IDENT_ASM_OP "\t.ident\t"
++#define SET_ASM_OP "\t.set\t"
++
++
++/*
++ * Output assembly directives to switch to section name. The section
++ * should have attributes as specified by flags, which is a bit mask
++ * of the SECTION_* flags defined in 'output.h'. If align is nonzero,
++ * it contains an alignment in bytes to be used for the section,
++ * otherwise some target default should be used. Only targets that
++ * must specify an alignment within the section directive need pay
++ * attention to align -- we will still use ASM_OUTPUT_ALIGN.
++ *
++ * NOTE: This one must not be moved to avr32.c
++ */
++#undef TARGET_ASM_NAMED_SECTION
++#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
++
++
++/*
++You may define this macro as a C expression. You should define the
++expression to have a nonzero value if GCC should output the constant
++pool for a function before the code for the function, or a zero value if
++GCC should output the constant pool after the function. If you do
++not define this macro, the usual case, GCC will output the constant
++pool before the function.
++*/
++#define CONSTANT_POOL_BEFORE_FUNCTION 0
++
++
++/*
++Define this macro as a C expression which is nonzero if the constant
++EXP, of type tree, should be output after the code for a
++function. The compiler will normally output all constants before the
++function; you need not define this macro if this is OK.
++*/
++#define CONSTANT_AFTER_FUNCTION_P(EXP) 1
++
++
++/*
++Define this macro as a C expression which is nonzero if C is
++used as a logical line separator by the assembler.
++
++If you do not define this macro, the default is that only
++the character ';' is treated as a logical line separator.
++*/
++#define IS_ASM_LOGICAL_LINE_SEPARATOR(C) ((C) == '\n')
++
++
++/** Output of Uninitialized Variables **/
++
++/*
++A C statement (sans semicolon) to output to the stdio stream
++STREAM the assembler definition of a common-label named
++NAME whose size is SIZE bytes. The variable ROUNDED
++is the size rounded up to whatever alignment the caller wants.
++
++Use the expression assemble_name(STREAM, NAME) to
++output the name itself; before and after that, output the additional
++assembler syntax for defining the name, and a newline.
++
++This macro controls how the assembler definitions of uninitialized
++common global variables are output.
++*/
++/*
++#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
++ avr32_asm_output_common(STREAM, NAME, SIZE, ROUNDED)
++*/
++
++#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
++ do \
++ { \
++ fputs ("\t.comm ", (FILE)); \
++ assemble_name ((FILE), (NAME)); \
++ fprintf ((FILE), ",%d\n", (SIZE)); \
++ } \
++ while (0)
++
++/*
++ * Like ASM_OUTPUT_BSS except takes the required alignment as a
++ * separate, explicit argument. If you define this macro, it is used
++ * in place of ASM_OUTPUT_BSS, and gives you more flexibility in
++ * handling the required alignment of the variable. The alignment is
++ * specified as the number of bits.
++ *
++ * Try to use function asm_output_aligned_bss defined in file varasm.c
++ * when defining this macro.
++ */
++#define ASM_OUTPUT_ALIGNED_BSS(STREAM, DECL, NAME, SIZE, ALIGNMENT) \
++ asm_output_aligned_bss (STREAM, DECL, NAME, SIZE, ALIGNMENT)
++
++/*
++A C statement (sans semicolon) to output to the stdio stream
++STREAM the assembler definition of a local-common-label named
++NAME whose size is SIZE bytes. The variable ROUNDED
++is the size rounded up to whatever alignment the caller wants.
++
++Use the expression assemble_name(STREAM, NAME) to
++output the name itself; before and after that, output the additional
++assembler syntax for defining the name, and a newline.
++
++This macro controls how the assembler definitions of uninitialized
++static variables are output.
++*/
++#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
++ do \
++ { \
++ fputs ("\t.lcomm ", (FILE)); \
++ assemble_name ((FILE), (NAME)); \
++ fprintf ((FILE), ",%d, %d\n", (SIZE), 2); \
++ } \
++ while (0)
++
++
++/*
++A C statement (sans semicolon) to output to the stdio stream
++STREAM the assembler definition of a label named NAME.
++Use the expression assemble_name(STREAM, NAME) to
++output the name itself; before and after that, output the additional
++assembler syntax for defining the name, and a newline.
++*/
++#define ASM_OUTPUT_LABEL(STREAM, NAME) avr32_asm_output_label(STREAM, NAME)
++
++/* A C string containing the appropriate assembler directive to
++ * specify the size of a symbol, without any arguments. On systems
++ * that use ELF, the default (in 'config/elfos.h') is '"\t.size\t"';
++ * on other systems, the default is not to define this macro.
++ *
++ * Define this macro only if it is correct to use the default
++ * definitions of ASM_ OUTPUT_SIZE_DIRECTIVE and
++ * ASM_OUTPUT_MEASURED_SIZE for your system. If you need your own
++ * custom definitions of those macros, or if you do not need explicit
++ * symbol sizes at all, do not define this macro.
++ */
++#define SIZE_ASM_OP "\t.size\t"
++
++
++/*
++A C statement (sans semicolon) to output to the stdio stream
++STREAM some commands that will make the label NAME global;
++that is, available for reference from other files. Use the expression
++assemble_name(STREAM, NAME) to output the name
++itself; before and after that, output the additional assembler syntax
++for making that name global, and a newline.
++*/
++#define GLOBAL_ASM_OP "\t.globl\t"
++
++
++
++/*
++A C expression which evaluates to true if the target supports weak symbols.
++
++If you don't define this macro, defaults.h provides a default
++definition. If either ASM_WEAKEN_LABEL or ASM_WEAKEN_DECL
++is defined, the default definition is '1'; otherwise, it is
++'0'. Define this macro if you want to control weak symbol support
++with a compiler flag such as -melf.
++*/
++#define SUPPORTS_WEAK 1
++
++/*
++A C statement (sans semicolon) to output to the stdio stream
++STREAM a reference in assembler syntax to a label named
++NAME. This should add '_' to the front of the name, if that
++is customary on your operating system, as it is in most Berkeley Unix
++systems. This macro is used in assemble_name.
++*/
++#define ASM_OUTPUT_LABELREF(STREAM, NAME) \
++ avr32_asm_output_labelref(STREAM, NAME)
++
++
++
++/*
++A C expression to assign to OUTVAR (which is a variable of type
++char *) a newly allocated string made from the string
++NAME and the number NUMBER, with some suitable punctuation
++added. Use alloca to get space for the string.
++
++The string will be used as an argument to ASM_OUTPUT_LABELREF to
++produce an assembler label for an internal static variable whose name is
++NAME. Therefore, the string must be such as to result in valid
++assembler code. The argument NUMBER is different each time this
++macro is executed; it prevents conflicts between similarly-named
++internal static variables in different scopes.
++
++Ideally this string should not be a valid C identifier, to prevent any
++conflict with the user's own symbols. Most assemblers allow periods
++or percent signs in assembler symbols; putting at least one of these
++between the name and the number will suffice.
++*/
++#define ASM_FORMAT_PRIVATE_NAME(OUTVAR, NAME, NUMBER) \
++ do \
++ { \
++ (OUTVAR) = (char *) alloca (strlen ((NAME)) + 10); \
++ sprintf ((OUTVAR), "%s.%d", (NAME), (NUMBER)); \
++ } \
++ while (0)
++
++
++/** Macros Controlling Initialization Routines **/
++
++
++/*
++If defined, main will not call __main as described above.
++This macro should be defined for systems that control start-up code
++on a symbol-by-symbol basis, such as OSF/1, and should not
++be defined explicitly for systems that support INIT_SECTION_ASM_OP.
++*/
++/*
++ __main is not defined when debugging.
++*/
++#define HAS_INIT_SECTION
++
++
++/** Output of Assembler Instructions **/
++
++/*
++A C initializer containing the assembler's names for the machine
++registers, each one as a C string constant. This is what translates
++register numbers in the compiler into assembler language.
++*/
++
++#define REGISTER_NAMES \
++{ \
++ "pc", "lr", \
++ "sp", "r12", \
++ "r11", "r10", \
++ "r9", "r8", \
++ "r7", "r6", \
++ "r5", "r4", \
++ "r3", "r2", \
++ "r1", "r0", \
++ "f15","f14", \
++ "f13","f12", \
++ "f11","f10", \
++ "f9", "f8", \
++ "f7", "f6", \
++ "f5", "f4", \
++ "f3", "f2", \
++ "f1", "f0" \
++}
++
++/*
++A C compound statement to output to stdio stream STREAM the
++assembler syntax for an instruction operand X. X is an
++RTL expression.
++
++CODE is a value that can be used to specify one of several ways
++of printing the operand. It is used when identical operands must be
++printed differently depending on the context. CODE comes from
++the '%' specification that was used to request printing of the
++operand. If the specification was just '%digit' then
++CODE is 0; if the specification was '%ltr digit'
++then CODE is the ASCII code for ltr.
++
++If X is a register, this macro should print the register's name.
++The names can be found in an array reg_names whose type is
++char *[]. reg_names is initialized from REGISTER_NAMES.
++
++When the machine description has a specification '%punct'
++(a '%' followed by a punctuation character), this macro is called
++with a null pointer for X and the punctuation character for
++CODE.
++*/
++#define PRINT_OPERAND(STREAM, X, CODE) avr32_print_operand(STREAM, X, CODE)
++
++/* A C statement to be executed just prior to the output of
++ assembler code for INSN, to modify the extracted operands so
++ they will be output differently.
++
++ Here the argument OPVEC is the vector containing the operands
++ extracted from INSN, and NOPERANDS is the number of elements of
++ the vector which contain meaningful data for this insn.
++ The contents of this vector are what will be used to convert the insn
++ template into assembler code, so you can change the assembler output
++ by changing the contents of the vector. */
++#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
++ avr32_final_prescan_insn ((INSN), (OPVEC), (NOPERANDS))
++
++/*
++A C expression which evaluates to true if CODE is a valid
++punctuation character for use in the PRINT_OPERAND macro. If
++PRINT_OPERAND_PUNCT_VALID_P is not defined, it means that no
++punctuation characters (except for the standard one, '%') are used
++in this way.
++*/
++/*
++ 'm' refers to the most significant word in a two-register mode.
++*/
++#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == 'm' || (CODE) == 'e')
++
++/*
++A C compound statement to output to stdio stream STREAM the
++assembler syntax for an instruction operand that is a memory reference
++whose address is X. X is an RTL expression.
++
++On some machines, the syntax for a symbolic address depends on the
++section that the address refers to. On these machines, define the macro
++ENCODE_SECTION_INFO to store the information into the
++symbol_ref, and then check for it here. (see Assembler Format.)
++*/
++#define PRINT_OPERAND_ADDRESS(STREAM, X) avr32_print_operand_address(STREAM, X)
++
++
++/** Output of Dispatch Tables **/
++
++/*
++ * A C statement to output to the stdio stream stream an assembler
++ * pseudo-instruction to generate a difference between two
++ * labels. value and rel are the numbers of two internal labels. The
++ * definitions of these labels are output using
++ * (*targetm.asm_out.internal_label), and they must be printed in the
++ * same way here. For example,
++ *
++ * fprintf (stream, "\t.word L%d-L%d\n",
++ * value, rel)
++ *
++ * You must provide this macro on machines where the addresses in a
++ * dispatch table are relative to the table's own address. If defined,
++ * GCC will also use this macro on all machines when producing
++ * PIC. body is the body of the ADDR_DIFF_VEC; it is provided so that
++ * the mode and flags can be read.
++ */
++#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \
++ fprintf(STREAM, "\tbral\t%sL%d\n", LOCAL_LABEL_PREFIX, VALUE)
++
++/*
++This macro should be provided on machines where the addresses
++in a dispatch table are absolute.
++
++The definition should be a C statement to output to the stdio stream
++STREAM an assembler pseudo-instruction to generate a reference to
++a label. VALUE is the number of an internal label whose
++definition is output using ASM_OUTPUT_INTERNAL_LABEL.
++For example,
++
++fprintf(STREAM, "\t.word L%d\n", VALUE)
++*/
++
++#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \
++ fprintf(STREAM, "\t.long %sL%d\n", LOCAL_LABEL_PREFIX, VALUE)
++
++/** Assembler Commands for Exception Regions */
++
++/* ToDo: All of this subsection */
++
++/** Assembler Commands for Alignment */
++
++
++/*
++A C statement to output to the stdio stream STREAM an assembler
++command to advance the location counter to a multiple of 2 to the
++POWER bytes. POWER will be a C expression of type int.
++*/
++#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
++ do \
++ { \
++ if ((POWER) != 0) \
++ fprintf(STREAM, "\t.align\t%d\n", POWER); \
++ } \
++ while (0)
++
++/*
++Like ASM_OUTPUT_ALIGN, except that the \nop" instruction is used for padding, if
++necessary.
++*/
++#define ASM_OUTPUT_ALIGN_WITH_NOP(STREAM, POWER) \
++ fprintf(STREAM, "\t.balignw\t%d, 0xd703\n", (1 << POWER))
++
++
++
++/******************************************************************************
++ * Controlling Debugging Information Format
++ *****************************************************************************/
++
++/* How to renumber registers for dbx and gdb. */
++#define DBX_REGISTER_NUMBER(REGNO) ASM_REGNUM (REGNO)
++
++/* The DWARF 2 CFA column which tracks the return address. */
++#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM(LR_REGNUM)
++
++/*
++Define this macro if GCC should produce dwarf version 2 format
++debugging output in response to the -g option.
++
++To support optional call frame debugging information, you must also
++define INCOMING_RETURN_ADDR_RTX and either set
++RTX_FRAME_RELATED_P on the prologue insns if you use RTL for the
++prologue, or call dwarf2out_def_cfa and dwarf2out_reg_save
++as appropriate from TARGET_ASM_FUNCTION_PROLOGUE if you don't.
++*/
++#define DWARF2_DEBUGGING_INFO 1
++
++
++#define DWARF2_ASM_LINE_DEBUG_INFO 1
++#define DWARF2_FRAME_INFO 1
++
++
++/******************************************************************************
++ * Miscellaneous Parameters
++ *****************************************************************************/
++
++/* ToDo: a lot */
++
++/*
++An alias for a machine mode name. This is the machine mode that
++elements of a jump-table should have.
++*/
++#define CASE_VECTOR_MODE SImode
++
++/*
++Define this macro to be a C expression to indicate when jump-tables
++should contain relative addresses. If jump-tables never contain
++relative addresses, then you need not define this macro.
++*/
++#define CASE_VECTOR_PC_RELATIVE 0
++
++/*
++The maximum number of bytes that a single instruction can move quickly
++between memory and registers or between two memory locations.
++*/
++#define MOVE_MAX (2*UNITS_PER_WORD)
++
++
++/* A C expression that is nonzero if on this machine the number of bits actually used
++ for the count of a shift operation is equal to the number of bits needed to represent
++ the size of the object being shifted. When this macro is nonzero, the compiler will
++ assume that it is safe to omit a sign-extend, zero-extend, and certain bitwise 'and'
++ instructions that truncates the count of a shift operation. On machines that have
++ instructions that act on bit-fields at variable positions, which may include 'bit test'
++ 378 GNU Compiler Collection (GCC) Internals
++ instructions, a nonzero SHIFT_COUNT_TRUNCATED also enables deletion of truncations
++ of the values that serve as arguments to bit-field instructions.
++ If both types of instructions truncate the count (for shifts) and position (for bit-field
++ operations), or if no variable-position bit-field instructions exist, you should define
++ this macro.
++ However, on some machines, such as the 80386 and the 680x0, truncation only applies
++ to shift operations and not the (real or pretended) bit-field operations. Define SHIFT_
++ COUNT_TRUNCATED to be zero on such machines. Instead, add patterns to the 'md' file
++ that include the implied truncation of the shift instructions.
++ You need not de ne this macro if it would always have the value of zero. */
++#define SHIFT_COUNT_TRUNCATED 1
++
++/*
++A C expression which is nonzero if on this machine it is safe to
++convert an integer of INPREC bits to one of OUTPREC
++bits (where OUTPREC is smaller than INPREC) by merely
++operating on it as if it had only OUTPREC bits.
++
++On many machines, this expression can be 1.
++
++When TRULY_NOOP_TRUNCATION returns 1 for a pair of sizes for
++modes for which MODES_TIEABLE_P is 0, suboptimal code can result.
++If this is the case, making TRULY_NOOP_TRUNCATION return 0 in
++such cases may improve things.
++*/
++#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
++
++/*
++An alias for the machine mode for pointers. On most machines, define
++this to be the integer mode corresponding to the width of a hardware
++pointer; SImode on 32-bit machine or DImode on 64-bit machines.
++On some machines you must define this to be one of the partial integer
++modes, such as PSImode.
++
++The width of Pmode must be at least as large as the value of
++POINTER_SIZE. If it is not equal, you must define the macro
++POINTERS_EXTEND_UNSIGNED to specify how pointers are extended
++to Pmode.
++*/
++#define Pmode SImode
++
++/*
++An alias for the machine mode used for memory references to functions
++being called, in call RTL expressions. On most machines this
++should be QImode.
++*/
++#define FUNCTION_MODE SImode
++
++
++#define REG_S_P(x) \
++ (REG_P (x) || (GET_CODE (x) == SUBREG && REG_P (XEXP (x, 0))))
++
++
++/* If defined, modifies the length assigned to instruction INSN as a
++ function of the context in which it is used. LENGTH is an lvalue
++ that contains the initially computed length of the insn and should
++ be updated with the correct length of the insn. */
++#define ADJUST_INSN_LENGTH(INSN, LENGTH) \
++ ((LENGTH) = avr32_adjust_insn_length ((INSN), (LENGTH)))
++
++
++#define CLZ_DEFINED_VALUE_AT_ZERO(mode, value) \
++ (value = 32, (mode == SImode))
++
++#define CTZ_DEFINED_VALUE_AT_ZERO(mode, value) \
++ (value = 32, (mode == SImode))
++
++#define UNITS_PER_SIMD_WORD UNITS_PER_WORD
++
++#define STORE_FLAG_VALUE 1
++
++enum avr32_builtins
++{
++ AVR32_BUILTIN_MTSR,
++ AVR32_BUILTIN_MFSR,
++ AVR32_BUILTIN_MTDR,
++ AVR32_BUILTIN_MFDR,
++ AVR32_BUILTIN_CACHE,
++ AVR32_BUILTIN_SYNC,
++ AVR32_BUILTIN_TLBR,
++ AVR32_BUILTIN_TLBS,
++ AVR32_BUILTIN_TLBW,
++ AVR32_BUILTIN_BREAKPOINT,
++ AVR32_BUILTIN_XCHG,
++ AVR32_BUILTIN_LDXI,
++ AVR32_BUILTIN_BSWAP16,
++ AVR32_BUILTIN_BSWAP32,
++ AVR32_BUILTIN_COP,
++ AVR32_BUILTIN_MVCR_W,
++ AVR32_BUILTIN_MVRC_W,
++ AVR32_BUILTIN_MVCR_D,
++ AVR32_BUILTIN_MVRC_D,
++ AVR32_BUILTIN_MULSATHH_H,
++ AVR32_BUILTIN_MULSATHH_W,
++ AVR32_BUILTIN_MULSATRNDHH_H,
++ AVR32_BUILTIN_MULSATRNDWH_W,
++ AVR32_BUILTIN_MULSATWH_W,
++ AVR32_BUILTIN_MACSATHH_W,
++ AVR32_BUILTIN_SATADD_H,
++ AVR32_BUILTIN_SATSUB_H,
++ AVR32_BUILTIN_SATADD_W,
++ AVR32_BUILTIN_SATSUB_W,
++ AVR32_BUILTIN_MULWH_D,
++ AVR32_BUILTIN_MULNWH_D,
++ AVR32_BUILTIN_MACWH_D,
++ AVR32_BUILTIN_MACHH_D,
++ AVR32_BUILTIN_MUSFR,
++ AVR32_BUILTIN_MUSTR,
++ AVR32_BUILTIN_SATS,
++ AVR32_BUILTIN_SATU,
++ AVR32_BUILTIN_SATRNDS,
++ AVR32_BUILTIN_SATRNDU
++};
++
++
++#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) \
++ ((MODE == SFmode) || (MODE == DFmode))
++
++#define RENAME_LIBRARY_SET ".set"
++
++/* Make ABI_NAME an alias for __GCC_NAME. */
++#define RENAME_LIBRARY(GCC_NAME, ABI_NAME) \
++ __asm__ (".globl\t__avr32_" #ABI_NAME "\n" \
++ ".set\t__avr32_" #ABI_NAME \
++ ", __" #GCC_NAME "\n");
++
++/* Give libgcc functions avr32 ABI name. */
++#ifdef L_muldi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, mul64)
++#endif
++#ifdef L_divdi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, sdiv64)
++#endif
++#ifdef L_udivdi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, udiv64)
++#endif
++#ifdef L_moddi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, smod64)
++#endif
++#ifdef L_umoddi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, umod64)
++#endif
++#ifdef L_ashldi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, lsl64)
++#endif
++#ifdef L_lshrdi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, lsr64)
++#endif
++#ifdef L_ashrdi3
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, asr64)
++#endif
++
++#ifdef L_fixsfdi
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f32_to_s64)
++#endif
++#ifdef L_fixunssfdi
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f32_to_u64)
++#endif
++#ifdef L_floatdidf
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, s64_to_f64)
++#endif
++#ifdef L_floatdisf
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, s64_to_f32)
++#endif
++
++#ifdef L_addsub_sf
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (addsf3, f32_add); RENAME_LIBRARY (subsf3, f32_sub)
++#endif
++
++#endif
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32.md gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.md
+--- gcc-4.0.2/gcc/config/avr32/avr32.md 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32.md 2006-11-09 15:04:35.000000000 +0100
+@@ -0,0 +1,4694 @@
++;; AVR32 machine description file.
++;; Copyright 2003-2006 Atmel Corporation.
++;;
++;; Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++;;
++;; This file is part of GCC.
++;;
++;; This program is free software; you can redistribute it and/or modify
++;; it under the terms of the GNU General Public License as published by
++;; the Free Software Foundation; either version 2 of the License, or
++;; (at your option) any later version.
++;;
++;; This program is distributed in the hope that it will be useful,
++;; but WITHOUT ANY WARRANTY; without even the implied warranty of
++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++;; GNU General Public License for more details.
++;;
++;; You should have received a copy of the GNU General Public License
++;; along with this program; if not, write to the Free Software
++;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++;; -*- Mode: Scheme -*-
++
++(define_attr "type" "alu,alu2,alu_sat,mulhh,mulwh,mulww_w,mulww_d,div,machh_w,macww_w,macww_d,branch,call,load,load_rm,store,load2,load4,store2,store4,fmul,fcmps,fcmpd,fcast,fmv,fmvcpu,fldd,fstd,flds,fsts,fstm"
++ (const_string "alu"))
++
++
++(define_attr "cc" "none,set_vncz,set_ncz,set_cz,set_z,bld,compare,clobber,call_set,fpcompare,from_fpcc"
++ (const_string "none"))
++
++
++(define_attr "pipeline" "ap,uc"
++ (const_string "ap"))
++
++(define_attr "length" ""
++ (const_int 4))
++
++
++;; Uses of UNSPEC in this file:
++(define_constants
++ [(UNSPEC_PUSHM 0)
++ (UNSPEC_POPM 1)
++ (UNSPEC_UDIVMODSI4_INTERNAL 2)
++ (UNSPEC_DIVMODSI4_INTERNAL 3)
++ (UNSPEC_STM 4)
++ (UNSPEC_LDM 5)
++ (UNSPEC_MOVSICC 6)
++ (UNSPEC_ADDSICC 7)
++ (UNSPEC_COND_MI 8)
++ (UNSPEC_COND_PL 9)
++ (UNSPEC_PIC_SYM 10)
++ (UNSPEC_PIC_BASE 11)
++ (UNSPEC_STORE_MULTIPLE 12)
++ (UNSPEC_STMFP 13)
++ (UNSPEC_FPCC_TO_REG 14)
++ (UNSPEC_REG_TO_CC 15)
++ (UNSPEC_FORCE_MINIPOOL 16)
++ (UNSPEC_SATS 17)
++ (UNSPEC_SATU 18)
++ (UNSPEC_SATRNDS 19)
++ (UNSPEC_SATRNDU 20)
++ ])
++
++(define_constants
++ [(VUNSPEC_EPILOGUE 0)
++ (VUNSPEC_CACHE 1)
++ (VUNSPEC_MTSR 2)
++ (VUNSPEC_MFSR 3)
++ (VUNSPEC_BLOCKAGE 4)
++ (VUNSPEC_SYNC 5)
++ (VUNSPEC_TLBR 6)
++ (VUNSPEC_TLBW 7)
++ (VUNSPEC_TLBS 8)
++ (VUNSPEC_BREAKPOINT 9)
++ (VUNSPEC_MTDR 10)
++ (VUNSPEC_MFDR 11)
++ (VUNSPEC_MVCR 12)
++ (VUNSPEC_MVRC 13)
++ (VUNSPEC_COP 14)
++ (VUNSPEC_ALIGN 15)
++ (VUNSPEC_POOL_START 16)
++ (VUNSPEC_POOL_END 17)
++ (VUNSPEC_POOL_4 18)
++ (VUNSPEC_POOL_8 19)
++ (VUNSPEC_MUSFR 20)
++ (VUNSPEC_MUSTR 21)
++ ])
++
++(define_constants
++ [
++ ;; R7 = 15-7 = 8
++ (FP_REGNUM 8)
++ ;; Return Register = R12 = 15 - 12 = 3
++ (RETVAL_REGNUM 3)
++ ;; SP = R13 = 15 - 13 = 2
++ (SP_REGNUM 2)
++ ;; LR = R14 = 15 - 14 = 1
++ (LR_REGNUM 1)
++ ;; PC = R15 = 15 - 15 = 0
++ (PC_REGNUM 0)
++ ;; FPSR = GENERAL_REGS + 1 = 17
++ (FPCC_REGNUM 17)
++ ])
++
++
++
++
++;;******************************************************************************
++;; Macros
++;;******************************************************************************
++
++;; Integer Modes for basic alu insns
++(define_mode_macro INTM [SI HI QI])
++(define_mode_attr alu_cc_attr [(SI "set_vncz") (HI "clobber") (QI "clobber")])
++
++;; Move word modes
++(define_mode_macro MOVM [SI V2HI V4QI])
++
++;; For mov/addcc insns
++(define_mode_macro ADDCC [SI HI QI])
++(define_mode_macro MOVCC [SI HI QI])
++(define_mode_macro CMP [DI SI HI QI])
++(define_mode_attr cmp_constraint [(DI "r") (SI "rKs21") (HI "r") (QI "r")])
++(define_mode_attr cmp_predicate [(DI "register_operand")
++ (SI "register_immediate_operand")
++ (HI "register_operand")
++ (QI "register_operand")])
++
++;; For all conditional insns
++(define_code_macro any_cond [eq ne gt ge lt le gtu geu ltu leu])
++(define_code_attr cond [(eq "eq") (ne "ne") (gt "gt") (ge "ge") (lt "lt") (le "le")
++ (gtu "hi") (geu "hs") (ltu "lo") (leu "ls")])
++(define_code_attr invcond [(eq "ne") (ne "eq") (gt "le") (ge "lt") (lt "ge") (le "gt")
++ (gtu "ls") (geu "lo") (ltu "hs") (leu "hi")])
++
++;; For logical operations
++(define_code_macro logical [and ior xor])
++(define_code_attr logical_insn [(and "and") (ior "or") (xor "eor")])
++
++;; Load the predicates
++(include "predicates.md")
++
++
++;;******************************************************************************
++;; Automaton pipeline description for avr32
++;;******************************************************************************
++
++(define_automaton "avr32_ap")
++
++
++(define_cpu_unit "is" "avr32_ap")
++(define_cpu_unit "a1,m1,da" "avr32_ap")
++(define_cpu_unit "a2,m2,d" "avr32_ap")
++
++;;Alu instructions
++(define_insn_reservation "alu_op" 1
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "alu"))
++ "is,a1,a2")
++
++(define_insn_reservation "alu2_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "alu2"))
++ "is,is+a1,a1+a2,a2")
++
++(define_insn_reservation "alu_sat_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "alu_sat"))
++ "is,a1,a2")
++
++
++;;Mul instructions
++(define_insn_reservation "mulhh_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "mulhh,mulwh"))
++ "is,m1,m2")
++
++(define_insn_reservation "mulww_w_op" 3
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "mulww_w"))
++ "is,m1,m1+m2,m2")
++
++(define_insn_reservation "mulww_d_op" 5
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "mulww_d"))
++ "is,m1,m1+m2,m1+m2,m2,m2")
++
++(define_insn_reservation "div_op" 33
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "div"))
++ "is,m1,m1*31 + m2*31,m2")
++
++(define_insn_reservation "machh_w_op" 3
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "machh_w"))
++ "is*2,m1,m2")
++
++
++(define_insn_reservation "macww_w_op" 4
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "macww_w"))
++ "is*2,m1,m1,m2")
++
++
++(define_insn_reservation "macww_d_op" 6
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "macww_d"))
++ "is*2,m1,m1+m2,m1+m2,m2")
++
++;;Bypasses for Mac instructions, because of accumulator cache.
++;;Set latency as low as possible in order to let the compiler let
++;;mul -> mac and mac -> mac combinations which use the same
++;;accumulator cache be placed close together to avoid any
++;;instructions which can ruin the accumulator cache come inbetween.
++(define_bypass 4 "machh_w_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++(define_bypass 5 "macww_w_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++(define_bypass 7 "macww_d_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++
++(define_bypass 3 "mulhh_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++(define_bypass 4 "mulww_w_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++(define_bypass 6 "mulww_d_op" "alu_op,alu2_op,alu_sat_op,load_op" "avr32_mul_waw_bypass")
++
++
++;;Bypasses for all mul/mac instructions followed by an instruction
++;;which reads the output AND writes the result to the same register.
++;;This will generate an Write After Write hazard which gives an
++;;extra cycle before the result is ready.
++(define_bypass 0 "machh_w_op" "machh_w_op" "avr32_valid_macmac_bypass")
++(define_bypass 0 "macww_w_op" "macww_w_op" "avr32_valid_macmac_bypass")
++(define_bypass 0 "macww_d_op" "macww_d_op" "avr32_valid_macmac_bypass")
++
++(define_bypass 0 "mulhh_op" "machh_w_op" "avr32_valid_mulmac_bypass")
++(define_bypass 0 "mulww_w_op" "macww_w_op" "avr32_valid_mulmac_bypass")
++(define_bypass 0 "mulww_d_op" "macww_d_op" "avr32_valid_mulmac_bypass")
++
++;;Branch and call instructions
++;;We assume that all branches and rcalls are predicted correctly :-)
++;;while calls use a lot of cycles.
++(define_insn_reservation "branch_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "branch"))
++ "nothing")
++
++(define_insn_reservation "call_op" 10
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "call"))
++ "nothing")
++
++
++;;Load store instructions
++(define_insn_reservation "load_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "load"))
++ "is,da,d")
++
++(define_insn_reservation "load_rm_op" 3
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "load_rm"))
++ "is,da,d")
++
++
++(define_insn_reservation "store_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "store"))
++ "is,da,d")
++
++
++(define_insn_reservation "load_double_op" 3
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "load2"))
++ "is,da,da+d,d")
++
++(define_insn_reservation "load_quad_op" 4
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "load4"))
++ "is,da,da+d,da+d,d")
++
++(define_insn_reservation "store_double_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "store2"))
++ "is,da,da+d,d")
++
++
++(define_insn_reservation "store_quad_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "store4"))
++ "is,da,da+d,da+d,d")
++
++;;For store the operand to write to memory is read in d and
++;;the real latency between any instruction and a store is therefore
++;;one less than for the instructions which reads the operands in the first
++;;excecution stage
++(define_bypass 2 "load_double_op" "store_double_op" "avr32_store_bypass")
++(define_bypass 3 "load_quad_op" "store_quad_op" "avr32_store_bypass")
++(define_bypass 1 "load_op" "store_op" "avr32_store_bypass")
++(define_bypass 2 "load_rm_op" "store_op" "avr32_store_bypass")
++(define_bypass 1 "alu_sat_op" "store_op" "avr32_store_bypass")
++(define_bypass 1 "alu2_op" "store_op" "avr32_store_bypass")
++(define_bypass 1 "mulhh_op" "store_op" "avr32_store_bypass")
++(define_bypass 2 "mulww_w_op" "store_op" "avr32_store_bypass")
++(define_bypass 4 "mulww_d_op" "store_op" "avr32_store_bypass" )
++(define_bypass 2 "machh_w_op" "store_op" "avr32_store_bypass")
++(define_bypass 3 "macww_w_op" "store_op" "avr32_store_bypass")
++(define_bypass 5 "macww_d_op" "store_op" "avr32_store_bypass")
++
++
++; Bypass for load double operation. If only the first loaded word is needed
++; then the latency is 2
++(define_bypass 2 "load_double_op"
++ "load_op,load_rm_op,alu_sat_op, alu2_op, alu_op, mulhh_op, mulww_w_op,
++ mulww_d_op, machh_w_op, macww_w_op, macww_d_op"
++ "avr32_valid_load_double_bypass")
++
++; Bypass for load quad operation. If only the first or second loaded word is needed
++; we set the latency to 2
++(define_bypass 2 "load_quad_op"
++ "load_op,load_rm_op,alu_sat_op, alu2_op, alu_op, mulhh_op, mulww_w_op,
++ mulww_d_op, machh_w_op, macww_w_op, macww_d_op"
++ "avr32_valid_load_quad_bypass")
++
++
++;;******************************************************************************
++;; End of Automaton pipeline description for avr32
++;;******************************************************************************
++
++
++
++;;=============================================================================
++;; move
++;;-----------------------------------------------------------------------------
++
++;;== char - 8 bits ============================================================
++(define_expand "movqi"
++ [(set (match_operand:QI 0 "nonimmediate_operand" "")
++ (match_operand:QI 1 "general_operand" ""))]
++ ""
++ {
++ if ( !no_new_pseudos ){
++ if (GET_CODE (operands[1]) == MEM && optimize){
++ rtx reg = gen_reg_rtx (SImode);
++
++ emit_insn (gen_zero_extendqisi2 (reg, operands[1]));
++ operands[1] = gen_lowpart (QImode, reg);
++ }
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) == MEM)
++ operands[1] = force_reg (QImode, operands[1]);
++ }
++
++ })
++
++(define_insn "*movqi_internal"
++ [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r")
++ (match_operand:QI 1 "general_operand" "rKs08,m,r,i"))]
++ ""
++ "@
++ mov\t%0, %1
++ ld.ub\t%0, %1
++ st.b\t%0, %1
++ mov\t%0, %1"
++ [(set_attr "length" "2,4,4,4")
++ (set_attr "type" "alu,load_rm,store,alu")])
++
++
++
++;;== short - 16 bits ==========================================================
++(define_expand "movhi"
++ [(set (match_operand:HI 0 "nonimmediate_operand" "")
++ (match_operand:HI 1 "general_operand" ""))]
++ ""
++ {
++ if ( !no_new_pseudos ){
++ if (GET_CODE (operands[1]) == MEM && optimize){
++ rtx reg = gen_reg_rtx (SImode);
++
++ emit_insn (gen_extendhisi2 (reg, operands[1]));
++ operands[1] = gen_lowpart (HImode, reg);
++ }
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) == MEM)
++ operands[1] = force_reg (HImode, operands[1]);
++ }
++
++ })
++
++(define_insn "*movhi_internal"
++ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r")
++ (match_operand:HI 1 "general_operand" "rKs08,m,r,i"))]
++ ""
++ "@
++ mov\t%0, %1
++ ld.sh\t%0, %1
++ st.h\t%0, %1
++ mov\t%0, %1"
++ [(set_attr "length" "2,4,4,4")
++ (set_attr "type" "alu,load_rm,store,alu")])
++
++
++;;== int - 32 bits ============================================================
++
++(define_expand "movmisalignsi"
++ [(set (match_operand:SI 0 "nonimmediate_operand" "")
++ (match_operand:SI 1 "nonimmediate_operand" ""))]
++ "TARGET_UNALIGNED_WORD"
++ {
++ }
++)
++
++(define_expand "mov<mode>"
++ [(set (match_operand:MOVM 0 "nonimmediate_operand" "")
++ (match_operand:MOVM 1 "general_operand" ""))]
++ ""
++ {
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) == MEM)
++ operands[1] = force_reg (<MODE>mode, operands[1]);
++
++
++ /* Check for out of range immediate constants as these may
++ occur during reloading, since it seems like reload does
++ not check if the immediate is legitimate. Don't know if
++ this is a bug? */
++ if ( reload_in_progress
++ && GET_CODE(operands[1]) == CONST_INT
++ && !avr32_const_ok_for_constraint_p(INTVAL(operands[1]), 'K', "Ks21") ){
++ operands[1] = force_const_mem(SImode, operands[1]);
++ }
++
++ if ( (flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS)
++ && !avr32_legitimate_pic_operand_p(operands[1]) )
++ operands[1] = legitimize_pic_address (operands[1], <MODE>mode,
++ (no_new_pseudos ? operands[0] : 0));
++ else if ( flag_pic && avr32_address_operand(operands[1], GET_MODE(operands[1])) )
++ /* If we have an address operand then this function uses the pic register. */
++ current_function_uses_pic_offset_table = 1;
++ })
++
++
++(define_insn "mov<mode>_internal"
++ [(set (match_operand:MOVM 0 "nonimmediate_operand" "=r,r,r,m,r")
++ (match_operand:MOVM 1 "general_operand" "rKs08,Ks21,m,r,W"))]
++ ""
++ {
++ switch (which_alternative) {
++ case 0:
++ case 1: return "mov\t%0, %1";
++ case 2:
++ if ( (REG_P(XEXP(operands[1], 0))
++ && REGNO(XEXP(operands[1], 0)) == SP_REGNUM)
++ || (GET_CODE(XEXP(operands[1], 0)) == PLUS
++ && REGNO(XEXP(XEXP(operands[1], 0), 0)) == SP_REGNUM
++ && GET_CODE(XEXP(XEXP(operands[1], 0), 1)) == CONST_INT
++ && INTVAL(XEXP(XEXP(operands[1], 0), 1)) % 4 == 0
++ && INTVAL(XEXP(XEXP(operands[1], 0), 1)) <= 0x1FC) )
++ return "lddsp\t%0, %1";
++ else if ( avr32_const_pool_ref_operand(operands[1], GET_MODE(operands[1])) )
++ return "lddpc\t%0, %1";
++ else
++ return "ld.w\t%0, %1";
++ case 3:
++ if ( (REG_P(XEXP(operands[0], 0))
++ && REGNO(XEXP(operands[0], 0)) == SP_REGNUM)
++ || (GET_CODE(XEXP(operands[0], 0)) == PLUS
++ && REGNO(XEXP(XEXP(operands[0], 0), 0)) == SP_REGNUM
++ && GET_CODE(XEXP(XEXP(operands[0], 0), 1)) == CONST_INT
++ && INTVAL(XEXP(XEXP(operands[0], 0), 1)) % 4 == 0
++ && INTVAL(XEXP(XEXP(operands[0], 0), 1)) <= 0x1FC) )
++ return "stdsp\t%0, %1";
++ else
++ return "st.w\t%0, %1";
++ case 4:
++ if ( TARGET_HAS_ASM_ADDR_PSEUDOS )
++ return "lda.w\t%0, %1";
++ else
++ return "ld.w\t%0, r6[%1@got]";
++ default:
++ abort();
++ }
++ }
++
++ [(set_attr "length" "2,4,4,4,8")
++ (set_attr "type" "alu,alu,load,store,load")
++ (set_attr "cc" "none,none,none,none,clobber")])
++
++
++;; These instructions are for loading constants which cannot be loaded
++;; directly from the constant pool because the offset is too large
++;; high and lo_sum are used even tough for our case it should be
++;; low and high sum :-)
++(define_insn "mov_symbol_lo"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (high:SI (match_operand:SI 1 "immediate_operand" "i" )))]
++ ""
++ "mov\t%0, lo(%1)"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")]
++)
++
++(define_insn "add_symbol_hi"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (lo_sum:SI (match_dup 0)
++ (match_operand:SI 1 "immediate_operand" "i" )))]
++ ""
++ "orh\t%0, hi(%1)"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")]
++)
++
++
++
++;; When generating pic, we need to load the symbol offset into a register.
++;; So that the optimizer does not confuse this with a normal symbol load
++;; we use an unspec. The offset will be loaded from a constant pool entry,
++;; since that is the only type of relocation we can use.
++(define_insn "pic_load_addr"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_PIC_SYM))]
++ "flag_pic && CONSTANT_POOL_ADDRESS_P(XEXP(operands[1], 0))"
++ "lddpc\t%0, %1"
++ [(set_attr "type" "load")
++ (set_attr "length" "4")]
++)
++
++(define_insn "pic_compute_got_from_pc"
++ [(set (match_operand:SI 0 "register_operand" "+r")
++ (unspec:SI [(minus:SI (pc)
++ (match_dup 0))] UNSPEC_PIC_BASE))
++ (use (label_ref (match_operand 1 "" "")))]
++ "flag_pic"
++ {
++ (*targetm.asm_out.internal_label) (asm_out_file, "L",
++ CODE_LABEL_NUMBER (operands[1]));
++ return \"rsub\t%0, pc\";
++ }
++ [(set_attr "cc" "clobber")
++ (set_attr "length" "2")]
++)
++
++;;== long long int - 64 bits ==================================================
++(define_expand "movdi"
++ [(set (match_operand:DI 0 "nonimmediate_operand" "")
++ (match_operand:DI 1 "general_operand" ""))]
++ ""
++ {
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) != REG)
++ operands[1] = force_reg (DImode, operands[1]);
++
++ })
++
++
++(define_insn_and_split "*movdi_internal"
++ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r,m")
++ (match_operand:DI 1 "general_operand" "r,Ks08,Ks21,G,m,r"))]
++ ""
++ {
++ switch (which_alternative ){
++ case 1:
++ case 2:
++ if ( INTVAL(operands[1]) < 0 )
++ return "mov\t%0, %1\;mov\t%m0, -1";
++ else
++ return "mov\t%0, %1\;mov\t%m0, 0";
++ case 0:
++ case 3:
++ return "mov\t%0, %1\;mov\t%m0, %m1";
++ case 4:
++ if ( avr32_const_pool_ref_operand(operands[1], GET_MODE(operands[1])))
++ return "ld.d\t%0, pc[%1 - .]";
++ else
++ return "ld.d\t%0, %1";
++ case 5:
++ return "st.d\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ "reload_completed &&
++ (REG_P(operands[0]) &&
++ (REG_P(operands[1]) || avr32_const_double_immediate(operands[1]) ||
++ ((GET_CODE(operands[1]) == CONST_INT) && avr32_const_ok_for_constraint_p(INTVAL(operands[1]), 'K', \"Ks21\")) ))"
++ [(set (match_dup 0) (match_dup 1))
++ (set (match_dup 2) (match_dup 3))]
++ {
++ operands[2] = gen_highpart (SImode, operands[0]);
++ operands[0] = gen_lowpart (SImode, operands[0]);
++ if ( REG_P(operands[1]) ){
++ operands[3] = gen_highpart(SImode, operands[1]);
++ operands[1] = gen_lowpart(SImode, operands[1]);
++ } else if ( GET_CODE(operands[1]) == CONST_DOUBLE ){
++ operands[3] = GEN_INT(CONST_DOUBLE_LOW(operands[1]));
++ operands[1] = GEN_INT(CONST_DOUBLE_HIGH(operands[1]));
++ } else if ( GET_CODE(operands[1]) == CONST_INT ){
++ operands[3] = GEN_INT((INTVAL(operands[1]) < 0) ? -1 : 0);
++ operands[1] = operands[1];
++ } else {
++ internal_error("Illegal operand[1] for movdi split!");
++ }
++ }
++
++ [(set_attr "length" "4,6,8,8,4,4")
++ (set_attr "type" "alu2,alu2,alu2,alu2,load2,store2")])
++
++
++;;== 128 bits ==================================================
++(define_expand "movti"
++ [(set (match_operand:TI 0 "nonimmediate_operand" "")
++ (match_operand:TI 1 "general_operand" ""))]
++ ""
++ {
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) != REG)
++ operands[1] = force_reg (TImode, operands[1]);
++
++ /* We must fix any pre_dec for loads and post_inc stores */
++ if ( GET_CODE (operands[0]) == MEM
++ && GET_CODE (XEXP(operands[0],0)) == POST_INC ){
++ emit_move_insn(gen_rtx_MEM(TImode, XEXP(XEXP(operands[0],0),0)), operands[1]);
++ emit_insn(gen_addsi3(XEXP(XEXP(operands[0],0),0), XEXP(XEXP(operands[0],0),0), GEN_INT(GET_MODE_SIZE(TImode))));
++ DONE;
++ }
++
++ if ( GET_CODE (operands[1]) == MEM
++ && GET_CODE (XEXP(operands[1],0)) == PRE_DEC ){
++ emit_insn(gen_addsi3(XEXP(XEXP(operands[1],0),0), XEXP(XEXP(operands[1],0),0), GEN_INT(-GET_MODE_SIZE(TImode))));
++ emit_move_insn(operands[0], gen_rtx_MEM(TImode, XEXP(XEXP(operands[1],0),0)));
++ DONE;
++ }
++
++ if (GET_CODE (operands[1]) == CONST_INT){
++ unsigned int sign_extend = (INTVAL(operands[1]) < 0) ? 0xFFFFFFFF : 0;
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 12), operands[1]);
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 8), GEN_INT(sign_extend));
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 4), GEN_INT(sign_extend));
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 0), GEN_INT(sign_extend));
++ DONE;
++ }
++
++ if (GET_CODE (operands[0]) == REG
++ && GET_CODE (operands[1]) == REG){
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 12), gen_rtx_SUBREG(SImode, operands[1], 12));
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 8), gen_rtx_SUBREG(SImode, operands[1], 8));
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 4), gen_rtx_SUBREG(SImode, operands[1], 4));
++ emit_move_insn(gen_rtx_SUBREG(SImode, operands[0], 0), gen_rtx_SUBREG(SImode, operands[1], 0));
++ DONE;
++ }
++ })
++
++
++(define_insn "*movti_internal"
++ [(set (match_operand:TI 0 "nonimmediate_operand" "=r,r, <RKu00,r")
++ (match_operand:TI 1 "loadti_operand" " r,RKu00>,r,m"))]
++ ""
++ "@
++ mov\t%T0, %T1\;mov\t%U0, %U1\;mov\t%L0, %L1\;mov\t%B0, %B1
++ ldm\t%p1, %0
++ stm\t%p0, %1
++ ldm\t%p1, %0"
++ [(set_attr "length" "8,4,4,4")
++ (set_attr "type" "alu,load4,store4,load4")])
++
++
++;;== float - 32 bits ==========================================================
++(define_expand "movsf"
++ [(set (match_operand:SF 0 "nonimmediate_operand" "")
++ (match_operand:SF 1 "general_operand" ""))]
++ ""
++ {
++
++
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) != REG)
++ operands[1] = force_reg (SFmode, operands[1]);
++
++ })
++
++(define_insn "*movsf_internal"
++ [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,m")
++ (match_operand:SF 1 "general_operand" "r,G,m,r"))]
++ "TARGET_SOFT_FLOAT"
++ {
++ switch (which_alternative) {
++ case 0:
++ case 1: return "mov\t%0, %1";
++ case 2:
++ if ( (REG_P(XEXP(operands[1], 0))
++ && REGNO(XEXP(operands[1], 0)) == SP_REGNUM)
++ || (GET_CODE(XEXP(operands[1], 0)) == PLUS
++ && REGNO(XEXP(XEXP(operands[1], 0), 0)) == SP_REGNUM
++ && GET_CODE(XEXP(XEXP(operands[1], 0), 1)) == CONST_INT
++ && INTVAL(XEXP(XEXP(operands[1], 0), 1)) % 4 == 0
++ && INTVAL(XEXP(XEXP(operands[1], 0), 1)) <= 0x1FC) )
++ return "lddsp\t%0, %1";
++ else if ( avr32_const_pool_ref_operand(operands[1], GET_MODE(operands[1])) )
++ return "lddpc\t%0, %1";
++ else
++ return "ld.w\t%0, %1";
++ case 3:
++ if ( (REG_P(XEXP(operands[0], 0))
++ && REGNO(XEXP(operands[0], 0)) == SP_REGNUM)
++ || (GET_CODE(XEXP(operands[0], 0)) == PLUS
++ && REGNO(XEXP(XEXP(operands[0], 0), 0)) == SP_REGNUM
++ && GET_CODE(XEXP(XEXP(operands[0], 0), 1)) == CONST_INT
++ && INTVAL(XEXP(XEXP(operands[0], 0), 1)) % 4 == 0
++ && INTVAL(XEXP(XEXP(operands[0], 0), 1)) <= 0x1FC) )
++ return "stdsp\t%0, %1";
++ else
++ return "st.w\t%0, %1";
++ default:
++ abort();
++ }
++ }
++
++ [(set_attr "length" "2,4,4,4")
++ (set_attr "type" "alu,alu,load,store")])
++
++
++
++;;== double - 64 bits =========================================================
++(define_expand "movdf"
++ [(set (match_operand:DF 0 "nonimmediate_operand" "")
++ (match_operand:DF 1 "general_operand" ""))]
++ ""
++ {
++ /* One of the ops has to be in a register. */
++ if (GET_CODE (operands[0]) != REG){
++ operands[1] = force_reg (DFmode, operands[1]);
++ }
++ })
++
++
++(define_insn_and_split "*movdf_internal"
++ [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,r,m")
++ (match_operand:DF 1 "general_operand" "r,G,m,r"))]
++ "TARGET_SOFT_FLOAT"
++ {
++ switch (which_alternative ){
++ case 0:
++ case 1:
++ return "mov\t%0, %1\;mov\t%m0, %m1";
++ case 2:
++ if ( avr32_const_pool_ref_operand(operands[1], GET_MODE(operands[1])))
++ return "ld.d\t%0, pc[%1 - .]";
++ else
++ return "ld.d\t%0, %1";
++ case 3:
++ return "st.d\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ "TARGET_SOFT_FLOAT
++ && reload_completed
++ && (REG_P(operands[0]) && REG_P(operands[1]))"
++ [(set (match_dup 0) (match_dup 1))
++ (set (match_dup 2) (match_dup 3))]
++ "
++ {
++ operands[2] = gen_highpart (SImode, operands[0]);
++ operands[0] = gen_lowpart (SImode, operands[0]);
++ operands[3] = gen_highpart(SImode, operands[1]);
++ operands[1] = gen_lowpart(SImode, operands[1]);
++ }
++ "
++
++ [(set_attr "length" "4,8,4,4")
++ (set_attr "type" "alu2,alu2,load2,store2")])
++
++
++
++
++;;=============================================================================
++;; Move chunks of memory
++;;=============================================================================
++
++(define_expand "movmemsi"
++ [(match_operand:BLK 0 "general_operand" "")
++ (match_operand:BLK 1 "general_operand" "")
++ (match_operand:SI 2 "const_int_operand" "")
++ (match_operand:SI 3 "const_int_operand" "")]
++ ""
++ "
++ if (avr32_gen_movmemsi (operands))
++ DONE;
++ FAIL;
++ "
++ )
++
++
++
++
++;;=============================================================================
++;; Bit field instructions
++;;-----------------------------------------------------------------------------
++;; Instructions to insert or extract bit-fields
++;;=============================================================================
++
++(define_insn "insv"
++ [ (set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
++ (match_operand:SI 1 "immediate_operand" "Ku05")
++ (match_operand:SI 2 "immediate_operand" "Ku05"))
++ (match_operand 3 "register_operand" "r"))]
++ ""
++ "bfins\t%0, %3, %2, %1"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "set_ncz")])
++
++
++
++
++(define_insn "extv"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (sign_extract:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "immediate_operand" "Ku05")
++ (match_operand:SI 3 "immediate_operand" "Ku05")))]
++ ""
++ "bfexts\t%0, %1, %3, %2"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "set_ncz")])
++
++
++(define_insn "extzv"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (zero_extract:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "immediate_operand" "Ku05")
++ (match_operand:SI 3 "immediate_operand" "Ku05")))]
++ ""
++ "bfextu\t%0, %1, %3, %2"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "set_ncz")])
++
++
++
++;;=============================================================================
++;; Some peepholes for avoiding unnecessary cast instructions
++;; followed by bfins.
++;;-----------------------------------------------------------------------------
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (zero_extend:SI (match_operand:QI 1 "register_operand" "")))
++ (set (zero_extract:SI (match_operand 2 "register_operand" "")
++ (match_operand:SI 3 "immediate_operand" "")
++ (match_operand:SI 4 "immediate_operand" ""))
++ (match_dup 0))]
++ "((peep2_reg_dead_p(2, operands[0]) &&
++ (INTVAL(operands[3]) <= 8)))"
++ [(set (zero_extract:SI (match_dup 2)
++ (match_dup 3)
++ (match_dup 4))
++ (match_dup 1))]
++ )
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (zero_extend:SI (match_operand:HI 1 "register_operand" "")))
++ (set (zero_extract:SI (match_operand 2 "register_operand" "")
++ (match_operand:SI 3 "immediate_operand" "")
++ (match_operand:SI 4 "immediate_operand" ""))
++ (match_dup 0))]
++ "((peep2_reg_dead_p(2, operands[0]) &&
++ (INTVAL(operands[3]) <= 16)))"
++ [(set (zero_extract:SI (match_dup 2)
++ (match_dup 3)
++ (match_dup 4))
++ (match_dup 1))]
++ )
++
++;;=============================================================================
++;; push bytes
++;;-----------------------------------------------------------------------------
++;; Implements the push instruction
++;;=============================================================================
++(define_insn "pushm"
++ [(set (mem:BLK (pre_dec:BLK (reg:SI SP_REGNUM)))
++ (unspec:BLK [(match_operand 0 "const_int_operand" "")]
++ UNSPEC_PUSHM))]
++ ""
++ {
++ if (INTVAL(operands[0])) {
++ return "pushm\t%r0";
++ } else {
++ return "";
++ }
++ }
++ [(set_attr "type" "store")
++ (set_attr "length" "2")
++ (set_attr "cc" "none")])
++
++(define_insn "stm"
++ [(unspec [(match_operand 0 "register_operand" "r")
++ (match_operand 1 "const_int_operand" "")
++ (match_operand 2 "const_int_operand" "")]
++ UNSPEC_STM)]
++ ""
++ {
++ if (INTVAL(operands[1])) {
++ if (INTVAL(operands[2]) != 0)
++ return "stm\t--%0, %s1";
++ else
++ return "stm\t%0, %s1";
++ } else {
++ return "";
++ }
++ }
++ [(set_attr "type" "store")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++
++
++(define_insn "popm"
++ [(unspec [(match_operand 0 "const_int_operand" "")]
++ UNSPEC_POPM)]
++ ""
++ {
++ if (INTVAL(operands[0])) {
++ return "popm %r0";
++ } else {
++ return "";
++ }
++ }
++ [(set_attr "type" "load")
++ (set_attr "length" "2")])
++
++
++
++;;=============================================================================
++;; add
++;;-----------------------------------------------------------------------------
++;; Adds reg1 with reg2 and puts the result in reg0.
++;;=============================================================================
++(define_insn "add<mode>3"
++ [(set (match_operand:INTM 0 "register_operand" "=r,r,r,r,r")
++ (plus:INTM (match_operand:INTM 1 "register_operand" "%0,r,0,r,0")
++ (match_operand:INTM 2 "avr32_add_operand" "r,r,Is08,Is16,Is21")))]
++ ""
++ "@
++ add %0, %2
++ add %0, %1, %2
++ sub %0, %n2
++ sub %0, %1, %n2
++ sub %0, %n2"
++
++ [(set_attr "length" "2,4,2,4,4")
++ (set_attr "cc" "<INTM:alu_cc_attr>")])
++
++(define_insn "*addsi3_lsl"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (plus:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 3 "avr32_add_shift_immediate_operand" "Ku02"))
++ (match_operand:SI 2 "register_operand" "r")))]
++ ""
++ "add %0, %2, %1 << %3"
++ [(set_attr "length" "4")
++ (set_attr "cc" "set_vncz")])
++
++
++(define_insn "*addsi3_mul"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 3 "immediate_operand" "Ku04" ))
++ (match_operand:SI 2 "register_operand" "r")))]
++ "(INTVAL(operands[3]) == 0) || (INTVAL(operands[3]) == 2) ||
++ (INTVAL(operands[3]) == 4) || (INTVAL(operands[3]) == 8)"
++ "add %0, %2, %1 << %p3"
++ [(set_attr "length" "4")
++ (set_attr "cc" "set_vncz")])
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (ashift:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (plus:SI (match_dup 0)
++ (match_operand:SI 4 "register_operand" "")))]
++ "(peep2_reg_dead_p(2, operands[0]) &&
++ (INTVAL(operands[2]) < 4 && INTVAL(operands[2]) > 0))"
++ [(set (match_dup 3)
++ (plus:SI (ashift:SI (match_dup 1)
++ (match_dup 2))
++ (match_dup 4)))]
++ )
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (ashift:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (plus:SI (match_operand:SI 4 "register_operand" "")
++ (match_dup 0)))]
++ "(peep2_reg_dead_p(2, operands[0]) &&
++ (INTVAL(operands[2]) < 4 && INTVAL(operands[2]) > 0))"
++ [(set (match_dup 3)
++ (plus:SI (ashift:SI (match_dup 1)
++ (match_dup 2))
++ (match_dup 4)))]
++ )
++
++(define_insn "adddi3"
++ [(set (match_operand:DI 0 "register_operand" "=r,r")
++ (plus:DI (match_operand:DI 1 "register_operand" "%r,0")
++ (match_operand:DI 2 "register_operand" "r,r")))]
++ ""
++ "@
++ add %0, %1, %2\;adc %m0, %m1, %m2
++ add %0, %2\;adc %m0, %m0, %m2"
++ [(set_attr "length" "8,6")
++ (set_attr "type" "alu2")
++ (set_attr "cc" "set_vncz")])
++
++
++
++;;=============================================================================
++;; subtract
++;;-----------------------------------------------------------------------------
++;; Subtract reg2 or immediate value from reg0 and puts the result in reg0.
++;;=============================================================================
++
++(define_peephole2
++ [(set (match_operand:QI 0 "register_operand" "")
++ (minus:QI (match_operand:QI 1 "general_operand" "")
++ (match_operand:QI 2 "general_operand" "")))
++ (set (match_operand:QI 3 "register_operand" "")
++ (match_dup 0))]
++ "peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (minus:QI (match_dup 1) (match_dup 2)))]
++ )
++
++(define_peephole
++ [(set (match_operand:QI 0 "register_operand" "")
++ (minus:QI (match_operand:QI 1 "immediate_operand" "Ks08")
++ (match_operand:QI 2 "register_operand" "r")))
++ (set (match_operand:QI 3 "register_operand" "r")
++ (match_dup 0))]
++ "dead_or_set_p(insn, operands[0])"
++ "rsub %3, %2, %1"
++ [(set_attr "length" "4")
++ (set_attr "cc" "clobber")]
++ )
++
++
++
++(define_insn "sub<mode>3"
++ [(set (match_operand:INTM 0 "general_operand" "=r,r,r,r,r,r,r")
++ (minus:INTM (match_operand:INTM 1 "nonmemory_operand" "0,r,0,r,0,r,Ks08")
++ (match_operand:INTM 2 "nonmemory_operand" "r,r,Ks08,Ks16,Ks21,0,r")))]
++ ""
++ "@
++ sub %0, %2
++ sub %0, %1, %2
++ sub %0, %2
++ sub %0, %1, %2
++ sub %0, %2
++ rsub %0, %1
++ rsub %0, %2, %1"
++ [(set_attr "length" "2,4,2,4,4,2,4")
++ (set_attr "cc" "<INTM:alu_cc_attr>")])
++
++(define_insn "*sub<mode>3_mul"
++ [(set (match_operand:INTM 0 "register_operand" "=r,r,r")
++ (minus:INTM (match_operand:INTM 1 "register_operand" "r,0,r")
++ (mult:INTM (match_operand:INTM 2 "register_operand" "r,r,0")
++ (match_operand:SI 3 "immediate_operand" "Ku04,Ku04,Ku04" ))))]
++ "(INTVAL(operands[3]) == 0) || (INTVAL(operands[3]) == 2) ||
++ (INTVAL(operands[3]) == 4) || (INTVAL(operands[3]) == 8)"
++ "@
++ sub %0, %1, %2 << %p3
++ sub %0, %0, %2 << %p3
++ sub %0, %1, %0 << %p3"
++ [(set_attr "length" "4,4,4")
++ (set_attr "cc" "<INTM:alu_cc_attr>")])
++
++(define_insn "*sub<mode>3_lsl"
++ [(set (match_operand:INTM 0 "register_operand" "=r")
++ (minus:INTM (ashift:INTM (match_operand:INTM 1 "register_operand" "r")
++ (match_operand:SI 3 "avr32_add_shift_immediate_operand" "Ku02"))
++ (match_operand:INTM 2 "register_operand" "r")))]
++ ""
++ "sub %0, %2, %1 << %3"
++ [(set_attr "length" "4")
++ (set_attr "cc" "<INTM:alu_cc_attr>")])
++
++
++(define_insn "subdi3"
++ [(set (match_operand:DI 0 "register_operand" "=r,r")
++ (minus:DI (match_operand:DI 1 "register_operand" "%r,0")
++ (match_operand:DI 2 "register_operand" "r,r")))]
++ ""
++ "@
++ sub %0, %1, %2\;sbc %m0, %m1, %m2
++ sub %0, %2\;sbc %m0, %m0, %m2"
++ [(set_attr "length" "8,6")
++ (set_attr "type" "alu2")
++ (set_attr "cc" "set_vncz")])
++
++
++
++;;=============================================================================
++;; multiply
++;;-----------------------------------------------------------------------------
++;; Multiply op1 and op2 and put the value in op0.
++;;=============================================================================
++
++
++(define_insn "mulqi3"
++ [(set (match_operand:QI 0 "register_operand" "=r,r,r")
++ (mult:QI (match_operand:QI 1 "register_operand" "%0,r,r")
++ (match_operand:QI 2 "avr32_mul_operand" "r,r,Ks08")))]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "mul %0, %2";
++ case 1:
++ return "mul %0, %1, %2";
++ case 2:
++ return "mul %0, %1, %2";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "type" "mulww_w,mulww_w,mulwh")
++ (set_attr "length" "2,4,4")
++ (set_attr "cc" "none")])
++
++(define_insn "mulsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (mult:SI (match_operand:SI 1 "register_operand" "%0,r,r")
++ (match_operand:SI 2 "avr32_mul_operand" "r,r,Ks08")))]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "mul %0, %2";
++ case 1:
++ return "mul %0, %1, %2";
++ case 2:
++ return "mul %0, %1, %2";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "type" "mulww_w,mulww_w,mulwh")
++ (set_attr "length" "2,4,4")
++ (set_attr "cc" "none")])
++
++
++(define_insn "mulhisi3"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (mult:SI
++ (sign_extend:SI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
++ "TARGET_DSP"
++ "mulhh.w %0, %1:b, %2:b"
++ [(set_attr "type" "mulhh")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_peephole2
++ [(match_scratch:DI 6 "r")
++ (set (match_operand:SI 0 "register_operand" "")
++ (mult:SI
++ (sign_extend:SI (match_operand:HI 1 "register_operand" ""))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" ""))))
++ (set (match_operand:SI 3 "register_operand" "")
++ (ashiftrt:SI (match_dup 0)
++ (const_int 16)))]
++ "TARGET_DSP
++ && (peep2_reg_dead_p(1, operands[0]) || (REGNO(operands[0]) == REGNO(operands[3])))"
++ [(set (match_dup 4) (sign_extend:SI (match_dup 1)))
++ (set (match_dup 6)
++ (ashift:DI (mult:DI (sign_extend:DI (match_dup 4))
++ (sign_extend:DI (match_dup 2)))
++ (const_int 16)))
++ (set (match_dup 3) (match_dup 5))]
++
++ "{
++ operands[4] = gen_rtx_REG(SImode, REGNO(operands[1]));
++ operands[5] = gen_highpart (SImode, operands[4]);
++ }"
++ )
++
++(define_insn "mulnhisi3"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (mult:SI
++ (sign_extend:SI (neg:HI (match_operand:HI 1 "register_operand" "r")))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
++ "TARGET_DSP"
++ "mulnhh.w %0, %1:b, %2:b"
++ [(set_attr "type" "mulhh")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_insn "machisi3"
++ [(set (match_operand:SI 0 "register_operand" "+r")
++ (plus:SI (mult:SI
++ (sign_extend:SI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))
++ (match_dup 0)))]
++ "TARGET_DSP"
++ "machh.w %0, %1:b, %2:b"
++ [(set_attr "type" "machh_w")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++
++
++(define_insn "mulsidi3"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (mult:DI
++ (sign_extend:DI (match_operand:SI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
++ ""
++ "muls.d %0, %1, %2"
++ [(set_attr "type" "mulww_d")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_insn "umulsidi3"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (mult:DI
++ (zero_extend:DI (match_operand:SI 1 "register_operand" "%r"))
++ (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
++ ""
++ "mulu.d %0, %1, %2"
++ [(set_attr "type" "mulww_d")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_insn "*mulaccsi3"
++ [(set (match_operand:SI 0 "register_operand" "+r")
++ (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "%r")
++ (match_operand:SI 2 "register_operand" "r"))
++ (match_dup 0)))]
++ ""
++ "mac %0, %1, %2"
++ [(set_attr "type" "macww_w")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_insn "mulaccsidi3"
++ [(set (match_operand:DI 0 "register_operand" "+r")
++ (plus:DI (mult:DI
++ (sign_extend:DI (match_operand:SI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:SI 2 "register_operand" "r")))
++ (match_dup 0)))]
++ ""
++ "macs.d %0, %1, %2"
++ [(set_attr "type" "macww_d")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++(define_insn "umulaccsidi3"
++ [(set (match_operand:DI 0 "register_operand" "+r")
++ (plus:DI (mult:DI
++ (zero_extend:DI (match_operand:SI 1 "register_operand" "%r"))
++ (zero_extend:DI (match_operand:SI 2 "register_operand" "r")))
++ (match_dup 0)))]
++ ""
++ "macu.d %0, %1, %2"
++ [(set_attr "type" "macww_d")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++
++
++;; Try to avoid Write-After-Write hazards for mul operations
++;; if it can be done
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (mult:SI
++ (sign_extend:SI (match_operand 1 "general_operand" ""))
++ (sign_extend:SI (match_operand 2 "general_operand" ""))))
++ (set (match_dup 0)
++ (match_operator:SI 3 "alu_operator" [(match_dup 0)
++ (match_operand 4 "general_operand" "")]))]
++ "peep2_reg_dead_p(1, operands[2])"
++ [(set (match_dup 5)
++ (mult:SI
++ (sign_extend:SI (match_dup 1))
++ (sign_extend:SI (match_dup 2))))
++ (set (match_dup 0)
++ (match_op_dup 3 [(match_dup 5)
++ (match_dup 4)]))]
++ "{operands[5] = gen_rtx_REG(SImode, REGNO(operands[2]));}"
++ )
++
++
++
++;;=============================================================================
++;; DSP instructions
++;;=============================================================================
++(define_insn "mulsathh_h"
++ [(set (match_operand:HI 0 "register_operand" "=r")
++ (ss_truncate:HI (ashiftrt:SI (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 15))))]
++ "TARGET_DSP"
++ "mulsathh.h\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulhh")])
++
++(define_insn "mulsatrndhh_h"
++ [(set (match_operand:HI 0 "register_operand" "=r")
++ (ss_truncate:HI (ashiftrt:SI
++ (plus:SI (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 1073741824))
++ (const_int 15))))]
++ "TARGET_DSP"
++ "mulsatrndhh.h\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulhh")])
++
++(define_insn "mulsathh_w"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ss_truncate:SI (ashift:DI (mult:DI (sign_extend:DI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 1))))]
++ "TARGET_DSP"
++ "mulsathh.w\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulhh")])
++
++(define_insn "mulsatwh_w"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ss_truncate:SI (ashiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 15))))]
++ "TARGET_DSP"
++ "mulsatwh.w\t%0, %1, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++(define_insn "mulsatrndwh_w"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ss_truncate:SI (ashiftrt:DI (plus:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 1073741824))
++ (const_int 15))))]
++ "TARGET_DSP"
++ "mulsatrndwh.w\t%0, %1, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++(define_insn "macsathh_w"
++ [(set (match_operand:SI 0 "register_operand" "+r")
++ (plus:SI (match_dup 0)
++ (ss_truncate:SI (ashift:DI (mult:DI (sign_extend:DI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 1)))))]
++ "TARGET_DSP"
++ "macsathh.w\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulhh")])
++
++
++(define_insn "mulwh_d"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (ashift:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 16)))]
++ "TARGET_DSP"
++ "mulwh.d\t%0, %1, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++
++(define_insn "mulnwh_d"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (ashift:DI (mult:DI (not:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r")))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 16)))]
++ "TARGET_DSP"
++ "mulnwh.d\t%0, %1, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++(define_insn "macwh_d"
++ [(set (match_operand:DI 0 "register_operand" "+r")
++ (plus:DI (match_dup 0)
++ (ashift:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))
++ (const_int 16))))]
++ "TARGET_DSP"
++ "macwh.d\t%0, %1, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++(define_insn "machh_d"
++ [(set (match_operand:DI 0 "register_operand" "+r")
++ (plus:DI (match_dup 0)
++ (mult:DI (sign_extend:DI (match_operand:HI 1 "register_operand" "%r"))
++ (sign_extend:DI (match_operand:HI 2 "register_operand" "r")))))]
++ "TARGET_DSP"
++ "machh.d\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "mulwh")])
++
++(define_insn "satadd_w"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ss_plus:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))]
++ "TARGET_DSP"
++ "satadd.w\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "alu_sat")])
++
++(define_insn "satsub_w"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ss_minus:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))]
++ "TARGET_DSP"
++ "satsub.w\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "alu_sat")])
++
++(define_insn "satadd_h"
++ [(set (match_operand:HI 0 "register_operand" "=r")
++ (ss_plus:HI (match_operand:HI 1 "register_operand" "r")
++ (match_operand:HI 2 "register_operand" "r")))]
++ "TARGET_DSP"
++ "satadd.h\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "alu_sat")])
++
++(define_insn "satsub_h"
++ [(set (match_operand:HI 0 "register_operand" "=r")
++ (ss_minus:HI (match_operand:HI 1 "register_operand" "r")
++ (match_operand:HI 2 "register_operand" "r")))]
++ "TARGET_DSP"
++ "satsub.h\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")
++ (set_attr "type" "alu_sat")])
++
++
++;;=============================================================================
++;; smin
++;;-----------------------------------------------------------------------------
++;; Set reg0 to the smallest value of reg1 and reg2. It is used for signed
++;; values in the registers.
++;;=============================================================================
++(define_insn "sminsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (smin:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))]
++ ""
++ "min %0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++;;=============================================================================
++;; smax
++;;-----------------------------------------------------------------------------
++;; Set reg0 to the largest value of reg1 and reg2. It is used for signed
++;; values in the registers.
++;;=============================================================================
++(define_insn "smaxsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (smax:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))]
++ ""
++ "max %0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++
++;;=============================================================================
++;; Logical operations
++;;-----------------------------------------------------------------------------
++
++;; Split up simple DImode logical operations. Simply perform the logical
++;; operation on the upper and lower halves of the registers.
++(define_split
++ [(set (match_operand:DI 0 "register_operand" "")
++ (match_operator:DI 6 "logical_binary_operator"
++ [(match_operand:DI 1 "register_operand" "")
++ (match_operand:DI 2 "register_operand" "")]))]
++ "reload_completed"
++ [(set (match_dup 0) (match_op_dup:SI 6 [(match_dup 1) (match_dup 2)]))
++ (set (match_dup 3) (match_op_dup:SI 6 [(match_dup 4) (match_dup 5)]))]
++ "
++ {
++ operands[3] = gen_highpart (SImode, operands[0]);
++ operands[0] = gen_lowpart (SImode, operands[0]);
++ operands[4] = gen_highpart (SImode, operands[1]);
++ operands[1] = gen_lowpart (SImode, operands[1]);
++ operands[5] = gen_highpart (SImode, operands[2]);
++ operands[2] = gen_lowpart (SImode, operands[2]);
++ }"
++)
++
++;;=============================================================================
++;; Logical operations with shifted operand
++;;=============================================================================
++(define_insn "<code>si_lshift"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (logical:SI (match_operator:SI 4 "logical_shift_operator"
++ [(match_operand:SI 2 "register_operand" "r")
++ (match_operand:SI 3 "immediate_operand" "Ku05")])
++ (match_operand:SI 1 "register_operand" "r")))]
++ ""
++ {
++ if ( GET_CODE(operands[4]) == ASHIFT )
++ return "<logical_insn>\t%0, %1, %2 << %3";
++ else
++ return "<logical_insn>\t%0, %1, %2 >> %3";
++ }
++
++ [(set_attr "cc" "set_z")]
++)
++
++
++;;************************************************
++;; Peepholes for detecting logical operantions
++;; with shifted operands
++;;************************************************
++
++(define_peephole
++ [(set (match_operand:SI 3 "register_operand" "")
++ (match_operator:SI 5 "logical_shift_operator"
++ [(match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")]))
++ (set (match_operand:SI 0 "register_operand" "")
++ (logical:SI (match_operand:SI 4 "register_operand" "")
++ (match_dup 3)))]
++ "(dead_or_set_p(insn, operands[3])) || (REGNO(operands[3]) == REGNO(operands[0]))"
++ {
++ if ( GET_CODE(operands[5]) == ASHIFT )
++ return "<logical_insn>\t%0, %4, %1 << %2";
++ else
++ return "<logical_insn>\t%0, %4, %1 >> %2";
++ }
++ [(set_attr "cc" "set_z")]
++ )
++
++(define_peephole
++ [(set (match_operand:SI 3 "register_operand" "")
++ (match_operator:SI 5 "logical_shift_operator"
++ [(match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")]))
++ (set (match_operand:SI 0 "register_operand" "")
++ (logical:SI (match_dup 3)
++ (match_operand:SI 4 "register_operand" "")))]
++ "(dead_or_set_p(insn, operands[3])) || (REGNO(operands[3]) == REGNO(operands[0]))"
++ {
++ if ( GET_CODE(operands[5]) == ASHIFT )
++ return "<logical_insn>\t%0, %4, %1 << %2";
++ else
++ return "<logical_insn>\t%0, %4, %1 >> %2";
++ }
++ [(set_attr "cc" "set_z")]
++ )
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (match_operator:SI 5 "logical_shift_operator"
++ [(match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")]))
++ (set (match_operand:SI 3 "register_operand" "")
++ (logical:SI (match_operand:SI 4 "register_operand" "")
++ (match_dup 0)))]
++ "(peep2_reg_dead_p(2, operands[0])) || (REGNO(operands[3]) == REGNO(operands[0]))"
++
++ [(set (match_dup 3)
++ (logical:SI (match_op_dup:SI 5 [(match_dup 1) (match_dup 2)])
++ (match_dup 4)))]
++
++ ""
++)
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (match_operator:SI 5 "logical_shift_operator"
++ [(match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")]))
++ (set (match_operand:SI 3 "register_operand" "")
++ (logical:SI (match_dup 0)
++ (match_operand:SI 4 "register_operand" "")))]
++ "(peep2_reg_dead_p(2, operands[0])) || (REGNO(operands[3]) == REGNO(operands[0]))"
++
++ [(set (match_dup 3)
++ (logical:SI (match_op_dup:SI 5 [(match_dup 1) (match_dup 2)])
++ (match_dup 4)))]
++
++ ""
++)
++
++
++;;=============================================================================
++;; and
++;;-----------------------------------------------------------------------------
++;; Store the result after a bitwise logical-and between reg0 and reg2 in reg0.
++;;=============================================================================
++
++(define_insn "andnsi"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (and:SI (match_operand:SI 1 "register_operand" "0")
++ (not:SI (match_operand:SI 2 "register_operand" "r"))))]
++ ""
++ "andn %0, %2"
++ [(set_attr "cc" "set_z")
++ (set_attr "length" "2")]
++)
++
++
++
++
++(define_insn "andsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r, r, r, r")
++ (and:SI (match_operand:SI 1 "register_operand" "%0, r, 0, r")
++ (match_operand:SI 2 "nonmemory_operand" "r, M, i, r")))]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "and\t%0, %2";
++ case 1:
++ {
++ int i, first_set = -1;
++ /* Search for first bit set in mask */
++ for ( i = 31; i >= 0; --i )
++ if ( INTVAL(operands[2]) & (1 << i) ){
++ first_set = i;
++ break;
++ }
++ operands[2] = gen_rtx_CONST_INT(SImode, first_set + 1);
++ return "bfextu\t%0, %1, 0, %2";
++ }
++ case 2:
++ if ( one_bit_cleared_operand(operands[2], VOIDmode) ){
++ int bitpos;
++ for ( bitpos = 0; bitpos < 32; bitpos++ )
++ if ( !(INTVAL(operands[2]) & (1 << bitpos)) )
++ break;
++ operands[2] = gen_rtx_CONST_INT(SImode, bitpos);
++ return "cbr\t%0, %2";
++ } else if ( (INTVAL(operands[2]) >= 0) &&
++ (INTVAL(operands[2]) <= 65535) )
++ return "andl\t%0, %2, COH";
++ else if ( (INTVAL(operands[2]) < 0) &&
++ (INTVAL(operands[2]) >= -65536 ) )
++ return "andl\t%0, lo(%2)";
++ else if ( ((INTVAL(operands[2]) & 0xffff) == 0xffff) )
++ return "andh\t%0, hi(%2)";
++ else if ( ((INTVAL(operands[2]) & 0xffff) == 0x0) )
++ return "andh\t%0, hi(%2), COH";
++ else
++ return "andh\t%0, hi(%2)\;andl\t%0, lo(%2)";
++ case 3:
++ return "and\t%0, %1, %2";
++ default:
++ abort();
++ }
++ }
++
++ [(set_attr "length" "2,4,8,4")
++ (set_attr "cc" "set_z")])
++
++
++(define_insn "anddi3"
++ [(set (match_operand:DI 0 "register_operand" "=&r,&r")
++ (and:DI (match_operand:DI 1 "register_operand" "%0,r")
++ (match_operand:DI 2 "register_operand" "r,r")))]
++ ""
++ "#"
++ [(set_attr "length" "8")
++ (set_attr "cc" "clobber")]
++)
++
++;;=============================================================================
++;; or
++;;-----------------------------------------------------------------------------
++;; Store the result after a bitwise inclusive-or between reg0 and reg2 in reg0.
++;;=============================================================================
++
++(define_insn "iorsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (ior:SI (match_operand:SI 1 "register_operand" "%0,0,r" )
++ (match_operand:SI 2 "nonmemory_operand" "r ,i,r")))]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "or\t%0, %2";
++ case 1:
++ if ( one_bit_set_operand(operands[2], VOIDmode) ){
++ int bitpos;
++ for (bitpos = 0; bitpos < 32; bitpos++)
++ if (INTVAL(operands[2]) & (1 << bitpos))
++ break;
++ operands[2] = gen_rtx_CONST_INT( SImode, bitpos);
++ return "sbr\t%0, %2";
++ } else if ( (INTVAL(operands[2]) >= 0) &&
++ (INTVAL(operands[2]) <= 65535) )
++ return "orl\t%0, %2";
++ else if ( ((INTVAL(operands[2]) & 0xffff) == 0x0) )
++ return "orh\t%0, hi(%2)";
++ else
++ return "orh\t%0, hi(%2)\;orl\t%0, lo(%2)";
++ case 2:
++ return "or\t%0, %1, %2";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,8,4")
++ (set_attr "cc" "set_z")])
++
++
++;(define_insn "iorsi3"
++; [(set (match_operand:SI 0 "register_operand" "=r, r, r")
++; (ior:SI (match_operand:SI 1 "avr32_logical_insn_operand" "r, r, rA" )
++; (match_operand:SI 2 "register_operand" "0, i, r")))]
++; ""
++; {
++; switch (which_alternative){
++; case 0:
++; return "or %0, %2";
++; case 1:
++; if ( one_bit_set_operand(operands[2], VOIDmode) ){
++; int i, bitpos;
++; for ( i = 0; i < 32; i++ )
++; if ( INTVAL(operands[2]) & (1 << i) ){
++; bitpos = i;
++; break;
++; }
++; operands[2] = gen_rtx_CONST_INT( SImode, bitpos);
++; return "sbr %0, %2";
++; } else if ( (INTVAL(operands[2]) >= 0) &&
++; (INTVAL(operands[2]) <= 65535) )
++; return "orl %0, %2";
++; else if ( ((INTVAL(operands[2]) & 0xffff) == 0x0) )
++; return "orh %0, hi(%2)";
++; else
++; return "orh %0, hi(%2)\;orl %0, lo(%2)";
++; case 2:
++; return "or %0, %2, %1";
++; }
++; }
++; [(set_attr "length" "2,8,4")
++; (set_attr "cc" "set_z")])
++
++(define_insn "iordi3"
++ [(set (match_operand:DI 0 "register_operand" "=&r,&r")
++ (ior:DI (match_operand:DI 1 "register_operand" "%0,r")
++ (match_operand:DI 2 "register_operand" "r,r")))]
++ ""
++ "#"
++ [(set_attr "length" "8")
++ (set_attr "cc" "clobber")]
++)
++
++;;=============================================================================
++;; xor bytes
++;;-----------------------------------------------------------------------------
++;; Store the result after a bitwise exclusive-or between reg0 and reg2 in reg0.
++;;=============================================================================
++
++(define_insn "xorsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (xor:SI (match_operand:SI 1 "register_operand" "0,0,r")
++ (match_operand:SI 2 "nonmemory_operand" "r,i,r")))]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "eor %0, %2";
++ case 1:
++ if ( (INTVAL(operands[2]) >= 0) &&
++ (INTVAL(operands[2]) <= 65535) )
++ return "eorl %0, %2";
++ else if ( ((INTVAL(operands[2]) & 0xffff) == 0x0) )
++ return "eorh %0, hi(%2)";
++ else
++ return "eorh %0, hi(%2)\;eorl %0, lo(%2)";
++ case 2:
++ return "eor %0, %1, %2";
++ default:
++ abort();
++ }
++ }
++
++ [(set_attr "length" "2,8,4")
++ (set_attr "cc" "set_z")])
++
++(define_insn "xordi3"
++ [(set (match_operand:DI 0 "register_operand" "=&r,&r")
++ (xor:DI (match_operand:DI 1 "register_operand" "%0,r")
++ (match_operand:DI 2 "register_operand" "r,r")))]
++ ""
++ "#"
++ [(set_attr "length" "8")
++ (set_attr "cc" "clobber")]
++)
++
++;;=============================================================================
++;; divmod
++;;-----------------------------------------------------------------------------
++;; Signed division that produces both a quotient and a remainder.
++;;=============================================================================
++(define_expand "divmodsi4"
++ [(parallel [
++ (parallel [
++ (set (match_operand:SI 0 "register_operand" "=r")
++ (div:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))
++ (set (match_operand:SI 3 "register_operand" "=r")
++ (mod:SI (match_dup 1)
++ (match_dup 2)))])
++ (use (match_dup 4))])]
++ ""
++ {
++ if (! no_new_pseudos) {
++ operands[4] = gen_reg_rtx (DImode);
++
++ emit_insn(gen_divmodsi4_internal(operands[4],operands[1],operands[2]));
++ emit_move_insn(operands[0], gen_rtx_SUBREG( SImode, operands[4], 4));
++ emit_move_insn(operands[3], gen_rtx_SUBREG( SImode, operands[4], 0));
++
++ DONE;
++ } else {
++ FAIL;
++ }
++
++ })
++
++
++(define_insn "divmodsi4_internal"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (unspec:DI [(match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")]
++ UNSPEC_DIVMODSI4_INTERNAL))]
++ ""
++ "divs %0, %1, %2"
++ [(set_attr "type" "div")
++ (set_attr "cc" "none")])
++
++
++;;=============================================================================
++;; udivmod
++;;-----------------------------------------------------------------------------
++;; Unsigned division that produces both a quotient and a remainder.
++;;=============================================================================
++(define_expand "udivmodsi4"
++ [(parallel [
++ (parallel [
++ (set (match_operand:SI 0 "register_operand" "=r")
++ (udiv:SI (match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")))
++ (set (match_operand:SI 3 "register_operand" "=r")
++ (umod:SI (match_dup 1)
++ (match_dup 2)))])
++ (use (match_dup 4))])]
++ ""
++ {
++ if (! no_new_pseudos) {
++ operands[4] = gen_reg_rtx (DImode);
++
++ emit_insn(gen_udivmodsi4_internal(operands[4],operands[1],operands[2]));
++ emit_move_insn(operands[0], gen_rtx_SUBREG( SImode, operands[4], 4));
++ emit_move_insn(operands[3], gen_rtx_SUBREG( SImode, operands[4], 0));
++
++ DONE;
++ } else {
++ FAIL;
++ }
++ })
++
++(define_insn "udivmodsi4_internal"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (unspec:DI [(match_operand:SI 1 "register_operand" "r")
++ (match_operand:SI 2 "register_operand" "r")]
++ UNSPEC_UDIVMODSI4_INTERNAL))]
++ ""
++ "divu %0, %1, %2"
++ [(set_attr "type" "div")
++ (set_attr "cc" "none")])
++
++
++;;=============================================================================
++;; Arithmetic-shift left
++;;-----------------------------------------------------------------------------
++;; Arithmetic-shift reg0 left by reg2 or immediate value.
++;;=============================================================================
++
++(define_insn "ashlsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (ashift:SI (match_operand:SI 1 "register_operand" "r,0,r")
++ (match_operand:SI 2 "nonmemory_operand" "r,Ku05,Ku05")))]
++ ""
++ "@
++ lsl %0, %1, %2
++ lsl %0, %2
++ lsl %0, %1, %2"
++ [(set_attr "length" "4,2,4")
++ (set_attr "cc" "set_ncz")])
++
++;;=============================================================================
++;; Arithmetic-shift right
++;;-----------------------------------------------------------------------------
++;; Arithmetic-shift reg0 right by an immediate value.
++;;=============================================================================
++
++(define_insn "ashrsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (ashiftrt:SI (match_operand:SI 1 "register_operand" "r,0,r")
++ (match_operand:SI 2 "nonmemory_operand" "r,Ku05,Ku05")))]
++ ""
++ "@
++ asr %0, %1, %2
++ asr %0, %2
++ asr %0, %1, %2"
++ [(set_attr "length" "4,2,4")
++ (set_attr "cc" "set_ncz")])
++
++;;=============================================================================
++;; Logical shift right
++;;-----------------------------------------------------------------------------
++;; Logical shift reg0 right by an immediate value.
++;;=============================================================================
++
++(define_insn "lshrsi3"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
++ (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,0,r")
++ (match_operand:SI 2 "nonmemory_operand" "r,Ku05,Ku05")))]
++ ""
++ "@
++ lsr %0, %1, %2
++ lsr %0, %2
++ lsr %0, %1, %2"
++ [(set_attr "length" "4,2,4")
++ (set_attr "cc" "set_ncz")])
++
++
++;;=============================================================================
++;; neg
++;;-----------------------------------------------------------------------------
++;; Negate operand 1 and store the result in operand 0.
++;;=============================================================================
++(define_insn "negsi2"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (neg:SI (match_operand:SI 1 "register_operand" "0")))]
++ ""
++ "neg %0"
++ [(set_attr "length" "2")
++ (set_attr "cc" "set_vncz")])
++
++;;=============================================================================
++;; abs
++;;-----------------------------------------------------------------------------
++;; Store the absolute value of operand 1 into operand 0.
++;;=============================================================================
++(define_insn "abssi2"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (abs:SI (match_operand:SI 1 "register_operand" "0")))]
++ ""
++ "abs %0"
++ [(set_attr "length" "2")
++ (set_attr "cc" "set_z")])
++
++
++;;=============================================================================
++;; one_cmpl
++;;-----------------------------------------------------------------------------
++;; Store the bitwise-complement of operand 1 into operand 0.
++;;=============================================================================
++
++(define_insn "one_cmplsi2"
++ [(set (match_operand:SI 0 "register_operand" "=r,r")
++ (not:SI (match_operand:SI 1 "register_operand" "r,0")))]
++ ""
++ "@
++ rsub %0, %1, -1
++ com %0"
++ [(set_attr "length" "4,2")
++ (set_attr "cc" "set_z")])
++
++
++;;=============================================================================
++;; Bit load
++;;-----------------------------------------------------------------------------
++;; Load a bit into Z and C flags
++;;=============================================================================
++(define_insn "bldsi"
++ [(set (cc0)
++ (and:SI (match_operand:SI 0 "register_operand" "r")
++ (match_operand:SI 1 "one_bit_set_operand" "i")))]
++ ""
++ "bld\t%0, %p1"
++ [(set_attr "length" "4")
++ (set_attr "cc" "bld")]
++ )
++
++
++;;=============================================================================
++;; Compare
++;;-----------------------------------------------------------------------------
++;; Compare reg0 with reg1 or an immediate value.
++;;=============================================================================
++
++(define_expand "cmpqi"
++ [(set (cc0)
++ (compare:QI
++ (match_operand:QI 0 "general_operand" "")
++ (match_operand:QI 1 "general_operand" "")))]
++ ""
++ "{
++
++ if ( GET_CODE(operands[0]) != REG
++ && GET_CODE(operands[0]) != SUBREG)
++ operands[0] = force_reg(QImode, operands[0]);
++
++
++ if ( GET_CODE(operands[1]) != REG
++ && GET_CODE(operands[1]) != SUBREG )
++ operands[1] = force_reg(QImode, operands[1]);
++
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++ emit_insn(gen_cmpqi_internal(operands[0], operands[1]));
++ DONE;
++ }"
++)
++
++(define_insn "cmpqi_internal"
++ [(set (cc0)
++ (compare:QI
++ (match_operand:QI 0 "register_operand" "r")
++ (match_operand:QI 1 "register_operand" "r")))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), QImode, operands[0], operands[1]));
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "cc" "compare")])
++
++(define_expand "cmphi"
++ [(set (cc0)
++ (compare:HI
++ (match_operand:HI 0 "general_operand" "")
++ (match_operand:HI 1 "general_operand" "")))]
++ ""
++ "{
++ if ( GET_CODE(operands[0]) != REG
++ && GET_CODE(operands[0]) != SUBREG )
++ operands[0] = force_reg(HImode, operands[0]);
++
++
++ if ( GET_CODE(operands[1]) != REG
++ && GET_CODE(operands[1]) != SUBREG)
++ operands[1] = force_reg(HImode, operands[1]);
++
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++ emit_insn(gen_cmphi_internal(operands[0], operands[1]));
++ DONE;
++ }"
++)
++
++
++(define_insn "cmphi_internal"
++ [(set (cc0)
++ (compare:HI
++ (match_operand:HI 0 "register_operand" "r")
++ (match_operand:HI 1 "register_operand" "r")))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), HImode, operands[0], operands[1]));
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "cc" "compare")])
++
++
++(define_expand "cmpsi"
++ [(set (cc0)
++ (compare:SI
++ (match_operand:SI 0 "general_operand" "")
++ (match_operand:SI 1 "general_operand" "")))]
++ ""
++ "{
++ if ( GET_CODE(operands[0]) != REG
++ && GET_CODE(operands[0]) != SUBREG )
++ operands[0] = force_reg(SImode, operands[0]);
++
++ if ( GET_CODE(operands[1]) != REG
++ && GET_CODE(operands[1]) != SUBREG
++ && GET_CODE(operands[1]) != CONST_INT )
++ operands[1] = force_reg(SImode, operands[1]);
++
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++
++
++ emit_insn(gen_cmpsi_internal(operands[0], operands[1]));
++ DONE;
++ }"
++)
++
++
++
++
++(define_insn "cmpsi_internal"
++ [(set (cc0)
++ (compare:SI
++ (match_operand:SI 0 "register_operand" "r, r, r")
++ (match_operand:SI 1 "nonmemory_operand" "r, Ks06, Ks21")))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), SImode, operands[0], operands[1]));
++ return "";
++ }
++
++ [(set_attr "length" "2,2,4")
++ (set_attr "cc" "compare")])
++
++
++(define_expand "cmpdi"
++ [(set (cc0)
++ (compare:DI
++ (match_operand:DI 0 "register_operand" "")
++ (match_operand:DI 1 "register_operand" "")))]
++ ""
++ {
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++ emit_insn(gen_cmpdi_internal(operands[0], operands[1]));
++ DONE;
++ }
++)
++
++(define_insn "cmpdi_internal"
++ [(set (cc0)
++ (compare:DI
++ (match_operand:DI 0 "register_operand" "r")
++ (match_operand:DI 1 "register_operand" "r")))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), DImode, operands[0], operands[1]));
++ return "";
++ }
++
++ [(set_attr "length" "6")
++ (set_attr "type" "alu2")
++ (set_attr "cc" "compare")])
++
++
++
++;;=============================================================================
++;; Test if zero
++;;-----------------------------------------------------------------------------
++;; Compare reg against zero and set the condition codes.
++;;=============================================================================
++
++
++(define_expand "tstsi"
++ [(set (cc0)
++ (match_operand:SI 0 "register_operand" ""))]
++ ""
++ {
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = gen_rtx_CONST_INT(SImode, 0);
++ emit_insn(gen_tstsi_internal(operands[0]));
++ DONE;
++ }
++)
++
++(define_insn "tstsi_internal"
++ [(set (cc0)
++ (match_operand:SI 0 "register_operand" "r"))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), SImode, operands[0], const0_rtx));
++
++ return "";
++ }
++ [(set_attr "length" "2")
++ (set_attr "cc" "compare")])
++
++
++(define_expand "tstdi"
++ [(set (cc0)
++ (match_operand:DI 0 "register_operand" ""))]
++ ""
++ {
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = gen_rtx_CONST_INT(DImode, 0);
++ emit_insn(gen_tstdi_internal(operands[0]));
++ DONE;
++ }
++)
++
++(define_insn "tstdi_internal"
++ [(set (cc0)
++ (match_operand:DI 0 "register_operand" "r"))]
++ ""
++ {
++ set_next_insn_cond(insn,
++ avr32_output_cmp(get_next_insn_cond(insn), DImode, operands[0], const0_rtx));
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "type" "alu2")
++ (set_attr "cc" "compare")])
++
++
++
++;;=============================================================================
++;; Convert operands
++;;-----------------------------------------------------------------------------
++;;
++;;=============================================================================
++(define_insn "truncdisi2"
++ [(set (match_operand:SI 0 "general_operand" "")
++ (truncate:SI (match_operand:DI 1 "general_operand" "")))]
++ ""
++ "truncdisi2")
++
++;;=============================================================================
++;; Extend
++;;-----------------------------------------------------------------------------
++;;
++;;=============================================================================
++
++
++(define_insn "extendhisi2"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
++ (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,r,<RKu00>,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "casts.h\t%0";
++ case 1:
++ return "bfexts\t%0, %1, 0, 16";
++ case 2:
++ case 3:
++ return "ld.sh\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz,set_ncz,none,none")
++ (set_attr "type" "alu,alu,load_rm,load_rm")])
++
++(define_insn "extendqisi2"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
++ (sign_extend:SI (match_operand:QI 1 "extendqi_operand" "0,r,RKu00,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "casts.b\t%0";
++ case 1:
++ return "bfexts\t%0, %1, 0, 8";
++ case 2:
++ case 3:
++ return "ld.sb\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz,set_ncz,none,none")
++ (set_attr "type" "alu,alu,load_rm,load_rm")])
++
++(define_insn "extendqihi2"
++ [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
++ (sign_extend:HI (match_operand:QI 1 "extendqi_operand" "0,r,RKu00,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "casts.b\t%0";
++ case 1:
++ return "bfexts\t%0, %1, 0, 8";
++ case 2:
++ case 3:
++ return "ld.sb\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz,set_ncz,none,none")
++ (set_attr "type" "alu,alu,load_rm,load_rm")])
++
++
++;;=============================================================================
++;; Zero-extend
++;;-----------------------------------------------------------------------------
++;;
++;;=============================================================================
++
++(define_insn "zero_extendhisi2"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
++ (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,r,<RKu00>,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "castu.h\t%0";
++ case 1:
++ return "bfextu\t%0, %1, 0, 16";
++ case 2:
++ case 3:
++ return "ld.uh\t%0, %1";
++ default:
++ abort();
++ }
++ }
++
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz,set_ncz,none,none")
++ (set_attr "type" "alu,alu,load_rm,load_rm")])
++
++(define_insn "zero_extendqisi2"
++ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
++ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "0,r,<RKu00>,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "castu.b\t%0";
++ case 1:
++ return "bfextu\t%0, %1, 0, 8";
++ case 2:
++ case 3:
++ return "ld.ub\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz, set_ncz, none, none")
++ (set_attr "type" "alu, alu, load_rm, load_rm")])
++
++(define_insn "zero_extendqihi2"
++ [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
++ (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0,r,<RKu00>,m")))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ return "castu.b\t%0";
++ case 1:
++ return "bfextu\t%0, %1, 0, 8";
++ case 2:
++ case 3:
++ return "ld.ub\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,2,4")
++ (set_attr "cc" "set_ncz, set_ncz, none, none")
++ (set_attr "type" "alu, alu, load_rm, load_rm")])
++
++
++
++;;=============================================================================
++;; Conditional set register
++;; sr{cond4} rd
++;;-----------------------------------------------------------------------------
++
++;;Because of the same issue as with conditional moves and adds we must
++;;not separate the compare instrcution from the scc instruction as
++;;they might be sheduled "badly".
++
++(define_expand "s<code>"
++ [(set (match_operand:SI 0 "register_operand" "")
++ (any_cond (cc0)
++ (const_int 0)))]
++ ""
++ {
++ if ( !avr32_expand_scc(<CODE>, operands) ){
++ FAIL;
++ }
++ DONE;
++ }
++ )
++
++
++(define_insn "comparesi_and_set"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (match_operator 1 "avr32_comparison_operator"
++ [ (compare (match_operand:SI 2 "register_operand" "r")
++ (match_operand:SI 3 "general_operand" "rKs06Ks21"))
++ (const_int 0)]))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[2]), operands[2], operands[3]);
++ return "sr%1\t%0";
++ }
++ [(set_attr "length" "6")
++ (set_attr "cc" "clobber")])
++
++(define_insn "comparehi_and_set"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (match_operator 1 "avr32_comparison_operator"
++ [ (compare (match_operand:HI 2 "register_operand" "r")
++ (match_operand:HI 3 "register_operand" "r"))
++ (const_int 0)]))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[2]), operands[2], operands[3]);
++ return "sr%1\t%0";
++ }
++ [(set_attr "length" "6")
++ (set_attr "cc" "clobber")])
++
++(define_insn "compareqi_and_set"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (match_operator 1 "avr32_comparison_operator"
++ [ (compare (match_operand:QI 2 "register_operand" "r")
++ (match_operand:QI 3 "register_operand" "r"))
++ (const_int 0)]))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[2]), operands[2], operands[3]);
++ return "sr%1\t%0";
++ }
++ [(set_attr "length" "6")
++ (set_attr "cc" "clobber")])
++
++(define_insn "*comparedi_and_set"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (match_operator 1 "avr32_comparison_operator"
++ [ (compare (match_operand:DI 2 "register_operand" "r")
++ (match_operand:DI 3 "register_operand" "r"))
++ (const_int 0)]))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[2]), operands[2], operands[3]);
++ return "sr%1\t%0";
++ }
++ [(set_attr "length" "6")
++ (set_attr "cc" "clobber")])
++
++(define_insn "*tstdi_and_set"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (match_operator 1 "avr32_comparison_operator"
++ [ (compare (match_operand:DI 2 "register_operand" "r")
++ (const_int 0))
++ (const_int 0)]))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[2]), operands[2], const0_rtx);
++ return "sr%1\t%0";
++ }
++ [(set_attr "length" "6")
++ (set_attr "cc" "clobber")])
++
++
++
++;;=============================================================================
++;; Conditional branch
++;;-----------------------------------------------------------------------------
++;; Branch to label if the specified condition codes are set.
++;;=============================================================================
++; branch if negative
++(define_insn "bmi"
++ [(set (pc)
++ (if_then_else (unspec:CC [(cc0) (const_int 0)] UNSPEC_COND_MI)
++ (label_ref (match_operand 0 "" ""))
++ (pc)))]
++ ""
++ "brmi %0"
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++(define_insn "*bmi-reverse"
++ [(set (pc)
++ (if_then_else (unspec:CC [(cc0) (const_int 0)] UNSPEC_COND_MI)
++ (pc)
++ (label_ref (match_operand 0 "" ""))))]
++ ""
++ "brpl %0"
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++; branch if positive
++(define_insn "bpl"
++ [(set (pc)
++ (if_then_else (unspec:CC [(cc0) (const_int 0)] UNSPEC_COND_PL)
++ (label_ref (match_operand 0 "" ""))
++ (pc)))]
++ ""
++ "brpl %0"
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++(define_insn "*bpl-reverse"
++ [(set (pc)
++ (if_then_else (unspec:CC [(cc0) (const_int 0)] UNSPEC_COND_PL)
++ (pc)
++ (label_ref (match_operand 0 "" ""))))]
++ ""
++ "brmi %0"
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++; branch if equal
++(define_insn "b<code>"
++ [(set (pc)
++ (if_then_else (any_cond:CC (cc0)
++ (const_int 0))
++ (label_ref (match_operand 0 "" ""))
++ (pc)))]
++ ""
++ "br<cond> %0 "
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++
++(define_insn "*b<code>-reverse"
++ [(set (pc)
++ (if_then_else (any_cond:CC (cc0)
++ (const_int 0))
++ (pc)
++ (label_ref (match_operand 0 "" ""))))]
++ ""
++ "br<invcond> %0 "
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
++ (le (minus (pc) (match_dup 0)) (const_int 256)))
++ (const_int 2)] ; use compact branch
++ (const_int 4))) ; use extended branch
++ (set_attr "cc" "none")])
++
++
++
++;=============================================================================
++; Conditional Add/Subtract
++;-----------------------------------------------------------------------------
++; sub{cond4} Rd, imm
++;=============================================================================
++
++
++(define_expand "add<mode>cc"
++ [(set (match_operand:ADDCC 0 "register_operand" "")
++ (if_then_else:ADDCC (match_operand 1 "avr32_comparison_operator" "")
++ (match_operand:ADDCC 2 "register_immediate_operand" "")
++ (match_operand:ADDCC 3 "register_immediate_operand" "")))]
++ ""
++ {
++ if ( avr32_expand_addcc(<MODE>mode, operands ) )
++ DONE;
++ else
++ FAIL;
++ }
++ )
++
++
++(define_insn "add<ADDCC:mode>cc_cmp<CMP:mode>"
++ [(set (match_operand:ADDCC 0 "register_operand" "=&r")
++ (unspec:ADDCC [(match_operand 1 "avr32_comparison_operator" "")
++ (match_operand:ADDCC 2 "register_operand" "0")
++ (match_operand:ADDCC 3 "immediate_operand" "Ks08")
++ (match_operand:CMP 4 "register_operand" "r")
++ (match_operand:CMP 5 "<CMP:cmp_predicate>" "<CMP:cmp_constraint>")
++ ]
++ UNSPEC_ADDSICC ))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[4]), operands[4], operands[5]);
++
++ return "sub%1\t%0, %3";
++ }
++ [(set_attr "length" "8")
++ (set_attr "cc" "clobber")])
++
++
++;=============================================================================
++; Conditional Move
++;-----------------------------------------------------------------------------
++; mov{cond4} Rd, (Rs/imm)
++;=============================================================================
++(define_expand "mov<mode>cc"
++ [(set (match_operand:ADDCC 0 "register_operand" "")
++ (if_then_else:ADDCC (match_operand 1 "avr32_comparison_operator" "")
++ (match_operand:ADDCC 2 "register_immediate_operand" "")
++ (match_operand:ADDCC 3 "register_immediate_operand" "")))]
++ ""
++ {
++ if ( avr32_expand_movcc(<MODE>mode, operands ) )
++ DONE;
++ else
++ FAIL;
++ }
++ )
++
++(define_insn "mov<MOVCC:mode>cc_cmp<CMP:mode>"
++ [(set (match_operand:MOVCC 0 "register_operand" "=r,r,r")
++ (unspec:MOVCC [(match_operand 1 "avr32_comparison_operator" "")
++ (match_operand:MOVCC 2 "register_immediate_operand" "0,rKs08,rKs08")
++ (match_operand:MOVCC 3 "register_immediate_operand" "rKs08,0,rKs08")
++ (match_operand:CMP 4 "register_operand" "r, r, r")
++ (match_operand:CMP 5 "<CMP:cmp_predicate>" "<CMP:cmp_constraint>, <CMP:cmp_constraint>, <CMP:cmp_constraint>")
++ ]
++ UNSPEC_MOVSICC ))]
++ ""
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[4]), operands[4], operands[5]);
++
++ switch( which_alternative ){
++ case 0:
++ return "mov%i1 %0, %3";
++ case 1:
++ return "mov%1 %0, %2";
++ case 2:
++ return "mov%1 %0, %2\;mov%i1 %0, %3";
++ default:
++ abort();
++ }
++
++
++ }
++ [(set_attr "length" "8,8,12")
++ (set_attr "cc" "clobber")])
++
++
++;;=============================================================================
++;; jump
++;;-----------------------------------------------------------------------------
++;; Jump inside a function; an unconditional branch to a label.
++;;=============================================================================
++(define_insn "jump"
++ [(set (pc)
++ (label_ref (match_operand 0 "" "")))]
++ ""
++ {
++ if (get_attr_length(insn) > 4)
++ return "Can't jump this far";
++ return (get_attr_length(insn) == 2 ?
++ "rjmp %0" : "bral %0");
++ }
++ [(set_attr "type" "branch")
++ (set (attr "length")
++ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 1022))
++ (le (minus (pc) (match_dup 0)) (const_int 1024)))
++ (const_int 2) ; use rjmp
++ (le (match_dup 0) (const_int 1048575))
++ (const_int 4)] ; use bral
++ (const_int 8))) ; do something else
++ (set_attr "cc" "none")])
++
++;;=============================================================================
++;; call
++;;-----------------------------------------------------------------------------
++;; Subroutine call instruction returning no value.
++;;=============================================================================
++(define_insn "call_internal"
++ [(parallel [(call (mem:SI (match_operand:SI 0 "avr32_call_operand" "r,U,T,W"))
++ (match_operand 1 "" ""))
++ (clobber (reg:SI LR_REGNUM))])]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "icall\t%0";
++ case 1:
++ return "rcall\t%0";
++ case 2:
++ return "mcall\t%0";
++ case 3:
++ if ( TARGET_HAS_ASM_ADDR_PSEUDOS )
++ return "call\t%0";
++ else
++ return "mcall\tr6[%0@got]";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "type" "call")
++ (set_attr "length" "2,4,4,10")
++ (set_attr "cc" "clobber")])
++
++
++(define_expand "call"
++ [(parallel [(call (match_operand:SI 0 "" "")
++ (match_operand 1 "" ""))
++ (clobber (reg:SI LR_REGNUM))])]
++ ""
++ {
++ rtx call_address;
++ if ( GET_CODE(operands[0]) != MEM )
++ FAIL;
++
++ call_address = XEXP(operands[0], 0);
++
++ /* If assembler supports call pseudo insn and the call
++ address is a symbol then nothing special needs to be done. */
++ if ( TARGET_HAS_ASM_ADDR_PSEUDOS
++ && (GET_CODE(call_address) == SYMBOL_REF) ){
++ /* We must however mark the function as using the GOT if
++ flag_pic is set, since the call insn might turn into
++ a mcall using the GOT ptr register. */
++ if ( flag_pic ){
++ current_function_uses_pic_offset_table = 1;
++ emit_call_insn(gen_call_internal(call_address, operands[1]));
++ DONE;
++ }
++ } else {
++ if ( flag_pic &&
++ GET_CODE(call_address) == SYMBOL_REF ){
++ current_function_uses_pic_offset_table = 1;
++ emit_call_insn(gen_call_internal(call_address, operands[1]));
++ DONE;
++ }
++
++ if ( !SYMBOL_REF_RCALL_FUNCTION_P(operands[0]) ){
++ if ( optimize_size &&
++ GET_CODE(call_address) == SYMBOL_REF ){
++ call_address = force_const_mem(SImode, call_address);
++ } else {
++ call_address = force_reg(SImode, call_address);
++ }
++ }
++ }
++ emit_call_insn(gen_call_internal(call_address, operands[1]));
++ DONE;
++ }
++)
++
++;;=============================================================================
++;; call_value
++;;-----------------------------------------------------------------------------
++;; Subrutine call instruction returning a value.
++;;=============================================================================
++(define_expand "call_value"
++ [(parallel [(set (match_operand:SI 0 "" "")
++ (call (match_operand:SI 1 "" "")
++ (match_operand 2 "" "")))
++ (clobber (reg:SI LR_REGNUM))])]
++ ""
++ {
++ rtx call_address;
++ if ( GET_CODE(operands[1]) != MEM )
++ FAIL;
++
++ call_address = XEXP(operands[1], 0);
++
++ /* If assembler supports call pseudo insn and the call
++ address is a symbol then nothing special needs to be done. */
++ if ( TARGET_HAS_ASM_ADDR_PSEUDOS
++ && (GET_CODE(call_address) == SYMBOL_REF) ){
++ /* We must however mark the function as using the GOT if
++ flag_pic is set, since the call insn might turn into
++ a mcall using the GOT ptr register. */
++ if ( flag_pic ) {
++ current_function_uses_pic_offset_table = 1;
++ emit_call_insn(gen_call_value_internal(operands[0], call_address, operands[2]));
++ DONE;
++ }
++ } else {
++ if ( flag_pic &&
++ GET_CODE(call_address) == SYMBOL_REF ){
++ current_function_uses_pic_offset_table = 1;
++ emit_call_insn(gen_call_value_internal(operands[0], call_address, operands[2]));
++ DONE;
++ }
++
++ if ( !SYMBOL_REF_RCALL_FUNCTION_P(operands[1]) ){
++ if ( optimize_size &&
++ GET_CODE(call_address) == SYMBOL_REF){
++ call_address = force_const_mem(SImode, call_address);
++ } else {
++ call_address = force_reg(SImode, call_address);
++ }
++ }
++ }
++ emit_call_insn(gen_call_value_internal(operands[0], call_address,
++ operands[2]));
++ DONE;
++
++ })
++
++(define_insn "call_value_internal"
++ [(parallel [(set (match_operand 0 "register_operand" "=r,r,r,r")
++ (call (mem:SI (match_operand:SI 1 "avr32_call_operand" "r,U,T,W"))
++ (match_operand 2 "" "")))
++ (clobber (reg:SI LR_REGNUM))])]
++ ;; Operand 2 not used on the AVR32.
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "icall\t%1";
++ case 1:
++ return "rcall\t%1";
++ case 2:
++ return "mcall\t%1";
++ case 3:
++ if ( TARGET_HAS_ASM_ADDR_PSEUDOS )
++ return "call\t%1";
++ else
++ return "mcall\tr6[%1@got]";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "type" "call")
++ (set_attr "length" "2,4,4,10")
++ (set_attr "cc" "call_set")])
++
++
++;;=============================================================================
++;; untyped_call
++;;-----------------------------------------------------------------------------
++;; Subrutine call instruction returning a value of any type.
++;; The code is copied from m68k.md (except gen_blockage is removed)
++;; Fixme!
++;;=============================================================================
++(define_expand "untyped_call"
++ [(parallel [(call (match_operand 0 "avr32_call_operand" "")
++ (const_int 0))
++ (match_operand 1 "" "")
++ (match_operand 2 "" "")])]
++ ""
++ {
++ int i;
++
++ emit_call_insn (GEN_CALL (operands[0], const0_rtx, NULL, const0_rtx));
++
++ for (i = 0; i < XVECLEN (operands[2], 0); i++) {
++ rtx set = XVECEXP (operands[2], 0, i);
++ emit_move_insn (SET_DEST (set), SET_SRC (set));
++ }
++
++ /* The optimizer does not know that the call sets the function value
++ registers we stored in the result block. We avoid problems by
++ claiming that all hard registers are used and clobbered at this
++ point. */
++ emit_insn (gen_blockage ());
++
++ DONE;
++ })
++
++
++;;=============================================================================
++;; return
++;;=============================================================================
++
++(define_insn "return"
++ [(return)]
++ "USE_RETURN_INSN (FALSE)"
++ {
++ avr32_output_return_instruction(TRUE, FALSE, NULL, NULL);
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "type" "call")]
++ )
++
++(define_insn "*return_value_imm"
++ [(parallel [(set (reg RETVAL_REGNUM) (match_operand 0 "immediate_operand" "i"))
++ (use (reg RETVAL_REGNUM))
++ (return)])]
++ "USE_RETURN_INSN (FALSE) &&
++ ((INTVAL(operands[0]) == -1) || (INTVAL(operands[0]) == 0) || (INTVAL(operands[0]) == 1))"
++ {
++ avr32_output_return_instruction(TRUE, FALSE, NULL, operands[0]);
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "type" "call")]
++ )
++
++(define_insn "*return_value_si"
++ [(set (reg RETVAL_REGNUM) (match_operand:SI 0 "register_operand" "r"))
++ (use (reg RETVAL_REGNUM))
++ (return)]
++ "USE_RETURN_INSN (TRUE)"
++ "retal %0";
++ [(set_attr "type" "call")]
++ )
++
++(define_insn "*return_value_hi"
++ [(parallel [(set (reg RETVAL_REGNUM) (match_operand:HI 0 "register_operand" "r"))
++ (use (reg RETVAL_REGNUM))
++ (return)])]
++ "USE_RETURN_INSN (TRUE)"
++ "retal %0"
++ [(set_attr "type" "call")]
++ )
++
++(define_insn "*return_value_qi"
++ [(parallel [(set (reg RETVAL_REGNUM) (match_operand:QI 0 "register_operand" "r"))
++ (use (reg RETVAL_REGNUM))
++ (return)])]
++ "USE_RETURN_INSN (TRUE)"
++ "retal %0"
++ [(set_attr "type" "call")]
++ )
++
++;;=============================================================================
++;; nop
++;;-----------------------------------------------------------------------------
++;; No-op instruction.
++;;=============================================================================
++(define_insn "nop"
++ [(const_int 0)]
++ ""
++ "nop"
++ [(set_attr "length" "2")
++ (set_attr "type" "alu")
++ (set_attr "cc" "none")])
++
++;;=============================================================================
++;; nonlocal_goto
++;;-----------------------------------------------------------------------------
++;; Jump from one function to a label in an outer function.
++;; Must invalidate return stack, since the function will be exited without
++;; a return
++;;=============================================================================
++(define_expand "nonlocal_goto"
++ [(use (match_operand 0 "" ""))
++ (use (match_operand 1 "" ""))
++ (use (match_operand 2 "" ""))
++ (use (match_operand 3 "" ""))]
++ ""
++ {
++ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__nonlocal_goto"),
++ 0, VOIDmode, 3,
++ operands[0], SImode,
++ operands[1], Pmode,
++ operands[2], SImode);
++
++ DONE;
++ }
++)
++
++
++(define_expand "builtin_longjmp"
++ [(use (match_operand 0 "" ""))]
++ ""
++ {
++ rtx ops[3];
++
++ ops[0] = gen_rtx_MEM (Pmode, gen_rtx_PLUS(SImode, operands[0], gen_rtx_CONST_INT(SImode,0)));
++ ops[1] = gen_rtx_MEM (Pmode, gen_rtx_PLUS(SImode, operands[0], gen_rtx_CONST_INT(SImode,4)));
++ ops[2] = gen_rtx_MEM (Pmode, gen_rtx_PLUS(SImode, operands[0], gen_rtx_CONST_INT(SImode,8)));
++
++
++ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__nonlocal_goto"),
++ 0, VOIDmode, 3,
++ ops[0], SImode,
++ ops[1], Pmode,
++ ops[2], SImode);
++
++ DONE;
++ }
++ )
++
++
++;;=============================================================================
++;; indirect_jump
++;;-----------------------------------------------------------------------------
++;; Jump to an address in reg or memory.
++;;=============================================================================
++(define_expand "indirect_jump"
++ [(set (pc)
++ (match_operand:SI 0 "general_operand" "r,m"))]
++ ""
++ {
++ /* One of the ops has to be in a register. */
++ if ( (flag_pic || TARGET_HAS_ASM_ADDR_PSEUDOS )
++ && !avr32_legitimate_pic_operand_p(operands[0]) )
++ operands[0] = legitimize_pic_address (operands[0], SImode, 0);
++ else if ( flag_pic && avr32_address_operand(operands[0], GET_MODE(operands[0])) )
++ /* If we have an address operand then this function uses the pic register. */
++ current_function_uses_pic_offset_table = 1;
++ })
++
++
++(define_insn "indirect_jump_internal"
++ [(set (pc)
++ (match_operand:SI 0 "general_operand" "r,m,W"))]
++ ""
++ {
++ switch( which_alternative ){
++ case 0:
++ return "mov\tpc, %0";
++ case 1:
++ if ( avr32_const_pool_ref_operand(operands[0], GET_MODE(operands[0])) )
++ return "lddpc\tpc, %0";
++ else
++ return "ld.w\tpc, %0";
++ case 2:
++ if ( flag_pic )
++ return "ld.w\tpc, r6[%0@got]";
++ else
++ return "lda.w\tpc, %0";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "2,4,8")
++ (set_attr "type" "call,call,call")
++ (set_attr "cc" "none,none,clobber")])
++
++
++;;=============================================================================
++;; casesi
++;;=============================================================================
++
++
++(define_expand "casesi"
++ [(match_operand:SI 0 "register_operand" "") ; index to jump on
++ (match_operand:SI 1 "const_int_operand" "") ; lower bound
++ (match_operand:SI 2 "const_int_operand" "") ; total range
++ (match_operand:SI 3 "" "") ; table label
++ (match_operand:SI 4 "" "")] ; Out of range label
++ ""
++ "
++ {
++ rtx reg;
++ if (operands[1] != const0_rtx)
++ {
++ if (!avr32_const_ok_for_constraint_p(INTVAL (operands[1]), 'I', \"Is21\")){
++ reg = force_reg(SImode, GEN_INT (INTVAL (operands[1])));
++ emit_insn (gen_subsi3 (reg, operands[0],
++ reg));
++ } else {
++ reg = gen_reg_rtx (SImode);
++ emit_insn (gen_addsi3 (reg, operands[0],
++ GEN_INT (-INTVAL (operands[1]))));
++ }
++ operands[0] = reg;
++ }
++
++ if (!avr32_const_ok_for_constraint_p(INTVAL (operands[2]), 'K', \"Ks21\"))
++ operands[2] = force_reg (SImode, operands[2]);
++
++ emit_jump_insn (gen_casesi_internal (operands[0], operands[2], operands[3],
++ operands[4], gen_reg_rtx(SImode)));
++ DONE;
++ }"
++)
++
++;; The USE in this pattern is needed to tell flow analysis that this is
++;; a CASESI insn. It has no other purpose.
++(define_insn "casesi_internal"
++ [(parallel [(set (pc)
++ (if_then_else
++ (leu (match_operand:SI 0 "register_operand" "r")
++ (match_operand:SI 1 "register_immediate_operand" "rKu03"))
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (label_ref (match_operand 2 "" ""))))
++ (label_ref (match_operand 3 "" ""))))
++ (clobber (match_operand:SI 4 "register_operand" "=r"))
++ (use (label_ref (match_dup 2)))])]
++ ""
++ {
++ if (flag_pic)
++ return "cp.w\t%0, %1\;brhi\t%3\;sub\t%4, pc, -(%2 - .)\;add\tpc, %4, %0 << 2";
++ return "cp.w\t%0, %1\;brhi\t%3\;sub\t%4, pc, -(%2 - .)\;ld.w\tpc, %4[%0 << 2]";
++ }
++ [(set_attr "cc" "clobber")
++ (set_attr "length" "16")]
++)
++
++
++(define_insn "prefetch"
++ [(prefetch (match_operand:SI 0 "register_operand" "r")
++ (match_operand 1 "const_int_operand" "")
++ (match_operand 2 "const_int_operand" ""))]
++ ""
++ {
++ return "pref\t%0[0]";
++ }
++
++ [(set_attr "length" "4")
++ (set_attr "type" "load")
++ (set_attr "cc" "none")])
++
++
++
++;;=============================================================================
++;; prologue
++;;-----------------------------------------------------------------------------
++;; This pattern, if defined, emits RTL for entry to a function. The function
++;; entry i responsible for setting up the stack frame, initializing the frame
++;; pointer register, saving callee saved registers, etc.
++;;=============================================================================
++(define_expand "prologue"
++ [(clobber (const_int 0))]
++ ""
++ "
++ avr32_expand_prologue();
++ DONE;
++ "
++ )
++
++;;=============================================================================
++;; eh_return
++;;-----------------------------------------------------------------------------
++;; This pattern, if defined, affects the way __builtin_eh_return, and
++;; thence the call frame exception handling library routines, are
++;; built. It is intended to handle non-trivial actions needed along
++;; the abnormal return path.
++;;
++;; The address of the exception handler to which the function should
++;; return is passed as operand to this pattern. It will normally need
++;; to copied by the pattern to some special register or memory
++;; location. If the pattern needs to determine the location of the
++;; target call frame in order to do so, it may use
++;; EH_RETURN_STACKADJ_RTX, if defined; it will have already been
++;; assigned.
++;;
++;; If this pattern is not defined, the default action will be to
++;; simply copy the return address to EH_RETURN_HANDLER_RTX. Either
++;; that macro or this pattern needs to be defined if call frame
++;; exception handling is to be used.
++(define_expand "eh_return"
++ [(use (match_operand 0 "general_operand" ""))]
++ ""
++ "
++ avr32_set_return_address (operands[0]);
++ DONE;
++ "
++ )
++
++;;=============================================================================
++;; ffssi2
++;;-----------------------------------------------------------------------------
++(define_insn "ffssi2"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (ffs:SI (match_operand:SI 1 "register_operand" "r"))) ]
++ ""
++ "mov %0, %1
++ brev %0
++ clz %0, %0
++ sub %0, -1
++ cp %0, 33
++ moveq %0, 0"
++ [(set_attr "length" "18")
++ (set_attr "cc" "clobber")]
++ )
++
++
++
++;;=============================================================================
++;; swap_h
++;;-----------------------------------------------------------------------------
++(define_insn "*swap_h"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (ior:SI (ashift:SI (match_dup 0) (const_int 16))
++ (lshiftrt:SI (match_dup 0) (const_int 16))))]
++ ""
++ "swap.h %0"
++ [(set_attr "length" "2")]
++ )
++
++(define_insn_and_split "bswap_16"
++ [ (set (match_operand:HI 0 "avr32_bswap_operand" "=r,RKs13,r")
++ (ior:HI (and:HI (lshiftrt:HI (match_operand:HI 1 "avr32_bswap_operand" "r,r,RKs13")
++ (const_int 8))
++ (const_int 255))
++ (ashift:HI (and:HI (match_dup 1)
++ (const_int 255))
++ (const_int 8))))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ if ( REGNO(operands[0]) == REGNO(operands[1]))
++ return "swap.bh\t%0";
++ else
++ return "mov\t%0, %1\;swap.bh\t%0";
++ case 1:
++ return "stswp.h\t%0, %1";
++ case 2:
++ return "ldswp.sh\t%0, %1";
++ default:
++ abort();
++ }
++ }
++
++ "(reload_completed &&
++ REG_P(operands[0]) && REG_P(operands[1])
++ && (REGNO(operands[0]) != REGNO(operands[1])))"
++ [(set (match_dup 0) (match_dup 1))
++ (set (match_dup 0)
++ (ior:HI (and:HI (lshiftrt:HI (match_dup 0)
++ (const_int 8))
++ (const_int 255))
++ (ashift:HI (and:HI (match_dup 0)
++ (const_int 255))
++ (const_int 8))))]
++ ""
++
++ [(set_attr "length" "4,4,4")
++ (set_attr "type" "alu,store,load_rm")]
++ )
++
++(define_insn_and_split "bswap_32"
++ [ (set (match_operand:SI 0 "avr32_bswap_operand" "=r,RKs14,r")
++ (ior:SI (ior:SI (lshiftrt:SI (and:SI (match_operand:SI 1 "avr32_bswap_operand" "=r,r,RKs14")
++ (const_int 4278190080))
++ (const_int 24))
++ (lshiftrt:SI (and:SI (match_dup 1)
++ (const_int 16711680))
++ (const_int 8)))
++ (ior:SI (ashift:SI (and:SI (match_dup 1)
++ (const_int 65280))
++ (const_int 8))
++ (ashift:SI (and:SI (match_dup 1)
++ (const_int 255))
++ (const_int 24)))))]
++ ""
++ {
++ switch ( which_alternative ){
++ case 0:
++ if ( REGNO(operands[0]) == REGNO(operands[1]))
++ return "swap.b\t%0";
++ else
++ return "mov\t%0, %1\;swap.b\t%0";
++ case 1:
++ return "stswp.w\t%0, %1";
++ case 2:
++ return "ldswp.w\t%0, %1";
++ default:
++ abort();
++ }
++ }
++ "(reload_completed &&
++ REG_P(operands[0]) && REG_P(operands[1])
++ && (REGNO(operands[0]) != REGNO(operands[1])))"
++ [(set (match_dup 0) (match_dup 1))
++ (set (match_dup 0)
++ (ior:SI (ior:SI (lshiftrt:SI (and:SI (match_dup 0)
++ (const_int 4278190080))
++ (const_int 24))
++ (lshiftrt:SI (and:SI (match_dup 0)
++ (const_int 16711680))
++ (const_int 8)))
++ (ior:SI (ashift:SI (and:SI (match_dup 0)
++ (const_int 65280))
++ (const_int 8))
++ (ashift:SI (and:SI (match_dup 0)
++ (const_int 255))
++ (const_int 24)))))]
++ ""
++
++ [(set_attr "length" "4,4,4")
++ (set_attr "type" "alu,store,load_rm")]
++ )
++
++
++;;=============================================================================
++;; blockage
++;;-----------------------------------------------------------------------------
++;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
++;; all of memory. This blocks insns from being moved across this point.
++
++(define_insn "blockage"
++ [(unspec_volatile [(const_int 0)] VUNSPEC_BLOCKAGE)]
++ ""
++ ""
++ [(set_attr "length" "0")]
++)
++
++;;=============================================================================
++;; clzsi2
++;;-----------------------------------------------------------------------------
++(define_insn "clzsi2"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (clz:SI (match_operand:SI 1 "register_operand" "r"))) ]
++ ""
++ "clz %0, %1"
++ [(set_attr "length" "4")
++ (set_attr "cc" "set_z")]
++ )
++
++;;=============================================================================
++;; ctzsi2
++;;-----------------------------------------------------------------------------
++(define_insn "ctzsi2"
++ [ (set (match_operand:SI 0 "register_operand" "=r,r")
++ (ctz:SI (match_operand:SI 1 "register_operand" "0,r"))) ]
++ ""
++ "@
++ brev\t%0\;clz\t%0, %0
++ mov\t%0, %1\;brev\t%0\;clz\t%0, %0"
++ [(set_attr "length" "8")
++ (set_attr "cc" "set_z")]
++ )
++
++;;=============================================================================
++;; cache instructions
++;;-----------------------------------------------------------------------------
++(define_insn "cache"
++ [ (unspec_volatile [(match_operand:SI 0 "register_operand" "r")
++ (match_operand:SI 1 "immediate_operand" "Ku05")] VUNSPEC_CACHE)]
++ ""
++ "cache %0[0], %1"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "sync"
++ [ (unspec_volatile [(match_operand:SI 0 "immediate_operand" "Ku08")] VUNSPEC_SYNC)]
++ ""
++ "sync %0"
++ [(set_attr "length" "4")]
++ )
++
++;;=============================================================================
++;; TLB instructions
++;;-----------------------------------------------------------------------------
++(define_insn "tlbr"
++ [ (unspec_volatile [(const_int 0)] VUNSPEC_TLBR)]
++ ""
++ "tlbr"
++ [(set_attr "length" "2")]
++ )
++
++(define_insn "tlbw"
++ [ (unspec_volatile [(const_int 0)] VUNSPEC_TLBW)]
++ ""
++ "tlbw"
++ [(set_attr "length" "2")]
++ )
++
++(define_insn "tlbs"
++ [ (unspec_volatile [(const_int 0)] VUNSPEC_TLBS)]
++ ""
++ "tlbs"
++ [(set_attr "length" "2")]
++ )
++
++;;=============================================================================
++;; Breakpoint instruction
++;;-----------------------------------------------------------------------------
++(define_insn "breakpoint"
++ [ (unspec_volatile [(const_int 0)] VUNSPEC_BREAKPOINT)]
++ ""
++ "breakpoint"
++ [(set_attr "length" "2")]
++ )
++
++;;=============================================================================
++;; Xchg instruction
++;;-----------------------------------------------------------------------------
++(define_insn "xchg"
++ [ (parallel [(set (match_operand:SI 0 "register_operand" "=&r")
++ (mem:SI (match_operand:SI 1 "register_operand" "r")))
++ (set (mem:SI (match_operand:SI 2 "register_operand" "=1"))
++ (match_operand:SI 3 "register_operand" "r"))])]
++ ""
++ "xchg\t%0, %1, %3"
++ [(set_attr "length" "4")]
++ )
++
++;;=============================================================================
++;; mtsr/mfsr instruction
++;;-----------------------------------------------------------------------------
++(define_insn "mtsr"
++ [ (unspec_volatile [(match_operand 0 "immediate_operand" "i")
++ (match_operand:SI 1 "register_operand" "r")] VUNSPEC_MTSR)]
++ ""
++ "mtsr\t%0, %1"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mfsr"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (unspec_volatile:SI [(match_operand 1 "immediate_operand" "i")] VUNSPEC_MFSR)) ]
++ ""
++ "mfsr\t%0, %1"
++ [(set_attr "length" "4")]
++ )
++
++;;=============================================================================
++;; mtdr/mfdr instruction
++;;-----------------------------------------------------------------------------
++(define_insn "mtdr"
++ [ (unspec_volatile [(match_operand 0 "immediate_operand" "i")
++ (match_operand:SI 1 "register_operand" "r")] VUNSPEC_MTDR)]
++ ""
++ "mtdr\t%0, %1"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mfdr"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (unspec_volatile:SI [(match_operand 1 "immediate_operand" "i")] VUNSPEC_MFDR)) ]
++ ""
++ "mfdr\t%0, %1"
++ [(set_attr "length" "4")]
++ )
++
++;;=============================================================================
++;; musfr
++;;-----------------------------------------------------------------------------
++(define_insn "musfr"
++ [ (unspec_volatile [(match_operand:SI 0 "register_operand" "r")] VUNSPEC_MUSFR)]
++ ""
++ "musfr\t%0"
++ [(set_attr "length" "2")
++ (set_attr "cc" "clobber")]
++ )
++
++(define_insn "mustr"
++ [ (set (match_operand:SI 0 "register_operand" "=r")
++ (unspec_volatile:SI [(const_int 0)] VUNSPEC_MUSTR)) ]
++ ""
++ "mustr\t%0"
++ [(set_attr "length" "2")]
++ )
++
++;;=============================================================================
++;; Saturation Round Scale instruction
++;;-----------------------------------------------------------------------------
++(define_insn "sats"
++ [ (set (match_operand:SI 0 "register_operand" "+r")
++ (unspec:SI [(match_dup 0)
++ (match_operand 1 "immediate_operand" "Ku05")
++ (match_operand 2 "immediate_operand" "Ku05")]
++ UNSPEC_SATS)) ]
++ "TARGET_DSP"
++ "sats\t%0 >> %1, %2"
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")]
++ )
++
++(define_insn "satu"
++ [ (set (match_operand:SI 0 "register_operand" "+r")
++ (unspec:SI [(match_dup 0)
++ (match_operand 1 "immediate_operand" "Ku05")
++ (match_operand 2 "immediate_operand" "Ku05")]
++ UNSPEC_SATU)) ]
++ "TARGET_DSP"
++ "satu\t%0 >> %1, %2"
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")]
++ )
++
++(define_insn "satrnds"
++ [ (set (match_operand:SI 0 "register_operand" "+r")
++ (unspec:SI [(match_dup 0)
++ (match_operand 1 "immediate_operand" "Ku05")
++ (match_operand 2 "immediate_operand" "Ku05")]
++ UNSPEC_SATRNDS)) ]
++ "TARGET_DSP"
++ "satrnds\t%0 >> %1, %2"
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")]
++ )
++
++(define_insn "satrndu"
++ [ (set (match_operand:SI 0 "register_operand" "+r")
++ (unspec:SI [(match_dup 0)
++ (match_operand 1 "immediate_operand" "Ku05")
++ (match_operand 2 "immediate_operand" "Ku05")]
++ UNSPEC_SATRNDU)) ]
++ "TARGET_DSP"
++ "sats\t%0 >> %1, %2"
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")]
++ )
++
++;; Special patterns for dealing with the constant pool
++
++(define_insn "align_4"
++ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN)]
++ ""
++ {
++ assemble_align (32);
++ return "";
++ }
++ [(set_attr "length" "2")]
++)
++
++(define_insn "consttable_start"
++ [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_START)]
++ ""
++ {
++ return ".cpool";
++ }
++ [(set_attr "length" "0")]
++ )
++
++(define_insn "consttable_end"
++ [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_END)]
++ ""
++ {
++ making_const_table = FALSE;
++ return "";
++ }
++ [(set_attr "length" "0")]
++)
++
++
++(define_insn "consttable_4"
++ [(unspec_volatile [(match_operand 0 "" "")] VUNSPEC_POOL_4)]
++ ""
++ {
++ making_const_table = TRUE;
++ switch (GET_MODE_CLASS (GET_MODE (operands[0])))
++ {
++ case MODE_FLOAT:
++ {
++ REAL_VALUE_TYPE r;
++ char real_string[1024];
++ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[0]);
++ real_to_decimal(real_string, &r, 1024, 0, 1);
++ asm_fprintf (asm_out_file, "\t.float\t%s\n", real_string);
++ break;
++ }
++ default:
++ assemble_integer (operands[0], 4, 0, 1);
++ break;
++ }
++ return "";
++ }
++ [(set_attr "length" "4")]
++)
++
++(define_insn "consttable_8"
++ [(unspec_volatile [(match_operand 0 "" "")] VUNSPEC_POOL_8)]
++ ""
++ {
++ making_const_table = TRUE;
++ switch (GET_MODE_CLASS (GET_MODE (operands[0])))
++ {
++ case MODE_FLOAT:
++ {
++ REAL_VALUE_TYPE r;
++ char real_string[1024];
++ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[0]);
++ real_to_decimal(real_string, &r, 1024, 0, 1);
++ asm_fprintf (asm_out_file, "\t.double\t%s\n", real_string);
++ break;
++ }
++ default:
++ assemble_integer(operands[0], 8, 0, 1);
++ break;
++ }
++ return "";
++ }
++ [(set_attr "length" "8")]
++)
++
++;;=============================================================================
++;; coprocessor instructions
++;;-----------------------------------------------------------------------------
++(define_insn "cop"
++ [ (unspec_volatile [(match_operand 0 "immediate_operand" "Ku03")
++ (match_operand 1 "immediate_operand" "Ku04")
++ (match_operand 2 "immediate_operand" "Ku04")
++ (match_operand 3 "immediate_operand" "Ku04")
++ (match_operand 4 "immediate_operand" "Ku07")] VUNSPEC_COP)]
++ ""
++ "cop\tcp%0, cr%1, cr%2, cr%3, %4"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mvcrsi"
++ [ (set (match_operand:SI 0 "avr32_cop_move_operand" "=r,<,Z")
++ (unspec_volatile:SI [(match_operand 1 "immediate_operand" "Ku03,Ku03,Ku03")
++ (match_operand 2 "immediate_operand" "Ku04,Ku04,Ku04")]
++ VUNSPEC_MVCR)) ]
++ ""
++ "@
++ mvcr.w\tcp%1, %0, cr%2
++ stcm.w\tcp%1, %0, cr%2
++ stc.w\tcp%1, %0, cr%2"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mvcrdi"
++ [ (set (match_operand:DI 0 "avr32_cop_move_operand" "=r,<,Z")
++ (unspec_volatile:DI [(match_operand 1 "immediate_operand" "Ku03,Ku03,Ku03")
++ (match_operand 2 "immediate_operand" "Ku04,Ku04,Ku04")]
++ VUNSPEC_MVCR)) ]
++ ""
++ "@
++ mvcr.d\tcp%1, %0, cr%2
++ stcm.d\tcp%1, %0, cr%2-cr%i2
++ stc.d\tcp%1, %0, cr%2"
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mvrcsi"
++ [ (unspec_volatile:SI [(match_operand 0 "immediate_operand" "Ku03,Ku03,Ku03")
++ (match_operand 1 "immediate_operand" "Ku04,Ku04,Ku04")
++ (match_operand:SI 2 "avr32_cop_move_operand" "r,>,Z")]
++ VUNSPEC_MVRC)]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "mvrc.w\tcp%0, cr%1, %2";
++ case 1:
++ return "ldcm.w\tcp%0, %2, cr%1";
++ case 2:
++ return "ldc.w\tcp%0, cr%1, %2";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "4")]
++ )
++
++(define_insn "mvrcdi"
++ [ (unspec_volatile:DI [(match_operand 0 "immediate_operand" "Ku03,Ku03,Ku03")
++ (match_operand 1 "immediate_operand" "Ku04,Ku04,Ku04")
++ (match_operand:DI 2 "avr32_cop_move_operand" "r,>,Z")]
++ VUNSPEC_MVRC)]
++ ""
++ {
++ switch (which_alternative){
++ case 0:
++ return "mvrc.d\tcp%0, cr%1, %2";
++ case 1:
++ return "ldcm.d\tcp%0, %2, cr%1-cr%i1";
++ case 2:
++ return "ldc.d\tcp%0, cr%1, %2";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "length" "4")]
++ )
++
++;;=============================================================================
++;; epilogue
++;;-----------------------------------------------------------------------------
++;; This pattern emits RTL for exit from a function. The function exit is
++;; responsible for deallocating the stack frame, restoring callee saved
++;; registers and emitting the return instruction.
++;; ToDo: using TARGET_ASM_FUNCTION_PROLOGUE instead.
++;;=============================================================================
++(define_expand "epilogue"
++ [(unspec_volatile [(return)] VUNSPEC_EPILOGUE)]
++ ""
++ "
++ if (USE_RETURN_INSN (FALSE)){
++ emit_jump_insn (gen_return ());
++ DONE;
++ }
++ emit_jump_insn (gen_rtx_UNSPEC_VOLATILE (VOIDmode,
++ gen_rtvec (1,
++ gen_rtx_RETURN (VOIDmode)),
++ VUNSPEC_EPILOGUE));
++ DONE;
++ "
++ )
++
++(define_insn "*epilogue_insns"
++ [(unspec_volatile [(return)] VUNSPEC_EPILOGUE)]
++ ""
++ {
++ avr32_output_return_instruction (FALSE, FALSE, NULL, NULL);
++ return "";
++ }
++ ; Length is absolute worst case
++ [(set_attr "type" "branch")
++ (set_attr "length" "12")]
++ )
++
++(define_insn "*epilogue_insns_ret_imm"
++ [(parallel [(set (reg RETVAL_REGNUM) (match_operand 0 "immediate_operand" "i"))
++ (use (reg RETVAL_REGNUM))
++ (unspec_volatile [(return)] VUNSPEC_EPILOGUE)])]
++ "((INTVAL(operands[0]) == -1) || (INTVAL(operands[0]) == 0) || (INTVAL(operands[0]) == 1))"
++ {
++ avr32_output_return_instruction (FALSE, FALSE, NULL, operands[0]);
++ return "";
++ }
++ ; Length is absolute worst case
++ [(set_attr "type" "branch")
++ (set_attr "length" "12")]
++ )
++
++(define_insn "sibcall_epilogue"
++ [(unspec_volatile [(const_int 0)] VUNSPEC_EPILOGUE)]
++ ""
++ {
++ avr32_output_return_instruction (FALSE, FALSE, NULL, NULL);
++ return "";
++ }
++;; Length is absolute worst case
++ [(set_attr "type" "branch")
++ (set_attr "length" "12")]
++ )
++
++(define_insn "*sibcall_epilogue_insns_ret_imm"
++ [(parallel [(set (reg RETVAL_REGNUM) (match_operand 0 "immediate_operand" "i"))
++ (use (reg RETVAL_REGNUM))
++ (unspec_volatile [(const_int 0)] VUNSPEC_EPILOGUE)])]
++ "((INTVAL(operands[0]) == -1) || (INTVAL(operands[0]) == 0) || (INTVAL(operands[0]) == 1))"
++ {
++ avr32_output_return_instruction (FALSE, FALSE, NULL, operands[0]);
++ return "";
++ }
++ ; Length is absolute worst case
++ [(set_attr "type" "branch")
++ (set_attr "length" "12")]
++ )
++
++(define_insn "ldxi"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (mem:SI (plus:SI
++ (match_operand:SI 1 "register_operand" "r")
++ (mult:SI (zero_extract:SI (match_operand:SI 2 "register_operand" "r")
++ (const_int 8)
++ (match_operand:SI 3 "immediate_operand" "Ku05"))
++ (const_int 4)))))]
++ "(INTVAL(operands[3]) == 24 || INTVAL(operands[3]) == 16 || INTVAL(operands[3]) == 8
++ || INTVAL(operands[3]) == 0)"
++ {
++ switch ( INTVAL(operands[3]) ){
++ case 0:
++ return "ld.w %0, %1[%2:b << 2]";
++ case 8:
++ return "ld.w %0, %1[%2:l << 2]";
++ case 16:
++ return "ld.w %0, %1[%2:u << 2]";
++ case 24:
++ return "ld.w %0, %1[%2:t << 2]";
++ default:
++ internal_error("illegal operand for ldxi");
++ }
++ }
++ [(set_attr "type" "load")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
++
++
++
++
++
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; sub r8, r7, 8
++;; st.w r8[0x0], r12
++;; to
++;; sub r8, r7, 8
++;; st.w r7[-0x8], r12
++;;=============================================================================
++; (set (reg:SI 9 r8)
++; (plus:SI (reg/f:SI 6 r7)
++; (const_int ...)))
++; (set (mem:SI (reg:SI 9 r8))
++; (reg:SI 12 r12))
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (plus:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (mem:SI (match_dup 0))
++ (match_operand:SI 3 "register_operand" ""))]
++ "REGNO(operands[0]) != REGNO(operands[1])"
++ [(set (match_dup 0)
++ (plus:SI (match_dup 1)
++ (match_dup 2)))
++ (set (mem:SI (plus:SI (match_dup 1)
++ (match_dup 2)))
++ (match_dup 3))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; sub r6, r7, 4
++;; ld.w r6, r6[0x0]
++;; to
++;; sub r6, r7, 4
++;; ld.w r6, r7[-0x4]
++;;=============================================================================
++; (set (reg:SI 7 r6)
++; (plus:SI (reg/f:SI 6 r7)
++; (const_int -4 [0xfffffffc])))
++; (set (reg:SI 7 r6)
++; (mem:SI (reg:SI 7 r6)))
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (plus:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (mem:SI (match_dup 0)))]
++ "REGNO(operands[0]) != REGNO(operands[1])"
++ [(set (match_dup 0)
++ (plus:SI (match_dup 1)
++ (match_dup 2)))
++ (set (match_dup 3)
++ (mem:SI (plus:SI (match_dup 1)
++ (match_dup 2))))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; ld.sb r0, r7[-0x6]
++;; cashs.b r0
++;; to
++;; ld.sb r0, r7[-0x6]
++;;=============================================================================
++(define_peephole2
++ [(set (match_operand:QI 0 "register_operand" "")
++ (match_operand:QI 1 "load_sb_memory_operand" ""))
++ (set (match_operand:SI 2 "register_operand" "")
++ (sign_extend:SI (match_dup 0)))]
++ "(REGNO(operands[0]) == REGNO(operands[2]) || peep2_reg_dead_p(2, operands[0]))"
++ [(set (match_dup 2)
++ (sign_extend:SI (match_dup 1)))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; ld.ub r0, r7[-0x6]
++;; cashu.b r0
++;; to
++;; ld.ub r0, r7[-0x6]
++;;=============================================================================
++(define_peephole2
++ [(set (match_operand:QI 0 "register_operand" "")
++ (match_operand:QI 1 "memory_operand" ""))
++ (set (match_operand:SI 2 "register_operand" "")
++ (zero_extend:SI (match_dup 0)))]
++ "(REGNO(operands[0]) == REGNO(operands[2])) || peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 2)
++ (zero_extend:SI (match_dup 1)))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; ld.sh r0, r7[-0x6]
++;; casts.h r0
++;; to
++;; ld.sh r0, r7[-0x6]
++;;=============================================================================
++(define_peephole2
++ [(set (match_operand:HI 0 "register_operand" "")
++ (match_operand:HI 1 "memory_operand" ""))
++ (set (match_operand:SI 2 "register_operand" "")
++ (sign_extend:SI (match_dup 0)))]
++ "(REGNO(operands[0]) == REGNO(operands[2])) || peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 2)
++ (sign_extend:SI (match_dup 1)))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; ld.uh r0, r7[-0x6]
++;; castu.h r0
++;; to
++;; ld.uh r0, r7[-0x6]
++;;=============================================================================
++(define_peephole2
++ [(set (match_operand:HI 0 "register_operand" "")
++ (match_operand:HI 1 "memory_operand" ""))
++ (set (match_operand:SI 2 "register_operand" "")
++ (zero_extend:SI (match_dup 0)))]
++ "(REGNO(operands[0]) == REGNO(operands[2])) || peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 2)
++ (zero_extend:SI (match_dup 1)))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; mul rd, rx, ry
++;; add rd2, rd
++;; to
++;; mac rd2, rx, ry
++;;=============================================================================
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (mult:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "register_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (plus:SI (match_dup 3)
++ (match_dup 0)))]
++ "peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (plus:SI (mult:SI (match_dup 1)
++ (match_dup 2))
++ (match_dup 3)))]
++ "")
++
++
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Changing
++;; bfextu rd, rs, k5, 1 or and(h/l) rd, one_bit_set_mask
++;; to
++;; bld rs, k5
++;;
++;; If rd is dead after the operation.
++;;=============================================================================
++(define_peephole2
++ [ (set (match_operand:SI 0 "register_operand" "")
++ (zero_extract:SI (match_operand:SI 1 "register_operand" "")
++ (const_int 1)
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (cc0)
++ (match_dup 0))]
++ "peep2_reg_dead_p(2, operands[0])"
++ [(set (cc0)
++ (and:SI (match_dup 1)
++ (match_dup 2)))]
++ "operands[2] = GEN_INT(1 << INTVAL(operands[2]));")
++
++(define_peephole2
++ [ (set (match_operand:SI 0 "register_operand" "")
++ (and:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "one_bit_set_operand" "")))
++ (set (cc0)
++ (match_dup 0))]
++ "peep2_reg_dead_p(2, operands[0])"
++ [(set (cc0)
++ (and:SI (match_dup 1)
++ (match_dup 2)))]
++ "")
++
++;;=============================================================================
++;; Peephole optimizing
++;;-----------------------------------------------------------------------------
++;; Load with extracted index: ld.w Rd, Rb[Ri:{t/u/b/l} << 2]
++;;
++;;=============================================================================
++
++
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "")
++ (zero_extract:SI (match_operand:SI 1 "register_operand" "")
++ (const_int 8)
++ (match_operand:SI 2 "avr32_extract_shift_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 4 "register_operand" ""))))]
++
++ "(dead_or_set_p(insn, operands[0]))"
++ {
++ switch ( INTVAL(operands[2]) ){
++ case 0:
++ return "ld.w %3, %4[%1:b << 2]";
++ case 8:
++ return "ld.w %3, %4[%1:l << 2]";
++ case 16:
++ return "ld.w %3, %4[%1:u << 2]";
++ case 24:
++ return "ld.w %3, %4[%1:t << 2]";
++ default:
++ internal_error("illegal operand for ldxi");
++ }
++ }
++ [(set_attr "type" "load")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")]
++ )
++
++
++
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "")
++ (and:SI (match_operand:SI 1 "register_operand" "") (const_int 255)))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 3 "register_operand" ""))))]
++
++ "(dead_or_set_p(insn, operands[0]))"
++
++ "ld.w %2, %3[%1:b << 2]"
++ [(set_attr "type" "load")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")]
++ )
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (zero_extract:SI (match_operand:SI 1 "register_operand" "")
++ (const_int 8)
++ (match_operand:SI 2 "avr32_extract_shift_operand" "")))
++ (set (match_operand:SI 3 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 4 "register_operand" ""))))]
++
++ "(peep2_reg_dead_p(2, operands[0]))
++ || (REGNO(operands[0]) == REGNO(operands[3]))"
++ [(set (match_dup 3)
++ (mem:SI (plus:SI
++ (match_dup 4)
++ (mult:SI (zero_extract:SI (match_dup 1)
++ (const_int 8)
++ (match_dup 2))
++ (const_int 4)))))]
++ )
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (zero_extend:SI (match_operand:QI 1 "register_operand" "")))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 3 "register_operand" ""))))]
++
++ "(peep2_reg_dead_p(2, operands[0]))
++ || (REGNO(operands[0]) == REGNO(operands[2]))"
++ [(set (match_dup 2)
++ (mem:SI (plus:SI
++ (match_dup 3)
++ (mult:SI (zero_extract:SI (match_dup 1)
++ (const_int 8)
++ (const_int 0))
++ (const_int 4)))))]
++ "operands[1] = gen_rtx_REG(SImode, REGNO(operands[1]));"
++ )
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (and:SI (match_operand:SI 1 "register_operand" "")
++ (const_int 255)))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 3 "register_operand" ""))))]
++
++ "(peep2_reg_dead_p(2, operands[0]))
++ || (REGNO(operands[0]) == REGNO(operands[2]))"
++ [(set (match_dup 2)
++ (mem:SI (plus:SI
++ (match_dup 3)
++ (mult:SI (zero_extract:SI (match_dup 1)
++ (const_int 8)
++ (const_int 0))
++ (const_int 4)))))]
++ ""
++ )
++
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (lshiftrt:SI (match_operand:SI 1 "register_operand" "")
++ (const_int 24)))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mem:SI (plus:SI (mult:SI (match_dup 0) (const_int 4))
++ (match_operand:SI 3 "register_operand" ""))))]
++
++ "(peep2_reg_dead_p(2, operands[0]))
++ || (REGNO(operands[0]) == REGNO(operands[2]))"
++ [(set (match_dup 2)
++ (mem:SI (plus:SI
++ (match_dup 3)
++ (mult:SI (zero_extract:SI (match_dup 1)
++ (const_int 8)
++ (const_int 24))
++ (const_int 4)))))]
++ ""
++ )
++
++
++;;************************************************
++;; ANDN
++;;
++;;************************************************
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (not:SI (match_operand:SI 1 "register_operand" "")))
++ (set (match_operand:SI 2 "register_operand" "")
++ (and:SI (match_dup 2)
++ (match_dup 0)))]
++ "peep2_reg_dead_p(2, operands[0])"
++
++ [(set (match_dup 2)
++ (and:SI (match_dup 2)
++ (not:SI (match_dup 1))
++ ))]
++ ""
++)
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (not:SI (match_operand:SI 1 "register_operand" "")))
++ (set (match_operand:SI 2 "register_operand" "")
++ (and:SI (match_dup 0)
++ (match_dup 2)
++ ))]
++ "peep2_reg_dead_p(2, operands[0])"
++
++ [(set (match_dup 2)
++ (and:SI (match_dup 2)
++ (not:SI (match_dup 1))
++ ))]
++
++ ""
++)
++
++
++;;=================================================================
++;; Addabs peephole
++;;=================================================================
++
++(define_peephole
++ [(set (match_operand:SI 2 "register_operand" "=r")
++ (abs:SI (match_operand:SI 1 "register_operand" "r")))
++ (set (match_operand:SI 0 "register_operand" "=r")
++ (plus:SI (match_operand:SI 3 "register_operand" "r")
++ (match_dup 2)))]
++ "dead_or_set_p(insn, operands[2])"
++ "addabs %0, %3, %1"
++ [(set_attr "length" "4")
++ (set_attr "cc" "set_z")])
++
++(define_peephole
++ [(set (match_operand:SI 2 "register_operand" "=r")
++ (abs:SI (match_operand:SI 1 "register_operand" "r")))
++ (set (match_operand:SI 0 "register_operand" "=r")
++ (plus:SI (match_dup 2)
++ (match_operand:SI 3 "register_operand" "r")))]
++ "dead_or_set_p(insn, operands[2])"
++ "addabs %0, %3, %1"
++ [(set_attr "length" "4")
++ (set_attr "cc" "set_z")])
++
++
++;;=================================================================
++;; Detect roundings
++;;=================================================================
++
++(define_insn "*round"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (ashiftrt:SI (plus:SI (match_operand:SI 1 "register_operand" "0")
++ (match_operand:SI 2 "immediate_operand" "i"))
++ (match_operand:SI 3 "immediate_operand" "i")))]
++ "avr32_rnd_operands(operands[2], operands[3])"
++
++ "satrnds %0 >> %3, 31"
++
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")]
++
++ )
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (plus:SI (match_dup 0)
++ (match_operand:SI 1 "immediate_operand" "")))
++ (set (match_dup 0)
++ (ashiftrt:SI (match_dup 0)
++ (match_operand:SI 2 "immediate_operand" "")))]
++ "avr32_rnd_operands(operands[1], operands[2])"
++
++ [(set (match_dup 0)
++ (ashiftrt:SI (plus:SI (match_dup 0)
++ (match_dup 1))
++ (match_dup 2)))]
++ )
++
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "r")
++ (plus:SI (match_dup 0)
++ (match_operand:SI 1 "immediate_operand" "i")))
++ (set (match_dup 0)
++ (ashiftrt:SI (match_dup 0)
++ (match_operand:SI 2 "immediate_operand" "i")))]
++ "avr32_rnd_operands(operands[1], operands[2])"
++
++ "satrnds %0 >> %2, 31"
++
++ [(set_attr "type" "alu_sat")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")]
++
++ )
++
++
++
++
++;;=================================================================
++;; Conditional Subtract
++;;=================================================================
++
++
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "")
++ (minus:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (match_dup 1)
++ (unspec:SI [(match_operand 5 "avr32_comparison_operator" "")
++ (match_dup 0)
++ (match_dup 1)
++ (match_operand 3 "general_operand" "")
++ (match_operand 4 "general_operand" "")]
++ UNSPEC_MOVSICC))]
++
++ "(dead_or_set_p(insn, operands[0])) && avr32_const_ok_for_constraint_p(INTVAL(operands[2]), 'K', \"Ks08\")"
++
++ {
++
++ operands[5] = avr32_output_cmp(operands[5], GET_MODE(operands[3]), operands[3], operands[4]);
++
++ return "sub%5 %1, %2";
++ }
++
++ [(set_attr "length" "10")
++ (set_attr "cc" "clobber")]
++ )
++
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "")
++ (plus:SI (match_operand:SI 1 "register_operand" "")
++ (match_operand:SI 2 "immediate_operand" "")))
++ (set (match_dup 1)
++ (unspec:SI [(match_operand 5 "avr32_comparison_operator" "")
++ (match_dup 0)
++ (match_dup 1)
++ (match_operand 3 "general_operand" "")
++ (match_operand 4 "general_operand" "")]
++ UNSPEC_MOVSICC))]
++
++ "(dead_or_set_p(insn, operands[0]) && avr32_const_ok_for_constraint_p(INTVAL(operands[2]), 'I', \"Is08\"))"
++
++ {
++ operands[5] = avr32_output_cmp(operands[5], GET_MODE(operands[3]), operands[3], operands[4]);
++
++ return "sub%5 %1, %n2";
++ }
++ [(set_attr "length" "10")
++ (set_attr "cc" "clobber")]
++ )
++
++;;=================================================================
++;; mcall
++;;=================================================================
++(define_peephole
++ [(set (match_operand:SI 0 "register_operand" "")
++ (match_operand 1 "avr32_const_pool_ref_operand" ""))
++ (parallel [(call (mem:SI (match_dup 0))
++ (match_operand 2 "" ""))
++ (clobber (reg:SI LR_REGNUM))])]
++ "dead_or_set_p(insn, operands[0])"
++ "mcall %1"
++ [(set_attr "type" "call")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")]
++)
++
++(define_peephole
++ [(set (match_operand:SI 2 "register_operand" "")
++ (match_operand 1 "avr32_const_pool_ref_operand" ""))
++ (parallel [(set (match_operand 0 "register_operand" "")
++ (call (mem:SI (match_dup 2))
++ (match_operand 3 "" "")))
++ (clobber (reg:SI LR_REGNUM))])]
++ "dead_or_set_p(insn, operands[2])"
++ "mcall %1"
++ [(set_attr "type" "call")
++ (set_attr "length" "4")
++ (set_attr "cc" "call_set")]
++)
++
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (match_operand 1 "avr32_const_pool_ref_operand" ""))
++ (parallel [(call (mem:SI (match_dup 0))
++ (match_operand 2 "" ""))
++ (clobber (reg:SI LR_REGNUM))])]
++ "peep2_reg_dead_p(2, operands[0])"
++ [(parallel [(call (mem:SI (match_dup 1))
++ (match_dup 2))
++ (clobber (reg:SI LR_REGNUM))])]
++ ""
++)
++
++(define_peephole2
++ [(set (match_operand:SI 0 "register_operand" "")
++ (match_operand 1 "avr32_const_pool_ref_operand" ""))
++ (parallel [(set (match_operand 2 "register_operand" "")
++ (call (mem:SI (match_dup 0))
++ (match_operand 3 "" "")))
++ (clobber (reg:SI LR_REGNUM))])]
++ "(peep2_reg_dead_p(2, operands[0]) || (REGNO(operands[2]) == REGNO(operands[0])))"
++ [(parallel [(set (match_dup 2)
++ (call (mem:SI (match_dup 1))
++ (match_dup 3)))
++ (clobber (reg:SI LR_REGNUM))])]
++ ""
++)
++
++;;=================================================================
++;; Returning a value
++;;=================================================================
++
++
++(define_peephole
++ [(set (match_operand 0 "register_operand" "")
++ (match_operand 1 "register_operand" ""))
++ (return)]
++ "USE_RETURN_INSN (TRUE) && (REGNO(operands[0]) == RETVAL_REGNUM)
++ && (REGNO(operands[1]) != LR_REGNUM)
++ && (REGNO_REG_CLASS(REGNO(operands[1])) == GENERAL_REGS)"
++ "retal %1"
++ [(set_attr "type" "call")
++ (set_attr "length" "2")]
++ )
++
++
++(define_peephole
++ [(set (match_operand 0 "register_operand" "r")
++ (match_operand 1 "immediate_operand" "i"))
++ (return)]
++ "(USE_RETURN_INSN (FALSE) && (REGNO(operands[0]) == RETVAL_REGNUM) &&
++ ((INTVAL(operands[1]) == -1) || (INTVAL(operands[1]) == 0) || (INTVAL(operands[1]) == 1)))"
++ {
++ avr32_output_return_instruction (TRUE, FALSE, NULL, operands[1]);
++ return "";
++ }
++ [(set_attr "type" "call")
++ (set_attr "length" "4")]
++ )
++
++(define_peephole
++ [(set (match_operand 0 "register_operand" "r")
++ (match_operand 1 "immediate_operand" "i"))
++ (unspec_volatile [(return)] VUNSPEC_EPILOGUE)]
++ "(REGNO(operands[0]) == RETVAL_REGNUM) &&
++ ((INTVAL(operands[1]) == -1) || (INTVAL(operands[1]) == 0) || (INTVAL(operands[1]) == 1))"
++ {
++ avr32_output_return_instruction (FALSE, FALSE, NULL, operands[1]);
++ return "";
++ }
++ ; Length is absolute worst case
++ [(set_attr "type" "branch")
++ (set_attr "length" "12")]
++ )
++
++(define_peephole
++ [(set (match_operand 0 "register_operand" "r")
++ (unspec [(match_operand 1 "avr32_comparison_operator" "")
++ (match_operand 2 "register_immediate_operand" "rKs08")
++ (match_operand 3 "register_immediate_operand" "rKs08")
++ (match_operand 4 "register_immediate_operand" "r")
++ (match_operand 5 "register_immediate_operand" "rKs21")
++ ]
++ UNSPEC_MOVSICC ))
++ (return)]
++ "USE_RETURN_INSN (TRUE) && (REGNO(operands[0]) == RETVAL_REGNUM) &&
++ ((GET_MODE(operands[4]) == SImode) ||
++ ((GET_MODE(operands[4]) != SImode) && (GET_CODE(operands[5]) == REG)))"
++ {
++ operands[1] = avr32_output_cmp(operands[1], GET_MODE(operands[4]), operands[4], operands[5]);
++
++ if ( GET_CODE(operands[2]) == REG
++ && GET_CODE(operands[3]) == REG
++ && REGNO(operands[2]) != LR_REGNUM
++ && REGNO(operands[3]) != LR_REGNUM ){
++ return "ret%1 %2\;ret%i1 %3";
++ } else if ( GET_CODE(operands[2]) == REG
++ && GET_CODE(operands[3]) == CONST_INT ){
++ if ( INTVAL(operands[3]) == -1
++ || INTVAL(operands[3]) == 0
++ || INTVAL(operands[3]) == 1 ){
++ return "ret%1 %2\;ret%i1 %d3";
++ } else {
++ return "mov%1 r12, %2\;mov%i1 r12, %3\;retal r12";
++ }
++ } else if ( GET_CODE(operands[2]) == CONST_INT
++ && GET_CODE(operands[3]) == REG ){
++ if ( INTVAL(operands[2]) == -1
++ || INTVAL(operands[2]) == 0
++ || INTVAL(operands[2]) == 1 ){
++ return "ret%1 %d2\;ret%i1 %3";
++ } else {
++ return "mov%1 r12, %2\;mov%i1 r12, %3\;retal r12";
++ }
++ } else {
++ if ( (INTVAL(operands[2]) == -1
++ || INTVAL(operands[2]) == 0
++ || INTVAL(operands[2]) == 1 )
++ && (INTVAL(operands[3]) == -1
++ || INTVAL(operands[3]) == 0
++ || INTVAL(operands[3]) == 1 )){
++ return "ret%1 %d2\;ret%i1 %d3";
++ } else {
++ return "mov%1 r12, %2\;mov%i1 r12, %3\;retal r12";
++ }
++ }
++ }
++
++ [(set_attr "length" "14")
++ (set_attr "cc" "clobber")
++ (set_attr "type" "call")])
++
++
++;;=================================================================
++;; mulnhh.w
++;;=================================================================
++
++(define_peephole2
++ [(set (match_operand:HI 0 "register_operand" "")
++ (neg:HI (match_operand:HI 1 "register_operand" "")))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mult:SI
++ (sign_extend:SI (match_dup 0))
++ (sign_extend:SI (match_operand:HI 3 "register_operand" ""))))]
++ "(peep2_reg_dead_p(2, operands[0])) || (REGNO(operands[2]) == REGNO(operands[0]))"
++ [ (set (match_dup 2)
++ (mult:SI
++ (sign_extend:SI (neg:HI (match_dup 1)))
++ (sign_extend:SI (match_dup 3))))]
++ ""
++ )
++
++(define_peephole2
++ [(set (match_operand:HI 0 "register_operand" "")
++ (neg:HI (match_operand:HI 1 "register_operand" "")))
++ (set (match_operand:SI 2 "register_operand" "")
++ (mult:SI
++ (sign_extend:SI (match_operand:HI 3 "register_operand" ""))
++ (sign_extend:SI (match_dup 0))))]
++ "(peep2_reg_dead_p(2, operands[0])) || (REGNO(operands[2]) == REGNO(operands[0]))"
++ [ (set (match_dup 2)
++ (mult:SI
++ (sign_extend:SI (neg:HI (match_dup 1)))
++ (sign_extend:SI (match_dup 3))))]
++ ""
++ )
++
++
++
++;;=================================================================
++;; sthh.w
++;;=================================================================
++(define_insn "vec_setv2hi"
++ [(set (match_operand:V2HI 0 "register_operand" "=r")
++ (vec_merge:V2HI
++ (match_dup 0)
++ (vec_duplicate:V2HI
++ (match_operand:HI 1 "register_operand" "r"))
++ (const_int 1)))]
++ ""
++ "bfins\t%0, %1, 16, 16"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")])
++
++(define_insn "vec_setv2lo"
++ [(set (match_operand:V2HI 0 "register_operand" "+r")
++ (vec_merge:V2HI
++ (match_dup 0)
++ (vec_duplicate:V2HI
++ (match_operand:HI 1 "register_operand" "r"))
++ (const_int 2)))]
++ ""
++ "bfins\t%0, %1, 0, 16"
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")])
++
++(define_expand "vec_setv2"
++ [(set (match_operand:V2HI 0 "register_operand" "")
++ (vec_merge:V2HI
++ (match_dup 0)
++ (vec_duplicate:V2HI
++ (match_operand:HI 1 "register_operand" ""))
++ (match_operand 2 "immediate_operand" "")))]
++ ""
++ { operands[2] = GEN_INT(INTVAL(operands[2]) + 1); }
++ )
++
++(define_insn "vec_extractv2hi"
++ [(set (match_operand:HI 0 "register_operand" "=r")
++ (vec_select:HI
++ (match_operand:V2HI 1 "register_operand" "r")
++ (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
++ ""
++ {
++ if ( INTVAL(operands[2]) == 0 )
++ return "bfextu\t%0, %1, 16, 16";
++ else
++ return "bfextu\t%0, %1, 0, 16";
++ }
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")])
++
++(define_insn "vec_extractv4qi"
++ [(set (match_operand:QI 0 "register_operand" "=r")
++ (vec_select:QI
++ (match_operand:V4QI 1 "register_operand" "r")
++ (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
++ ""
++ {
++ switch ( INTVAL(operands[2]) ){
++ case 0:
++ return "bfextu\t%0, %1, 24, 8";
++ case 1:
++ return "bfextu\t%0, %1, 16, 8";
++ case 2:
++ return "bfextu\t%0, %1, 8, 8";
++ case 3:
++ return "bfextu\t%0, %1, 0, 8";
++ default:
++ abort();
++ }
++ }
++ [(set_attr "type" "alu")
++ (set_attr "length" "4")
++ (set_attr "cc" "clobber")])
++
++
++(define_insn "concatv2hi"
++ [(set (match_operand:V2HI 0 "register_operand" "=r, r, r")
++ (vec_concat:V2HI
++ (match_operand:HI 1 "register_operand" "r, r, 0")
++ (match_operand:HI 2 "register_operand" "r, 0, r")))]
++ ""
++ "@
++ mov\t%0, %1\;bfins\t%0, %2, 0, 16
++ bfins\t%0, %2, 0, 16
++ bfins\t%0, %1, 16, 16"
++ [(set_attr "length" "6, 4, 4")
++ (set_attr "type" "alu")])
++
++;(define_peephole2
++; [(set (match_operand:HI 0 "register_operand" "r")
++; (plus:HI (match_operand:HI 3 "register_operand" "r")
++; (match_operand:HI 4 "register_operand" "r")))
++; (set (match_operand:HI 1 "register_operand" "r")
++; (minus:HI (match_dup 3)
++; (match_dup 4)))]
++; "REGNO(operands[0]) != REGNO(operands[3])"
++; [(set (match_dup 2)
++; (vec_concat:V2HI
++; (minus:HI (match_dup 3)
++; (match_dup 4))
++; (plus:HI (match_dup 3) (match_dup 4))))
++; (set (match_dup 1) (vec_select:HI (match_dup 2)
++; (parallel [(const_int 0)])))]
++;
++; "operands[2] = gen_rtx_REG(V2HImode, REGNO(operands[0]));"
++; )
++;
++;(define_peephole2
++; [(set (match_operand:HI 0 "register_operand" "r")
++; (minus:HI (match_operand:HI 3 "register_operand" "r")
++; (match_operand:HI 4 "register_operand" "r")))
++; (set (match_operand:HI 1 "register_operand" "r")
++; (plus:HI (match_dup 3)
++; (match_dup 4)))]
++; "REGNO(operands[0]) != REGNO(operands[3])"
++; [(set (match_dup 2)
++; (vec_concat:V2HI
++; (plus:HI (match_dup 3)
++; (match_dup 4))
++; (minus:HI (match_dup 3) (match_dup 4))))
++; (set (match_dup 1) (vec_select:HI (match_dup 2)
++; (parallel [(const_int 0)])))]
++;
++; "operands[2] = gen_rtx_REG(V2HImode, REGNO(operands[0]));"
++; )
++
++
++;(define_peephole2
++; [(match_scratch:V2HI 5 "r")
++; (set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "")
++; (match_operand:HI 1 "immediate_operand" "")))
++; (match_operand:HI 2 "register_operand" "r"))
++; (set (mem:HI (plus:SI (match_dup 0)
++; (match_operand:HI 3 "immediate_operand" "")))
++; (match_operand:HI 4 "register_operand" "r"))]
++; "(GET_CODE(operands[1]) == CONST_INT) && (GET_CODE(operands[3]) == CONST_INT)
++; && (INTVAL(operands[3]) == (INTVAL(operands[1]) + 2))"
++;
++; [(set (match_dup 5)
++; (vec_concat:V2HI
++; (match_dup 2)
++; (match_dup 4)))
++; (set (mem:V2HI (plus:SI (match_dup 0) (match_dup 1)))
++; (match_dup 5))]
++; ""
++; )
++;
++
++;(define_insn "sthh_w"
++; [(set (match_operand:V2HI 0 "avr32_sthh_w_memory_operand" "m")
++; (vec_concat:V2HI
++; (vec_select:HI (match_operand:V2HI 1 "register_operand" "r")
++; (parallel [(match_operand 3 "immediate_operand" "i")]))
++; (vec_select:HI (match_operand:V2HI 2 "register_operand" "r")
++; (parallel [(match_operand 4 "immediate_operand" "i")]))))]
++; "MEM_ALIGN(operands[0]) >= 32"
++; "sthh.w\t%0, %1:%h3, %2:%h4"
++; [(set_attr "length" "4")
++; (set_attr "type" "store")])
++;
++;(define_peephole2
++; [(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "")
++; (match_operand:HI 1 "immediate_operand" "")))
++; (match_operand:HI 2 "register_operand" "r"))
++; (set (mem:HI (plus:SI (match_dup 0)
++; (match_operand:HI 3 "avr32_sthh_operand" "")))
++; (match_operand:HI 4 "register_operand" "r"))]
++; "(GET_CODE(operands[1]) == CONST_INT) && (GET_CODE(operands[3]) == CONST_INT)
++; && (INTVAL(operands[3]) == (INTVAL(operands[1]) - 2))"
++;
++; [(paralell [(set (mem:HI (plus:SI (match_dup 0)
++; (match_dup 3)))
++; (match_dup 4))
++; (set (mem:HI (plus:SI (match_dup 0)
++; (plus:SI (match_dup 3) (const_int 2))))
++; (match_dup 2))])]
++; ""
++; )
++
++
++;; Load the SIMD description
++(include "simd.md")
++
++;; Load the FP coprocessor patterns
++(include "fpcp.md")
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32-modes.def gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-modes.def
+--- gcc-4.0.2/gcc/config/avr32/avr32-modes.def 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-modes.def 2005-08-19 14:17:15.000000000 +0200
+@@ -0,0 +1 @@
++VECTOR_MODES (INT, 4); /* V4QI V2HI */
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/avr32-protos.h gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-protos.h
+--- gcc-4.0.2/gcc/config/avr32/avr32-protos.h 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/avr32-protos.h 2006-10-10 13:03:42.000000000 +0200
+@@ -0,0 +1,175 @@
++/*
++ Prototypes for exported functions defined in avr32.c
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++ Initial porting by Anders dland.
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++
++#ifndef AVR32_PROTOS_H
++#define AVR32_PROTOS_H
++
++extern const int swap_reg[];
++
++extern int avr32_valid_macmac_bypass (rtx, rtx);
++extern int avr32_valid_mulmac_bypass (rtx, rtx);
++
++extern int avr32_decode_lcomm_symbol_offset (rtx, int *);
++extern void avr32_encode_lcomm_symbol_offset (tree, char *, int);
++
++extern const char *avr32_strip_name_encoding (const char *);
++
++extern rtx avr32_get_note_reg_equiv (rtx insn);
++
++extern int avr32_use_return_insn (int iscond);
++
++extern void avr32_make_reglist16 (int reglist16_vect, char *reglist16_string);
++
++extern void avr32_make_reglist8 (int reglist8_vect, char *reglist8_string);
++extern void avr32_make_fp_reglist_w (int reglist_mask, char *reglist_string);
++extern void avr32_make_fp_reglist_d (int reglist_mask, char *reglist_string);
++
++extern void avr32_output_return_instruction (int single_ret_inst,
++ int iscond, rtx cond,
++ rtx r12_imm);
++extern void avr32_expand_prologue (void);
++extern void avr32_set_return_address (rtx source);
++
++extern int avr32_hard_regno_mode_ok (int regno, enum machine_mode mode);
++extern int avr32_extra_constraint_s (rtx value, const int strict);
++extern int avr32_eh_return_data_regno (const int n);
++extern int avr32_initial_elimination_offset (const int from, const int to);
++extern rtx avr32_function_arg (CUMULATIVE_ARGS * cum, enum machine_mode mode,
++ tree type, int named);
++extern void avr32_init_cumulative_args (CUMULATIVE_ARGS * cum, tree fntype,
++ rtx libname, tree fndecl);
++extern void avr32_function_arg_advance (CUMULATIVE_ARGS * cum,
++ enum machine_mode mode,
++ tree type, int named);
++#ifdef ARGS_SIZE_RTX
++/* expr.h defines ARGS_SIZE_RTX and `enum direction'. */
++extern enum direction avr32_function_arg_padding (enum machine_mode mode,
++ tree type);
++#endif /* ARGS_SIZE_RTX */
++extern rtx avr32_function_value (tree valtype, tree func);
++extern rtx avr32_libcall_value (enum machine_mode mode);
++extern int avr32_sched_use_dfa_pipeline_interface (void);
++extern bool avr32_return_in_memory (tree type, tree fntype);
++extern void avr32_regs_to_save (char *operand);
++extern void avr32_target_asm_function_prologue (FILE * file,
++ HOST_WIDE_INT size);
++extern void avr32_target_asm_function_epilogue (FILE * file,
++ HOST_WIDE_INT size);
++extern void avr32_trampoline_template (FILE * file);
++extern void avr32_initialize_trampoline (rtx addr, rtx fnaddr,
++ rtx static_chain);
++extern int avr32_legitimate_address (enum machine_mode mode, rtx x,
++ int strict);
++extern int avr32_legitimate_constant_p (rtx x);
++
++extern int avr32_legitimate_pic_operand_p (rtx x);
++
++extern rtx avr32_find_symbol (rtx x);
++extern void avr32_select_section (rtx exp, int reloc, int align);
++extern void avr32_encode_section_info (tree decl, rtx rtl, int first);
++extern void avr32_asm_file_end (FILE * stream);
++extern void avr32_asm_output_ascii (FILE * stream, char *ptr, int len);
++extern void avr32_asm_output_common (FILE * stream, const char *name,
++ int size, int rounded);
++extern void avr32_asm_output_label (FILE * stream, const char *name);
++extern void avr32_asm_declare_object_name (FILE * stream, char *name,
++ tree decl);
++extern void avr32_asm_globalize_label (FILE * stream, const char *name);
++extern void avr32_asm_weaken_label (FILE * stream, const char *name);
++extern void avr32_asm_output_external (FILE * stream, tree decl,
++ const char *name);
++extern void avr32_asm_output_external_libcall (FILE * stream, rtx symref);
++extern void avr32_asm_output_labelref (FILE * stream, const char *name);
++extern void avr32_notice_update_cc (rtx exp, rtx insn);
++extern void avr32_print_operand (FILE * stream, rtx x, int code);
++extern void avr32_print_operand_address (FILE * stream, rtx x);
++
++extern int avr32_symbol (rtx x);
++
++extern void avr32_select_rtx_section (enum machine_mode mode, rtx x,
++ unsigned HOST_WIDE_INT align);
++
++extern int avr32_load_multiple_operation (rtx op, enum machine_mode mode);
++extern int avr32_store_multiple_operation (rtx op, enum machine_mode mode);
++
++extern int avr32_const_ok_for_constraint_p (HOST_WIDE_INT value, char c,
++ const char *str);
++
++extern bool avr32_cannot_force_const_mem (rtx x);
++
++extern void avr32_init_builtins (void);
++
++extern rtx avr32_expand_builtin (tree exp, rtx target, rtx subtarget,
++ enum machine_mode mode, int ignore);
++
++extern bool avr32_must_pass_in_stack (enum machine_mode mode, tree type);
++
++extern bool avr32_strict_argument_naming (CUMULATIVE_ARGS * ca);
++
++extern bool avr32_pass_by_reference (CUMULATIVE_ARGS * cum,
++ enum machine_mode mode,
++ tree type, bool named);
++
++extern rtx avr32_gen_load_multiple (rtx * regs, int count, rtx from,
++ int write_back, int in_struct_p,
++ int scalar_p);
++extern rtx avr32_gen_store_multiple (rtx * regs, int count, rtx to,
++ int in_struct_p, int scalar_p);
++extern int avr32_gen_movmemsi (rtx * operands);
++
++extern int avr32_rnd_operands (rtx add, rtx shift);
++extern int avr32_adjust_insn_length (rtx insn, int length);
++
++extern int symbol_mentioned_p (rtx x);
++extern int label_mentioned_p (rtx x);
++extern rtx legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg);
++extern int avr32_address_register_rtx_p (rtx x, int strict_p);
++extern int avr32_legitimate_index_p (enum machine_mode mode, rtx index,
++ int strict_p);
++
++extern int avr32_const_double_immediate (rtx value);
++extern void avr32_init_expanders (void);
++extern rtx avr32_return_addr (int count, rtx frame);
++extern bool avr32_got_mentioned_p (rtx addr);
++
++extern void avr32_final_prescan_insn (rtx insn, rtx * opvec, int noperands);
++
++extern int avr32_expand_movcc (enum machine_mode mode, rtx operands[]);
++extern int avr32_expand_addcc (enum machine_mode mode, rtx operands[]);
++#ifdef RTX_CODE
++extern int avr32_expand_scc (RTX_CODE cond, rtx * operands);
++#endif
++
++extern int avr32_store_bypass (rtx insn_out, rtx insn_in);
++extern int avr32_mul_waw_bypass (rtx insn_out, rtx insn_in);
++extern int avr32_valid_load_double_bypass (rtx insn_out, rtx insn_in);
++extern int avr32_valid_load_quad_bypass (rtx insn_out, rtx insn_in);
++extern rtx avr32_output_cmp (rtx cond, enum machine_mode mode,
++ rtx op0, rtx op1);
++
++rtx get_next_insn_cond (rtx cur_insn);
++int set_next_insn_cond (rtx cur_insn, rtx cond);
++void avr32_override_options (void);
++
++#endif /* AVR32_PROTOS_H */
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/crti.asm gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/crti.asm
+--- gcc-4.0.2/gcc/config/avr32/crti.asm 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/crti.asm 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,64 @@
++/*
++ Init/fini stuff for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++
++/* The code in sections .init and .fini is supposed to be a single
++ regular function. The function in .init is called directly from
++ start in crt1.asm. The function in .fini is atexit()ed in crt1.asm
++ too.
++
++ crti.asm contributes the prologue of a function to these sections,
++ and crtn.asm comes up the epilogue. STARTFILE_SPEC should list
++ crti.o before any other object files that might add code to .init
++ or .fini sections, and ENDFILE_SPEC should list crtn.o after any
++ such object files. */
++
++ .file "crti.asm"
++
++ .section ".init"
++/* Just load the GOT */
++ .align 2
++ .global _init
++_init:
++ stm --sp, r6, lr
++ lddpc r6, 1f
++0:
++ rsub r6, pc
++ rjmp 2f
++ .align 2
++1: .long 0b - _GLOBAL_OFFSET_TABLE_
++2:
++
++ .section ".fini"
++/* Just load the GOT */
++ .align 2
++ .global _fini
++_fini:
++ stm --sp, r6, lr
++ lddpc r6, 1f
++0:
++ rsub r6, pc
++ rjmp 2f
++ .align 2
++1: .long 0b - _GLOBAL_OFFSET_TABLE_
++2:
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/crtn.asm gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/crtn.asm
+--- gcc-4.0.2/gcc/config/avr32/crtn.asm 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/crtn.asm 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,44 @@
++/* Copyright (C) 2001 Free Software Foundation, Inc.
++ Written By Nick Clifton
++
++ This file is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by the
++ Free Software Foundation; either version 2, or (at your option) any
++ later version.
++
++ In addition to the permissions in the GNU General Public License, the
++ Free Software Foundation gives you unlimited permission to link the
++ compiled version of this file with other programs, and to distribute
++ those programs without any restriction coming from the use of this
++ file. (The General Public License restrictions do apply in other
++ respects; for example, they cover modification of the file, and
++ distribution when not linked into another program.)
++
++ This file is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; see the file COPYING. If not, write to
++ the Free Software Foundation, 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ As a special exception, if you link this library with files
++ compiled with GCC to produce an executable, this does not cause
++ the resulting executable to be covered by the GNU General Public License.
++ This exception does not however invalidate any other reasons why
++ the executable file might be covered by the GNU General Public License.
++*/
++
++
++
++
++ .file "crtn.asm"
++
++ .section ".init"
++ ldm sp++, r6, pc
++
++ .section ".fini"
++ ldm sp++, r6, pc
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/fpcp.md gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/fpcp.md
+--- gcc-4.0.2/gcc/config/avr32/fpcp.md 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/fpcp.md 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,551 @@
++;; AVR32 machine description file for Floating-Point instructions.
++;; Copyright 2003-2006 Atmel Corporation.
++;;
++;; Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++;;
++;; This file is part of GCC.
++;;
++;; This program is free software; you can redistribute it and/or modify
++;; it under the terms of the GNU General Public License as published by
++;; the Free Software Foundation; either version 2 of the License, or
++;; (at your option) any later version.
++;;
++;; This program is distributed in the hope that it will be useful,
++;; but WITHOUT ANY WARRANTY; without even the implied warranty of
++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++;; GNU General Public License for more details.
++;;
++;; You should have received a copy of the GNU General Public License
++;; along with this program; if not, write to the Free Software
++;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++;; -*- Mode: Scheme -*-
++
++;;******************************************************************************
++;; Automaton pipeline description for floating-point coprocessor insns
++;;******************************************************************************
++(define_cpu_unit "fid,fm1,fm2,fm3,fm4,fwb,fcmp,fcast" "avr32_ap")
++
++(define_insn_reservation "fmv_op" 1
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fmv"))
++ "is,da,d,fid,fwb")
++
++(define_insn_reservation "fmul_op" 5
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fmul"))
++ "is,da,d,fid,fm1,fm2,fm3,fm4,fwb")
++
++(define_insn_reservation "fcmps_op" 1
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fcmps"))
++ "is,da,d,fid,fcmp")
++
++(define_insn_reservation "fcmpd_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fcmpd"))
++ "is,da,d,fid*2,fcmp")
++
++(define_insn_reservation "fcast_op" 3
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fcast"))
++ "is,da,d,fid,fcmp,fcast,fwb")
++
++(define_insn_reservation "fmvcpu_op" 2
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fmvcpu"))
++ "is,da,d")
++
++(define_insn_reservation "fldd_op" 1
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fldd"))
++ "is,da,d,fwb")
++
++(define_insn_reservation "flds_op" 1
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "flds"))
++ "is,da,d,fwb")
++
++(define_insn_reservation "fsts_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fsts"))
++ "is,da*2,d")
++
++(define_insn_reservation "fstd_op" 0
++ (and (eq_attr "pipeline" "ap")
++ (eq_attr "type" "fstd"))
++ "is,da*2,d")
++
++
++(define_insn "*movsf_fpcp"
++ [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,r,f,m,r,r,r,m")
++ (match_operand:SF 1 "general_operand" " f,r,f,m,f,r,G,m,r"))]
++ "TARGET_HARD_FLOAT"
++ "@
++ fmov.s\t%0, %1
++ fmov.s\t%0, %1
++ fmov.s\t%0, %1
++ fld.s\t%0, %1
++ fst.s\t%0, %1
++ mov\t%0, %1
++ mov\t%0, %1
++ ld.w\t%0, %1
++ st.w\t%0, %1"
++ [(set_attr "length" "4,4,4,4,4,2,4,4,4")
++ (set_attr "type" "fmv,flds,fmvcpu,flds,fsts,alu,alu,load,store")])
++
++(define_insn_and_split "*movdf_fpcp"
++ [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,r,f,m,r,r,m")
++ (match_operand:DF 1 "general_operand" " f,r,f,m,f,r,m,r"))]
++ "TARGET_HARD_FLOAT"
++ "@
++ fmov.d\t%0, %1
++ fmov.d\t%0, %1
++ fmov.d\t%0, %1
++ fld.d\t%0, %1
++ fst.d\t%0, %1
++ mov\t%0, %1\;mov\t%m0, %m1
++ ld.d\t%0, %1
++ st.d\t%0, %1"
++
++ "TARGET_HARD_FLOAT
++ && reload_completed
++ && (REG_P(operands[0]) && (REGNO_REG_CLASS(REGNO(operands[0])) == GENERAL_REGS))
++ && (REG_P(operands[1]) && (REGNO_REG_CLASS(REGNO(operands[1])) == GENERAL_REGS))"
++ [(set (match_dup 0) (match_dup 1))
++ (set (match_dup 2) (match_dup 3))]
++ "
++ {
++ operands[2] = gen_highpart (SImode, operands[0]);
++ operands[0] = gen_lowpart (SImode, operands[0]);
++ operands[3] = gen_highpart(SImode, operands[1]);
++ operands[1] = gen_lowpart(SImode, operands[1]);
++ }
++ "
++
++ [(set_attr "length" "4,4,4,4,4,4,4,4")
++ (set_attr "type" "fmv,fldd,fmvcpu,fldd,fstd,alu2,load2,store2")])
++
++
++(define_insn "mulsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fmul.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "nmulsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (neg:SF (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f"))))]
++ "TARGET_HARD_FLOAT"
++ "fnmul.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "")
++ (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "")
++ (match_operand:SF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:SF 3 "avr32_fp_register_operand" "")
++ (neg:SF (match_dup 0)))]
++ "TARGET_HARD_FLOAT &&
++ (peep2_reg_dead_p(2, operands[0]) || (REGNO(operands[3]) == REGNO(operands[0])))"
++ [(set (match_dup 3)
++ (neg:SF (mult:SF (match_dup 1)
++ (match_dup 2))))]
++)
++
++
++(define_insn "macsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (plus:SF (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f"))
++ (match_operand:SF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fmac.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "nmacsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (plus:SF (neg:SF (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f")))
++ (match_operand:SF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fnmac.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "")
++ (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "")
++ (match_operand:SF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:SF 3 "avr32_fp_register_operand" "")
++ (minus:SF
++ (match_dup 3)
++ (match_dup 0)))]
++ "TARGET_HARD_FLOAT && peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (plus:SF (neg:SF (mult:SF (match_dup 1)
++ (match_dup 2)))
++ (match_dup 3)))]
++)
++
++
++(define_insn "msubacsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (minus:SF (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f"))
++ (match_operand:SF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fmsc.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "")
++ (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "")
++ (match_operand:SF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:SF 3 "avr32_fp_register_operand" "")
++ (minus:SF
++ (match_dup 0)
++ (match_dup 3)))]
++ "TARGET_HARD_FLOAT && peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (minus:SF (mult:SF (match_dup 1)
++ (match_dup 2))
++ (match_dup 3)))]
++)
++
++(define_insn "nmsubacsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (minus:SF (neg:SF (mult:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f")))
++ (match_operand:SF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fnmsc.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++
++
++(define_insn "addsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (plus:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fadd.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "subsf3"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (minus:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")
++ (match_operand:SF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fsub.s\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++
++(define_insn "negsf2"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (neg:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fneg.s\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmv")])
++
++(define_insn "abssf2"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (abs:SF (match_operand:SF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fabs.s\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmv")])
++
++(define_insn "truncdfsf2"
++ [(set (match_operand:SF 0 "avr32_fp_register_operand" "=f")
++ (float_truncate:SF
++ (match_operand:DF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fcastd.s\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fcast")])
++
++(define_insn "extendsfdf2"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (float_extend:DF
++ (match_operand:SF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fcasts.d\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fcast")])
++
++(define_insn "muldf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fmul.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "nmuldf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (neg:DF (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f"))))]
++ "TARGET_HARD_FLOAT"
++ "fnmul.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "")
++ (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "")
++ (match_operand:DF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:DF 3 "avr32_fp_register_operand" "")
++ (neg:DF (match_dup 0)))]
++ "TARGET_HARD_FLOAT &&
++ (peep2_reg_dead_p(2, operands[0]) || (REGNO(operands[3]) == REGNO(operands[0])))"
++ [(set (match_dup 3)
++ (neg:DF (mult:DF (match_dup 1)
++ (match_dup 2))))]
++)
++
++(define_insn "macdf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (plus:DF (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f"))
++ (match_operand:DF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fmac.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "msubacdf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (minus:DF (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f"))
++ (match_operand:DF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fmsc.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "")
++ (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "")
++ (match_operand:DF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:DF 3 "avr32_fp_register_operand" "")
++ (minus:DF
++ (match_dup 0)
++ (match_dup 3)))]
++ "TARGET_HARD_FLOAT && peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (minus:DF (mult:DF (match_dup 1)
++ (match_dup 2))
++ (match_dup 3)))]
++ )
++
++(define_insn "nmsubacdf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (minus:DF (neg:DF (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f")))
++ (match_operand:DF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fnmsc.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "nmacdf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (plus:DF (neg:DF (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f")))
++ (match_operand:DF 3 "avr32_fp_register_operand" "0")))]
++ "TARGET_HARD_FLOAT"
++ "fnmac.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_peephole2
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "")
++ (mult:DF (match_operand:DF 1 "avr32_fp_register_operand" "")
++ (match_operand:DF 2 "avr32_fp_register_operand" "")))
++ (set (match_operand:DF 3 "avr32_fp_register_operand" "")
++ (minus:DF
++ (match_dup 3)
++ (match_dup 0)))]
++ "TARGET_HARD_FLOAT && peep2_reg_dead_p(2, operands[0])"
++ [(set (match_dup 3)
++ (plus:DF (neg:DF (mult:DF (match_dup 1)
++ (match_dup 2)))
++ (match_dup 3)))]
++)
++
++(define_insn "adddf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (plus:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fadd.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "subdf3"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (minus:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")
++ (match_operand:DF 2 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fsub.d\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmul")])
++
++(define_insn "negdf2"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (neg:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fneg.d\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmv")])
++
++(define_insn "absdf2"
++ [(set (match_operand:DF 0 "avr32_fp_register_operand" "=f")
++ (abs:DF (match_operand:DF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ "fabs.d\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmv")])
++
++
++(define_expand "cmpdf"
++ [(set (cc0)
++ (compare:DF
++ (match_operand:DF 0 "general_operand" "")
++ (match_operand:DF 1 "general_operand" "")))]
++ "TARGET_HARD_FLOAT"
++ "{
++ rtx tmpreg;
++ if ( !REG_P(operands[0]) )
++ operands[0] = force_reg(DFmode, operands[0]);
++
++ if ( !REG_P(operands[1]) )
++ operands[1] = force_reg(DFmode, operands[1]);
++
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++
++ emit_insn(gen_cmpdf_internal(operands[0], operands[1]));
++
++ tmpreg = gen_reg_rtx(SImode);
++ emit_insn(gen_fpcc_to_reg(tmpreg));
++ emit_insn(gen_reg_to_cc(tmpreg));
++
++ DONE;
++ }"
++)
++
++(define_insn "cmpdf_internal"
++ [(set (reg:CC FPCC_REGNUM)
++ (compare:CC
++ (match_operand:DF 0 "avr32_fp_register_operand" "f")
++ (match_operand:DF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ {
++ if (!rtx_equal_p(cc_prev_status.mdep.fpvalue, SET_SRC(PATTERN (insn))) )
++ return "fcmp.d\t%0, %1";
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "type" "fcmpd")
++ (set_attr "cc" "fpcompare")])
++
++(define_expand "cmpsf"
++ [(set (cc0)
++ (compare:SF
++ (match_operand:SF 0 "general_operand" "")
++ (match_operand:SF 1 "general_operand" "")))]
++ "TARGET_HARD_FLOAT"
++ "{
++ rtx tmpreg;
++ if ( !REG_P(operands[0]) )
++ operands[0] = force_reg(SFmode, operands[0]);
++
++ if ( !REG_P(operands[1]) )
++ operands[1] = force_reg(SFmode, operands[1]);
++
++ avr32_compare_op0 = operands[0];
++ avr32_compare_op1 = operands[1];
++
++ emit_insn(gen_cmpsf_internal(operands[0], operands[1]));
++
++ tmpreg = gen_reg_rtx(SImode);
++ emit_insn(gen_fpcc_to_reg(tmpreg));
++ emit_insn(gen_reg_to_cc(tmpreg));
++
++ DONE;
++ }"
++)
++
++(define_insn "cmpsf_internal"
++ [(set (reg:CC FPCC_REGNUM)
++ (compare:CC
++ (match_operand:SF 0 "avr32_fp_register_operand" "f")
++ (match_operand:SF 1 "avr32_fp_register_operand" "f")))]
++ "TARGET_HARD_FLOAT"
++ {
++ if (!rtx_equal_p(cc_prev_status.mdep.fpvalue, SET_SRC(PATTERN (insn))) )
++ return "fcmp.s\t%0, %1";
++ return "";
++ }
++ [(set_attr "length" "4")
++ (set_attr "type" "fcmps")
++ (set_attr "cc" "fpcompare")])
++
++(define_insn "fpcc_to_reg"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (unspec:SI [(reg:CC FPCC_REGNUM)]
++ UNSPEC_FPCC_TO_REG))]
++ "TARGET_HARD_FLOAT"
++ "fmov.s\t%0, fsr"
++ [(set_attr "length" "4")
++ (set_attr "type" "fmvcpu")])
++
++(define_insn "reg_to_cc"
++ [(set (cc0)
++ (unspec:SI [(match_operand:SI 0 "register_operand" "r")]
++ UNSPEC_REG_TO_CC))]
++ "TARGET_HARD_FLOAT"
++ "musfr\t%0"
++ [(set_attr "length" "2")
++ (set_attr "type" "alu")
++ (set_attr "cc" "from_fpcc")])
++
++(define_insn "stm_fp"
++ [(unspec [(match_operand 0 "register_operand" "r")
++ (match_operand 1 "const_int_operand" "")
++ (match_operand 2 "const_int_operand" "")]
++ UNSPEC_STMFP)]
++ "TARGET_HARD_FLOAT"
++ {
++ int cop_reglist = INTVAL(operands[1]);
++
++ if (INTVAL(operands[2]) != 0)
++ return "stcm.w\tcp0, --%0, %C1";
++ else
++ return "stcm.w\tcp0, %0, %C1";
++
++ if ( cop_reglist & ~0xff ){
++ operands[1] = GEN_INT(cop_reglist & ~0xff);
++ if (INTVAL(operands[2]) != 0)
++ return "stcm.d\tcp0, --%0, %D1";
++ else
++ return "stcm.d\tcp0, %0, %D1";
++ }
++ }
++ [(set_attr "type" "fstm")
++ (set_attr "length" "4")
++ (set_attr "cc" "none")])
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/lib1funcs.S gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/lib1funcs.S
+--- gcc-4.0.2/gcc/config/avr32/lib1funcs.S 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/lib1funcs.S 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,1678 @@
++/*#define __IEEE_LARGE_FLOATS__*/
++
++/* Adjust the unpacked double number if it is a subnormal number.
++ The exponent and mantissa pair are stored
++ in [mant_hi,mant_lo] and [exp]. A register with the correct sign bit in
++ the MSB is passed in [sign]. Needs two scratch
++ registers [scratch1] and [scratch2]. An adjusted and packed double float
++ is present in [mant_hi,mant_lo] after macro has executed */
++.macro adjust_subnormal_df exp, mant_lo, mant_hi, sign, scratch1, scratch2
++ /* We have an exponent which is <=0 indicating a subnormal number
++ As it should be stored as if the exponent was 1 (although the
++ exponent field is all zeros to indicate a subnormal number)
++ we have to shift down the mantissa to its correct position. */
++ neg \exp
++ sub \exp,-1 /* amount to shift down */
++ cp.w \exp,54
++ brlo 50f /* if more than 53 shift steps, the
++ entire mantissa will disappear
++ without any rounding to occur */
++ mov \mant_hi, 0
++ mov \mant_lo, 0
++ rjmp 52f
++50:
++ sub \exp,-10 /* do the shift to position the
++ mantissa at the same time
++ note! this does not include the
++ final 1 step shift to add the sign */
++
++ /* when shifting, save all shifted out bits in [scratch2]. we may need to
++ look at them to make correct rounding. */
++
++ rsub \scratch1,\exp,32 /* get inverted shift count */
++ cp.w \exp,32 /* handle shifts >= 32 separately */
++ brhs 51f
++
++ /* small (<32) shift amount, both words are part of the shift */
++ lsl \scratch2,\mant_lo,\scratch1 /* save bits to shift out from lsw*/
++ lsl \scratch1,\mant_hi,\scratch1 /* get bits from msw destined for lsw*/
++ lsr \mant_lo,\mant_lo,\exp /* shift down lsw */
++ lsr \mant_hi,\mant_hi,\exp /* shift down msw */
++ or \mant_hi,\scratch1 /* add bits from msw with prepared lsw */
++ rjmp 50f
++
++ /* large (>=32) shift amount, only lsw will have bits left after shift.
++ note that shift operations will use ((shift count) mod 32) so
++ we do not need to subtract 32 from shift count. */
++51:
++ lsl \scratch2,\mant_hi,\scratch1 /* save bits to shift out from msw */
++ or \scratch2,\mant_lo /* also save all bits from lsw */
++ mov \mant_lo,\mant_hi /* msw -> lsw (i.e. "shift 32 first") */
++ mov \mant_hi,0 /* clear msw */
++ lsr \mant_lo,\mant_lo,\exp /* make rest of shift inside lsw */
++
++50:
++ /* result is almost ready to return, except that least significant bit
++ and the part we already shifted out may cause the result to be
++ rounded */
++ bld \mant_lo,0 /* get bit to be shifted out */
++ brcc 51f /* if bit was 0, no rounding */
++
++ /* msb of part to remove is 1, so rounding depends on rest of bits */
++ tst \scratch2,\scratch2 /* get shifted out tail */
++ brne 50f /* if rest > 0, do round */
++ bld \mant_lo,1 /* we have to look at lsb in result */
++ brcc 51f /* if lsb is 0, don't round */
++
++50:
++ /* subnormal result requires rounding
++ rounding may cause subnormal to become smallest normal number
++ luckily, smallest normal number has exactly the representation
++ we got by rippling a one bit up from mantissa into exponent field. */
++ sub \mant_lo,-1
++ subcc \mant_hi,-1
++
++51:
++ /* shift and return packed double with correct sign */
++ rol \sign
++ ror \mant_hi
++ ror \mant_lo
++52:
++.endm
++
++
++/* Adjust subnormal single float number with exponent [exp]
++ and mantissa [mant] and round. */
++.macro adjust_subnormal_sf sf, exp, mant, sign, scratch
++ /* subnormal number */
++ rsub \exp,\exp, 1 /* shift amount */
++ cp.w \exp, 25
++ movhs \mant, 0
++ brhs 90f /* Return zero */
++ rsub \scratch, \exp, 32
++ lsl \scratch, \mant,\scratch/* Check if there are any bits set
++ in the bits discarded in the mantissa */
++ srne \scratch /* If so set the lsb of the shifted mantissa */
++ lsr \mant,\mant,\exp /* Shift the mantissa */
++ or \mant, \scratch /* Round lsb if any bits were shifted out */
++ /* Rounding : For explaination, see round_sf. */
++ mov \scratch, 0x7f /* Set rounding constant */
++ bld \mant, 8
++ subeq \scratch, -1 /* For odd numbers use rounding constant 0x80 */
++ add \mant, \scratch /* Add rounding constant to mantissa */
++ /* We can't overflow because mantissa is at least shifted one position
++ to the right so the implicit bit is zero. We can however get the implicit
++ bit set after rounding which means that we have the lowest normal number
++ but this is ok since this bit has the same position as the LSB of the
++ exponent */
++ lsr \sf, \mant, 7
++ /* Rotate in sign */
++ lsl \sign, 1
++ ror \sf
++90:
++.endm
++
++
++/* Round the unpacked df number with exponent [exp] and
++ mantissa [mant_hi, mant_lo]. Uses scratch register
++ [scratch] */
++.macro round_df exp, mant_lo, mant_hi, scratch
++ mov \scratch, 0x3ff /* Rounding constant */
++ bld \mant_lo,11 /* Check if lsb in the final result is
++ set */
++ subeq \scratch, -1 /* Adjust rounding constant to 0x400
++ if rounding 0.5 upwards */
++ add \mant_lo, \scratch /* Round */
++ acr \mant_hi /* If overflowing we know that
++ we have all zeros in the bits not
++ scaled out so we can leave them
++ but we must increase the exponent with
++ two since we had an implicit bit
++ which is lost + the extra overflow bit */
++ subcs \exp, -2 /* Update exponent */
++.endm
++
++/* Round single float number stored in [mant] and [exp] */
++.macro round_sf exp, mant, scratch
++ /* Round:
++ For 0.5 we round to nearest even integer
++ for all other cases we round to nearest integer.
++ This means that if the digit left of the "point" (.)
++ is 1 we can add 0x80 to the mantissa since the
++ corner case 0x180 will round up to 0x200. If the
++ digit left of the "point" is 0 we will have to
++ add 0x7f since this will give 0xff and hence a
++ truncation/rounding downwards for the corner
++ case when the 9 lowest bits are 0x080 */
++ mov \scratch, 0x7f /* Set rounding constant */
++ /* Check if the mantissa is even or odd */
++ bld \mant, 8
++ subeq \scratch, -1 /* Rounding constant should be 0x80 */
++ add \mant, \scratch
++ subcs \exp, -2 /* Adjust exponent if we overflowed */
++.endm
++
++/* Scale mantissa [mant_hi, mant_lo] with amount [shift_count].
++ Uses scratch registers [scratch1] and [scratch2] */
++.macro scale_df shift_count, mant_lo, mant_hi, scratch1, scratch2
++ /* Scale [mant_hi, mant_lo] with shift_amount.
++ Must not forget the sticky bits we intend to shift out. */
++
++ rsub \scratch1,\shift_count,32/* get (32 - shift count)
++ (if shift count > 32 we get a
++ negative value, but that will
++ work as well in the code below.) */
++
++ cp.w \shift_count,32 /* handle shifts >= 32 separately */
++ brhs 70f
++
++ /* small (<32) shift amount, both words are part of the shift
++ first remember whether part that is lost contains any 1 bits ... */
++ lsl \scratch2,\mant_lo,\scratch1 /*shift away bits that are part of
++ final mantissa. only part that goes
++ to scratch2 are bits that will be lost */
++
++ /* ... and now to the actual shift */
++ lsl \scratch1,\mant_hi,\scratch1 /* get bits from msw destined for lsw*/
++ lsr \mant_lo,\mant_lo,\shift_count /* shift down lsw of mantissa */
++ lsr \mant_hi,\mant_hi,\shift_count /* shift down msw of mantissa */
++ or \mant_lo,\scratch1 /* combine these bits with prepared lsw*/
++ rjmp 71f
++
++ /* large (>=32) shift amount, only lsw will have bits left after shift.
++ note that shift operations will use ((shift count) mod 32) so
++ we do not need to subtract 32 from shift count. */
++70:
++ /* first remember whether part that is lost contains any 1 bits ... */
++ lsl \scratch2,\mant_hi,\scratch1 /* save all lost bits from msw */
++ or \scratch2,\mant_lo /* also save lost bits (all) from lsw
++ now scratch2<>0 if we lose any bits */
++
++ /* ... and now to the actual shift */
++ mov \mant_lo,\mant_hi /* msw -> lsw (i.e. "shift 32 first")*/
++ mov \mant_hi,0 /* clear msw */
++ lsr \mant_lo,\mant_lo,\shift_count /* make rest of shift inside lsw*/
++
++71:
++ cp.w \scratch2,0 /* if any '1' bit in part we lost ...*/
++ breq 70f
++
++ sbr \mant_lo,0 /* ... we need to set sticky bit*/
++70:
++.endm
++
++/* Unpack exponent and mantissa from the double number
++ stored in [df_hi,df_lo]. The exponent is stored in [exp]
++ while the mantissa is stored in [df_hi,df_lo]. */
++
++.macro unpack_df exp, df_lo, df_hi
++ lsr \exp, \df_hi,21 /* Extract exponent */
++ lsl \df_hi,10 /* Get mantissa */
++ or \df_hi,\df_hi,\df_lo>>21
++ lsl \df_lo,11
++
++ neg \exp /* Fix implicit bit */
++ bst \df_hi,31
++ subeq \exp,1
++ neg \exp /* negate back exponent */
++ .endm
++
++/* Unpack exponent and mantissa from the single float number
++ stored in [sf]. The exponent is stored in [exp]
++ while the mantissa is stored in [sf]. */
++.macro unpack_sf exp, sf
++ lsr \exp, \sf, 24
++ brne 80f
++ /* Fix subnormal number */
++ lsl \sf,7
++ clz \exp,\sf
++ lsl \sf,\sf,\exp
++ rsub \exp,\exp,1
++ rjmp 81f
++80:
++ lsl \sf,7
++ sbr \sf, 31 /*Implicit bit*/
++81:
++.endm
++
++
++
++/* Pack a single float number stored in [mant] and [exp]
++ into a single float number in [sf] */
++.macro pack_sf sf, exp, mant
++ bld \mant,31 /* implicit bit to z */
++ subne \exp,1 /* if subnormal (implicit bit 0)
++ adjust exponent to storage format */
++
++ lsr \sf, \mant, 7
++ bfins \sf, \exp, 24, 8
++.endm
++
++/* Pack exponent [exp] and mantissa [mant_hi, mant_lo]
++ into [df_hi, df_lo]. [df_hi] is shifted
++ one bit up so the sign bit can be shifted into it */
++
++.macro pack_df exp, mant_lo, mant_hi, df_lo, df_hi
++ bld \mant_hi,31 /* implicit bit to z */
++ subne \exp,1 /* if subnormal (implicit bit 0)
++ adjust exponent to storage format */
++
++ lsr \mant_lo,11 /* shift back lsw */
++ or \df_lo,\mant_lo,\mant_hi<<21 /* combine with low bits from msw */
++ lsl \mant_hi,1 /* get rid of implicit bit */
++ lsr \mant_hi,11 /* shift back msw except for one step*/
++ or \df_hi,\mant_hi,\exp<<21 /* combine msw with exponent */
++.endm
++
++/* Normalize single float number stored in [mant] and [exp]
++ using scratch register [scratch] */
++.macro normalize_sf exp, mant, scratch
++ /* Adjust exponent and mantissa */
++ clz \scratch, \mant
++ sub \exp, \scratch
++ lsl \mant, \mant, \scratch
++.endm
++
++/* Normalize the exponent and mantissa pair stored
++ in [mant_hi,mant_lo] and [exp]. Needs two scratch
++ registers [scratch1] and [scratch2]. */
++.macro normalize_df exp, mant_lo, mant_hi, scratch1, scratch2
++ clz \scratch1,\mant_hi /* Check if we have zeros in high bits */
++ breq 80f /* No need for scaling if no zeros in high bits */
++ cp.w \scratch1,32 /* Check for all zeros */
++ breq 81f
++
++ /* shift amount is smaller than 32, and involves both msw and lsw*/
++ rsub \scratch2,\scratch1,32 /* shift mantissa */
++ lsl \mant_hi,\mant_hi,\scratch1
++ lsr \scratch2,\mant_lo,\scratch2
++ or \mant_hi,\scratch2
++ lsl \mant_lo,\mant_lo,\scratch1
++ sub \exp,\scratch1 /* adjust exponent */
++ rjmp 80f /* Finished */
++81:
++ /* shift amount is greater than 32 */
++ clz \scratch1,\mant_lo /* shift mantissa */
++ sub \scratch1,-32
++ mov \mant_hi,\mant_lo
++ lsl \mant_hi,\mant_hi,\scratch1
++ mov \mant_lo,0
++ sub \exp,\scratch1 /* adjust exponent */
++80:
++.endm
++
++
++#ifdef L_avr32_f64_mul
++ .align 2
++ .global __avr32_f64_mul
++ .type __avr32_f64_mul,@function
++
++__avr32_f64_mul:
++ pushm r0-r3,r4-r7,lr
++
++ /* Unpack */
++ eor r12, r11, r9 /* Sign op1 ^ Sign op2 is MSB of r12*/
++ lsl r11,1 /* Unpack op1 */
++ lsl r9,1 /* Unpack op2 */
++
++ /* Sort operands op1 >= op2 */
++ lddpc r5, .Linf
++ cp.w r10,r8
++ cpc r11,r9
++ brhs 0f
++
++ mov r7,r11 /* swap operands if op2 was larger */
++ mov r6,r10
++ mov r11,r9
++ mov r10,r8
++ mov r9,r7
++ mov r8,r6
++
++0:
++ /* Check against infinity */
++ cp.w r11,r5
++ brlo 1f
++ /* infinity or nan */
++ /* we have to check low word as well as nan mantissa may be 0 in msw*/
++ cpc r10
++ /* we know that op1 is inf or nan. if z != 1 then we have nan.
++ in this case, also return nan. */
++ breq 0f
++ /* Return NaN */
++ mov r11, -1
++ rjmp __dfmul_return_op1
++0:
++
++ /* op1 is infinity. op2 is smaller or same so it cannot be nan.
++ it can be infinity or a (sub-)normal number.
++ we should return op1 (infinity) except when op2 is zero when
++ result should be nan. */
++ or r5,r9,r8
++ brne __dfmul_return_op1 /* op2 is not zero. return op1.*/
++ /* Return NaN */
++ mov r11, -1
++ rjmp __dfmul_return_op1
++
++1:
++ /* no operand is inf/nan, and operands have been arranged in order
++ with op1 >= op2, implying that if we have a zero, it is found in
++ op2. in this case, result should be zero (with sign from both ops). */
++
++ or r5,r9,r8 /* check the smaller value for zero */
++ brne 0f
++ mov r10, 0
++ mov r11, 0
++ rjmp __dfmul_return_op1 /* Early exit */
++0:
++
++ /* we have two "normal" (can be subnormal) nonzero numbers in r11:r10
++ and r9:r8. sign of result is already calculated in r12.
++ perform a normal multiplication. */
++
++ /* Unpack and normalize*/
++ unpack_df r7 /*exp*/, r10, r11 /* mantissa */
++ normalize_df r7 /*exp*/, r10, r11 /* mantissa */, r4, r5 /* scratch */
++
++
++ /* Unpack and normalize*/
++ unpack_df r6 /*exp*/, r8, r9 /* mantissa */
++ normalize_df r6 /*exp*/, r8, r9 /* mantissa */, r4, r5 /* scratch */
++
++ /* Multiply */
++
++ mulu.d r0,r10,r8
++ add lr,r7,r6 /* calculate new exponent after mul */
++ mulu.d r2,r11,r8
++ sub lr,(1023-1) /* remove exponent bias as we have
++ included bias from both op1 and op2
++ sub one less, or in other words
++ add one to exponent. see below why. */
++ mulu.d r6,r11,r9
++ add r2,r1
++ mulu.d r4,r10,r9
++
++
++ adc r6,r6,r3
++ acr r7
++
++ add r4,r2
++ adc r6,r6,r5
++ acr r7
++
++ // r7:r6 is now in range [0x4000...0000 - 0xffff...fffe]
++ // remaining bits in r0 and r4 are of no interest, except that we have
++ // to add a sticky bit to r10 in case we had a 1 bit in r4 or r0.
++
++ or r4,r0
++ movne r0, 1 /* If we have bits in r4 or r0 */
++ or r6,r0 /* set lsb of result to 1 */
++
++
++ // if msb is set, it was because multiplication gave an "overflow"
++ // of one bit so exponent should be incremented.
++ // we already did that above so we are done.
++ // if msb is *not* set it will be normalized and exponent will be
++ // decremented (which will compensate the one we added above).
++
++ normalize_df lr /*exp*/, r6, r7 /* mantissa */, r8, r9 /* scratch */
++
++ /* Check if a subnormal result was created */
++ cp.w lr, 0
++ brgt 0f
++
++ adjust_subnormal_df lr, r6, r7, r12, r8, r9
++ mov r10, r6
++ mov r11, r7
++ popm r0-r3,r4-r7, pc
++0:
++
++ /* Round result */
++ round_df lr /*exp*/, r6, r7 /* Mantissa */, r4 /*scratch*/
++ cp.w lr,0x7ff
++ brlt 0f
++ /*Return infinity */
++ lddpc r11, .Linf
++ mov r10, 0
++ rjmp __dfmul_return_op1
++
++0:
++
++ /* Pack */
++ pack_df lr /*exp*/, r6, r7 /* mantissa */, r10, r11 /* Output df number*/
++__dfmul_return_op1:
++ lsl r12,1 /* shift in sign bit */
++ ror r11
++
++ popm r0-r3,r4-r7, pc
++
++#endif
++
++
++#ifdef L_avr32_f64_addsub
++ .align 2
++ .global __avr32_f64_sub
++ .type __avr32_f64_sub,@function
++
++__avr32_f64_sub:
++ pushm r4-r7,lr
++
++ eor r12,r11,r9 // compare signs of operands
++ bld r12,31
++ brcc __dfsub // same sign => subtract
++
++ eorh r9,0x8000
++ rjmp __dfadd // different signs => op1 + (-op2)
++__dfsub:
++
++ lsl r11,1 // unpack op1 msw and get sign in c
++ or r4,r11,r10 // check if all bits zero
++ brne 1f
++
++ // op1 is zero, negate op2 and handle as add
++ eorh r9,0x8000
++ // op1 is +/-0, and is unpacked with sign in c. add to op2.
++ // also used by sub, but op2 has been negated in this case
++ ror r12 // save sign of op1 in msb of r12
++ lsl r9,1 // unpack msw and get sign of op2
++ or r4,r9,r8 // check all bits in op2
++ breq 0f
++
++ // if op2 != 0, then return op2 unchanged.
++ ror r9 // pack op2 msw again with sign from c
++ mov r11,r9
++ mov r10,r8
++ popm r4-r7,pc
++
++0:
++ // both op1 and op2 zero, but sign unknown. result should and signs.
++ ror r9 // pack op2 msw again with sign from c
++ lsl r12,1 // get back sign of op1 into c ...
++ ror r11 // and back in original op1
++ and r11,r9 // and sign bits. as op1 is zero, the
++ // only bit which can be 1 is sign bit
++ popm r4-r7,pc
++
++1:
++ ror r12 // save op1 sign in msb of r12
++
++ lsl r9,1 // unpack op2 msw
++ or r4,r8,r9
++ brne 0f
++ // op2 is zero, return op1
++ // whatever it is. the only case
++ // requiring special handling is if
++ // op1 is zero, but that was handled
++ // above.
++ lsl r12, 1
++ ror r11
++ popm r4-r7,pc
++
++0:
++ // make sure that op1 >= op2, flip sign if we swap ops
++ cp.w r10,r8
++ cpc r11,r9
++ brhs 0f
++
++ com r12 // sign of op1 and result in lsb(r12)
++ mov r7,r11 // swap operands if op2 was larger
++ mov r6,r10
++ mov r11,r9
++ mov r10,r8
++ mov r9,r7
++ mov r8,r6
++
++0:
++ // check if op1 is nan or inf.
++ lddpc r5,.Linf
++ cp.w r11,r5
++ brlo 1f
++ /* Op 1 is nan or inf */
++ // we have to check low word as well as nan mantissa may be 0 in msw
++ cpc r10
++ // we know that op1 is inf or nan. if z != 1 then we have nan.
++ // if we have nan, return nan.
++ breq 0f
++ mov r11, -1
++ rjmp __dfsub_return_op1
++0:
++
++ // op1 is infinity. check if op2 is nan, infinty or a normal number.
++ cp.w r9,r5
++ movhs r11, -1 // op2 is a normal number. return op1.
++
++ // op2 can be infinity (of the same sign as op1) or nan.
++ // in both cases we should return nan.
++ rjmp __dfsub_return_op1
++1:
++ // if op1 is not inf or nan, then op2 cannot be since op1 >= op2
++
++ // now prepare the operands by expanding them and shifting op2
++ // to the correct position for the subtract. note! if op2 is
++ // insignificant compared to op1, the function will take care of
++ // this and return op1 directly to the application.
++
++ /* Unpack operands */
++ unpack_df r7 /* exp op1*/, r10, r11 /* Mantissa op1 */
++ unpack_df r6 /* exp op2*/, r8, r9 /* Mantissa op2 */
++
++ /* Get shift amount required for aligning op1 and op2 */
++ rsub r6, r7
++ breq __perform_dfsub /* No shift needed */
++
++ cp.w r6, 63
++ brhs __dfsub_pack_result /* Op 2 insignificant compared to op1 */
++
++ /* Shift mantissa of op2 so that op1 and op2 are aligned */
++ scale_df r6 /* shift_count*/, r8, r9 /* Mantissa */, r4, r5 /*Scratch*/
++
++__perform_dfsub:
++ sub r10,r8 /* subtract mantissa of op2 from op1 */
++ sbc r11,r11,r9
++ or r4,r11,r10 /* check if result is all zeroes */
++ brne 0f
++ popm r4-r7,pc /* Early return */
++0:
++
++ normalize_df r7 /*exp*/, r10, r11 /* mantissa */, r8, r9 /* scratch */
++
++ /* Check if a subnormal result was created */
++ cp.w r7, 0
++ brgt 0f
++
++ adjust_subnormal_df r7 /*exp*/, r10, r11 /* Mantissa */, r12 /*sign*/, r8, r9 /*scratch*/
++ popm r4-r7,pc
++0:
++
++ /* Round result */
++ round_df r7 /*exp*/, r10, r11 /* Mantissa */, r9 /*scratch*/
++ cp.w r7,0x7ff
++ brlt __dfsub_pack_result
++ /*Return infinity */
++ lddpc r11, .Linf
++ mov r10, 0
++ rjmp __dfsub_return_op1
++
++__dfsub_pack_result:
++ /* Pack */
++ pack_df r7 /*exp*/, r10, r11 /* mantissa */, r10, r11 /* Output df number*/
++
++__dfsub_return_op1:
++ lsl r12,1
++ ror r11
++ popm r4-r7,pc
++
++ .align 2
++ .global __avr32_f64_add
++ .type __avr32_f64_add,@function
++__avr32_f64_add:
++ pushm r4-r7,lr
++ eor r12,r11,r9 // compare signs of operands
++ lsl r12,1
++ brcc __dfadd // same sign => add
++
++ eorh r9,0x8000
++ rjmp __dfsub // different signs => op1 - (-op2)
++__dfadd:
++
++ lsl r11,1 // unpack op1 msw and get sign in c
++ or r4,r11,r10 // check if all bits zero
++ brne 1f
++
++ // op1 is +/-0, and is unpacked with sign in c. add to op2.
++ // also used by sub, but op2 has been negated in this case
++ ror r12 // save sign of op1 in msb of r12
++ lsl r9,1 // unpack msw and get sign of op2
++ or r4,r9,r8 // check all bits in op2
++ breq 0f
++
++ // if op2 != 0, then return op2 unchanged.
++ ror r9 // pack op2 msw again with sign from c
++ mov r11,r9
++ mov r10,r8
++ popm r4-r7,pc
++
++0:
++ // both op1 and op2 zero, but sign unknown. result should and signs.
++ ror r9 // pack op2 msw again with sign from c
++ lsl r12,1 // get back sign of op1 into c ...
++ ror r11 // and back in original op1
++ and r11,r9 // and sign bits. as op1 is zero, the
++ // only bit which can be 1 is sign bit
++ popm r4-r7,pc
++1:
++ ror r12 // save op1 sign in msb of r12
++
++ lsl r9,1 // unpack op2 msw
++ or r4,r8,r9
++ brne 0f
++ // op2 is zero, return op1
++ // whatever it is. the only case
++ // requiring special handling is if
++ // op1 is zero, but that was handled
++ // above.
++ lsl r12, 1
++ ror r11
++ popm r4-r7,pc
++0:
++ // make sure that exp[op1] >= exp[op2]
++ cp.w r11,r9
++ brhs 0f
++
++ mov r7,r11 // swap operands if op2 was larger
++ mov r6,r10
++ mov r11,r9
++ mov r10,r8
++ mov r9,r7
++ mov r8,r6
++
++0:
++ // check if op1 is nan or inf.
++ lddpc r5,.Linf
++ cp.w r11,r5
++ brlo 1f
++ /* Op 1 is nan or inf */
++ // we have to check low word as well as nan mantissa may be 0 in msw
++ cpc r10
++ // we know that op1 is inf or nan. if z != 1 then we have nan.
++ // if we have nan, return nan.
++ breq 0f
++ mov r11, -1
++ rjmp __dfadd_return_op1
++0:
++
++ // op1 is infinity. check if op2 is nan, infinty or a normal number.
++ cp.w r9,r5
++ // Op2 is NaN of Inf. Return op2 but with sign of result.
++ // If Op2 is NaN, sign doesn't matter but no need to separate NaN
++ movhs r11, r9
++ movhs r10, r8
++
++ // op2 can be infinity (of the same sign as op1) or nan.
++ // in both cases we should return nan.
++ rjmp __dfadd_return_op1
++1:
++ // if op1 is not inf or nan, then op2 cannot be since exp[op1] >=
++ // exp[op2]
++
++ // now prepare the operands by expanding them and shifting op2
++ // to the correct position for the add. note! if op2 is
++ // insignificant compared to op1, the function will take care of
++ // this and return op1 directly to the application.
++
++ /* Unpack operands */
++ unpack_df r7 /* exp op1*/, r10, r11 /* Mantissa op1 */
++ unpack_df r6 /* exp op2*/, r8, r9 /* Mantissa op2 */
++
++ /* Get shift amount required for aligning op1 and op2 */
++ rsub r6, r7
++ breq __perform_dfadd /* No shift needed */
++
++ cp.w r6, 63
++ brhs __dfadd_pack_result /* Op 2 insignificant compared to op1 */
++
++ /* Shift mantissa of op2 so that op1 and op2 are aligned */
++ scale_df r6 /* shift_count*/, r8, r9 /* Mantissa */, r4, r5 /*Scratch*/
++
++__perform_dfadd:
++ add r10,r8 // add mantissas
++ adc r11,r11,r9
++ brcc 0f
++ ror r11 // overflow => shift down mantissa
++ ror r10
++ brcc 1f // sticky bit shifted out?
++ sbr r10,0 // if so, merge it into result again
++1:
++ sub r7,-1 // increase exponent with 1
++0:
++ normalize_df r7 /*exp*/, r10, r11 /* mantissa */, r8, r9 /* scratch */
++
++ /* Check if a subnormal result was created */
++ cp.w r7, 0
++ brgt 0f
++
++ adjust_subnormal_df r7 /*exp*/, r10, r11 /* Mantissa */, r12 /*sign*/, r8, r9 /*scratch*/
++ popm r4-r7,pc
++0:
++
++ /* Round result */
++ round_df r7 /*exp*/, r10, r11 /* Mantissa */, r9 /*scratch*/
++ cp.w r7,0x7ff
++ brlt __dfadd_pack_result
++ /*Return infinity */
++ lddpc r11, .Linf
++ mov r10, 0
++ rjmp __dfadd_return_op1
++
++__dfadd_pack_result:
++ /* Pack */
++ pack_df r7 /*exp*/, r10, r11 /* mantissa */, r10, r11 /* Output df number*/
++
++__dfadd_return_op1:
++ lsl r12,1
++ ror r11
++ popm r4-r7,pc
++#endif
++
++#ifdef L_avr32_f64_to_u32
++ /* This goes into L_fixdfsi */
++#endif
++
++
++#ifdef L_avr32_f64_to_s32
++ .global __avr32_f64_to_u32
++ .type __avr32_f64_to_u32,@function
++__avr32_f64_to_u32:
++ cp.w r11, 0
++ retmi 0 /* Negative returns 0 */
++#ifdef __LARGE_FLOATS__
++ lsl r12,r11,1
++ lsr r12,21 /* extract exponent*/
++ sub r12,1023 /* convert to unbiased exponent.*/
++ retlo 0 /* too small exponent implies zero. */
++ cp.w r12,32
++ brcc 0f
++ rjmp 1f
++#endif
++
++ /* Fallthrough to df to signed si conversion */
++ .global __avr32_f64_to_s32
++ .type __avr32_f64_to_s32,@function
++__avr32_f64_to_s32:
++ lsl r12,r11,1
++ lsr r12,21 /* extract exponent*/
++ sub r12,1023 /* convert to unbiased exponent.*/
++ retlo 0 /* too small exponent implies zero. */
++
++#ifdef __LARGE_FLOATS__
++ cp.w r12,31
++ brcc 0f
++#endif
++1:
++ rsub r12,r12,31 /* shift count = 31 - exponent */
++ mov r9,r11 /* save sign for later...*/
++ lsl r11,11 /* remove exponent and sign*/
++ sbr r11,31 /* add implicit bit*/
++ or r11,r11,r10>>21 /* get rest of bits from lsw of double */
++ lsr r11,r11,r12 /* shift down mantissa to final place */
++ lsl r9,1 /* sign -> carry */
++ retcc r11 /* if positive, we are done */
++ neg r11 /* if negative float, negate result */
++ ret r11
++
++#ifdef __LARGE_FLOATS__
++0:
++ mov r12,-1 /* r11 = 0xffffffff */
++ lsr r12,1 /* r11 = 0x7fffffff */
++ lsl r11,1 /* sign -> carry */
++ acr r12 /* r11 = signed ? 0x80000000
++ : 0x7fffffff */
++ ret r12
++#endif
++#endif /* L_fixdfsi*/
++
++#ifdef L_avr32_f64_to_u64
++ /* Actual function is in L_fixdfdi */
++#endif
++
++#ifdef L_avr32_f64_to_s64
++ .global __avr32_f64_to_u64
++ .type __avr32_f64_to_u64,@function
++__avr32_f64_to_u64:
++ cp.w r11,0
++ /* Negative numbers return zero */
++ movmi r10, 0
++ movmi r11, 0
++ retmi r11
++#ifdef __LARGE_FLOATS__
++ lsl r9,r11,1
++ lsr r9,21 /* get exponent*/
++ sub r9,1023 /* convert to correct range*/
++ /* Return zero if exponent to small */
++ movlo r10, 0
++ movlo r11, 0
++ retlo r11
++ cp.w r9,64
++ mov r8,r11 /* save sign for later...*/
++ brcs 1f
++ rjmp 2f /* Number to large */
++
++#endif
++
++
++
++ /* Fallthrough */
++ .global __avr32_f64_to_s64
++ .type __avr32_f64_to_s64,@function
++__avr32_f64_to_s64:
++ lsl r9,r11,1
++ lsr r9,21 /* get exponent*/
++ sub r9,1023 /* convert to correct range*/
++ /* Return zero if exponent to small */
++ movlo r10, 0
++ movlo r11, 0
++ retlo r11
++
++#ifdef __LARGE_FLOATS__
++ cp.w r9,63
++ mov r8,r11 /* save sign for later...*/
++ brcc 2f
++#else
++ mov r8,r11 /* save sign for later...*/
++#endif
++1:
++ lsl r11,11 /* remove exponent */
++ sbr r11,31 /* add implicit bit*/
++ or r11,r11,r10>>21 /* get rest of bits from lsw of double*/
++ lsl r10,11 /* align lsw correctly as well */
++ rsub r9,r9,63 /* shift count = 63 - exponent */
++ breq 1f
++
++ cp.w r9,32 /* is shift count more than one reg? */
++ brhs 0f
++
++ mov r12,r11 /* save msw */
++ lsr r10,r10,r9 /* small shift count, shift down lsw */
++ lsr r11,r11,r9 /* small shift count, shift down msw */
++ rsub r9,r9,32 /* get 32-size of shifted out tail */
++ lsl r12,r12,r9 /* align part to move from msw to lsw */
++ or r10,r12 /* combine to get new lsw */
++ rjmp 1f
++
++0:
++ lsr r10,r11,r9 /* large shift count,only lsw get bits
++ note that shift count is modulo 32*/
++ mov r11,0 /* msw will be 0 */
++
++1:
++ lsl r8,1 /* sign -> carry */
++ retcc r11 /* if positive, we are done */
++
++ neg r11 /* if negative float, negate result */
++ neg r10
++ scr r11
++ ret r11
++
++
++#ifdef __LARGE_FLOATS__
++2:
++ mov r11,-1 /* r11 = 0xffffffff */
++ lsr r11,1 /* r11 = 0x7fffffff */
++ lsl r8,1 /* sign -> carry */
++ acr r11 /* r11 = signed ? 0x80000000 */
++ /* : 0x7fffffff */
++ lsl r10,r11,31 /* extend last bit of msw*/
++ asr r10,31
++ ret r11
++#endif
++#endif
++
++#ifdef L_avr32_u32_to_f64
++ /* Code located in L_floatsidf */
++#endif
++
++#ifdef L_avr32_s32_to_f64
++ .global __avr32_u32_to_f64
++ .type __avr32_u32_to_f64,@function
++__avr32_u32_to_f64:
++ sub r11, r12, 0 /* Move to r11 and force Z flag to be updated */
++ mov r12, 0 /* always positive */
++ rjmp 0f /* Jump to common code for floatsidf */
++
++ .global __avr32_s32_to_f64
++ .type __avr32_s32_to_f64,@function
++__avr32_s32_to_f64:
++ mov r11, r12 /* Keep original value in r12 for sign */
++ abs r11 /* Absolute value if r12 */
++0:
++ mov r10,0 /* let remaining bits be zero */
++ reteq r11 /* zero long will return zero float */
++
++ pushm lr
++ mov r9,31+1023 /* set exponent */
++
++ normalize_df r9 /*exp*/, r10, r11 /* mantissa */, r8, lr /* scratch */
++
++ /* Check if a subnormal result was created */
++ cp.w r9, 0
++ brgt 0f
++
++ adjust_subnormal_df r9 /* exp */, r10, r11 /* Mantissa */, r12 /*sign*/, r8, lr /* scratch */
++ popm pc
++0:
++
++ /* Round result */
++ round_df r9 /*exp*/, r10, r11 /* Mantissa */, r8 /*scratch*/
++ cp.w r9,0x7ff
++ brlt 0f
++ /*Return infinity */
++ lddpc r11, .Linf
++ mov r10, 0
++ rjmp __floatsidf_return_op1
++
++0:
++
++ /* Pack */
++ pack_df r9 /*exp*/, r10, r11 /* mantissa */, r10, r11 /* Output df number*/
++__floatsidf_return_op1:
++ lsl r12,1 /* shift in sign bit */
++ ror r11
++
++ popm pc
++#endif
++
++
++#ifdef L_avr32_f32_cmp_eq
++ .global __avr32_f32_cmp_eq
++ .type __avr32_f32_cmp_eq,@function
++__avr32_f32_cmp_eq:
++ cp.w r12, r11
++ brne 0f /* If not equal check for +/-0 */
++
++ /* Check for NaN or Inf */
++ lddpc r11,.Linf_sf
++ lsl r12, 1
++ cp.w r12, r11
++ srls r12 /* 0 if NaN, 1 otherwise */
++ ret r12
++0:
++ /* Or together the two values and shift out the sign bit.
++ If the result is zero, then the two values are both zero. */
++ or r12, r11
++ lsl r12, 1
++ sreq r12
++ ret r12
++#endif
++
++#if defined(L_avr32_f32_cmp_ge) || defined(L_avr32_f32_cmp_lt)
++#ifdef L_avr32_f32_cmp_ge
++ .global __avr32_f32_cmp_ge
++ .type __avr32_f32_cmp_ge,@function
++__avr32_f32_cmp_ge:
++#endif
++#ifdef L_avr32_f32_cmp_lt
++ .global __avr32_f32_cmp_lt
++ .type __avr32_f32_cmp_lt,@function
++__avr32_f32_cmp_lt:
++#endif
++ lsl r10, r12, 1 /* Remove sign bits */
++ lsl r9, r11, 1
++ lddpc r8, .Linf_sf
++ cp.w r10, r8
++ rethi 0 /* Op0 is NaN */
++ cp.w r9, r8
++ rethi 0 /* Op1 is Nan */
++
++ eor r8, r11, r12
++ bld r12, 31
++#ifdef L_avr32_f32_cmp_ge
++ srcc r8 /* Set result to true if op0 is positive*/
++#endif
++#ifdef L_avr32_f32_cmp_lt
++ srcs r8 /* Set result to true if op0 is negative*/
++#endif
++ retmi r8 /* Return if signs are different */
++ brcs 0f /* Both signs negative? */
++
++ /* Both signs positive */
++ cp.w r12, r11
++#ifdef L_avr32_f32_cmp_ge
++ srhs r12
++#endif
++#ifdef L_avr32_f32_cmp_lt
++ srlo r12
++#endif
++ retal r12
++0:
++ /* Both signs negative */
++ cp.w r11, r12
++#ifdef L_avr32_f32_cmp_ge
++ srhs r12
++#endif
++#ifdef L_avr32_f32_cmp_lt
++ srlo r12
++#endif
++ retal r12
++#endif
++
++
++#ifdef L_avr32_f64_cmp_eq
++ .global __avr32_f64_cmp_eq
++ .type __avr32_f64_cmp_eq,@function
++__avr32_f64_cmp_eq:
++ cp.w r10,r8
++ cpc r11,r9
++ brne 0f /* Both args could be zero with different sign bits */
++
++ /* check for NaN */
++ lsl r11,1
++ lddpc r12,.Linf
++ cp.w r10,0
++ cpc r11,r12 /* check if nan or inf */
++ srls r12 /* If Arg is NaN return 0 else 1*/
++ ret r12 /* Return */
++
++0:
++ lsl r11,1 /* get rid of sign bits */
++ lsl r9,1
++ or r11,r10 /* Check if all bits are zero */
++ or r11,r9
++ or r11,r8
++ sreq r12 /* If all zeros the arguments are equal
++ so return 1 else return 0 */
++ ret r12
++#endif
++
++
++#if defined(L_avr32_f64_cmp_ge) || defined(L_avr32_f64_cmp_lt)
++
++#ifdef L_avr32_f64_cmp_ge
++ .global __avr32_f64_cmp_ge
++ .type __avr32_f64_cmp_ge,@function
++__avr32_f64_cmp_ge:
++#endif
++#ifdef L_avr32_f64_cmp_lt
++ .global __avr32_f64_cmp_lt
++ .type __avr32_f64_cmp_lt,@function
++__avr32_f64_cmp_lt:
++#endif
++
++ /* compare magnitude of op1 and op2 */
++ pushm lr
++
++ lsl r11,1 /* Remove sign bit of op1 */
++ srcs lr /* Sign op1 to lsb of lr*/
++ lsl r9,1 /* Remove sign bit of op2 */
++ rol lr /* Sign op2 to lsb of lr, sign bit op1 bit 1 of lr*/
++
++ /* Check for Nan */
++ lddpc r12,.Linf
++ cp.w r10,0
++ cpc r11,r12
++ movhi r12, 0 /* Return false for NaN */
++ brhi 0f /* We have NaN */
++ cp.w r8,0
++ cpc r9,r12
++ movhi r12, 0 /* Return false for NaN */
++ brhi 0f /* We have NaN */
++
++ cp.w lr,3 /* both operands negative ?*/
++ breq 1f
++
++ cp.w lr,1 /* both operands positive? */
++ brlo 2f
++
++ /* Different signs. If sign of op1 is negative the difference
++ between op1 and op2 will always be negative, and if op1 is
++ positive the difference will always be positive */
++#ifdef L_avr32_f64_cmp_ge
++ sreq r12
++#endif
++#ifdef L_avr32_f64_cmp_lt
++ srne r12
++#endif
++ popm pc
++
++
++2:
++ /* Both operands positive. Just compute the difference */
++ cp.w r10,r8
++ cpc r11,r9
++#ifdef L_avr32_f64_cmp_ge
++ srhs r12
++#endif
++#ifdef L_avr32_f64_cmp_lt
++ srlo r12
++#endif
++ popm pc
++
++1:
++ /* Both operands negative. Compute the difference with operands switched */
++ cp r8,r10
++ cpc r9,r11
++#ifdef L_avr32_f64_cmp_ge
++ srhs r12
++#endif
++#ifdef L_avr32_f64_cmp_lt
++ srlo r12
++#endif
++0:
++ popm pc
++#endif
++
++
++
++#ifdef L_avr32_f64_div
++ .global __avr32_f64_div
++ .type __avr32_f64_div,@function
++__avr32_f64_div:
++ stm --sp, r2-r7,lr
++ eor r12, r11, r9 /* Sign(op1) ^ Sign(op2) to msb of r12*/
++ lsl r11,1 /* unpack op1*/
++ lddpc lr,.Linf
++ lsl r9,1 /* unpack op2*/
++
++ cp.w r11,lr
++ brhs 0f /* op1 is NaN or infinity */
++ cp.w r9,lr
++ brhs 1f /* op2 is NaN or infinity */
++ or r5,r9,r8
++ breq 2f /* op2 is zero */
++ or r5,r11,r10
++ breq __dfdiv_return_op1 /* op1 is zero return zero*/
++
++ /* Unpack and normalize */
++ /* op1 */
++ unpack_df r7 /*exp*/, r10, r11 /*df number*/
++ normalize_df r7 /*exp*/, r10, r11 /*Mantissa*/, r4, r5 /*scratch*/
++
++ /* op1 */
++ unpack_df r6 /*exp*/, r8, r9 /*df number*/
++ normalize_df r6 /*exp*/, r8, r9 /*Mantissa*/, r4, r5 /*scratch*/
++
++ /* Compute new exponent */
++ sub r7,r6
++ sub r7,-1023
++
++ /* Do fixed point division of mantissas*/
++ mov r6,55
++ lsr r11,1
++ ror r10
++ lsr r9,1
++ ror r8
++
++3:
++ /* Check if dividend is higher or same than divisor */
++ sub r2,r10,r8
++ sbc r3,r11,r9
++ /* If so move the difference back into the dividend */
++ movhs r10, r2
++ movhs r11, r3
++ /* Update the Quotient */
++ rol r4
++ rol r5
++ eorl r4,1
++
++ /* Shift the dividend */
++ lsl r10,1
++ rol r11
++
++ sub r6,1
++ brne 3b
++
++ /* Check if we have a remainder which will the propagate into
++ the last bit */
++
++ or r11,r11,r10
++ neg r11
++ rol r4
++ rol r5
++
++ /* Adjust mantissa into correct alignment */
++ lsl r11, r5,(64-56)
++ or r11,r11,r4>>(32-64+56)
++ lsl r10,r4, (64-56)
++
++ /* Normalize result */
++ normalize_df r7 /*exp*/, r10, r11 /* mantissa */, r8, r9 /* scratch */
++
++ /* Check if a subnormal result was created */
++ cp.w r7, 0
++ brgt 3f
++
++ adjust_subnormal_df r7 /*exp*/, r10, r11 /* Mantissa */, r12 /*sign*/, r8, r9 /*scratch*/
++ ldm sp++, r2-r7,pc
++3:
++
++ /* Round result */
++ round_df r7 /*exp*/, r10, r11 /* Mantissa */, r9 /*scratch*/
++ cp.w r7,0x7ff
++ brlt __dfdiv_pack_result
++ /*Return infinity */
++ lddpc r11, .Linf
++ mov r10, 0
++ rjmp __dfdiv_return_op1
++
++__dfdiv_pack_result:
++ /* Pack */
++ pack_df r7 /*exp*/, r10, r11 /* mantissa */, r10, r11 /* Output df number*/
++
++__dfdiv_return_op1:
++ lsl r12,1
++ ror r11
++ ldm sp++, r2-r7,pc
++
++0:
++ /* Op1 is NaN or Inf */
++ cpc r10
++ /* If op1 is a NaN the we should return a NaN */
++ brne __dfdiv_return_op1
++
++ /* Op1 is infinity, check op2*/
++ cp.w r9,lr
++ brlo __dfdiv_return_op1 /* Op2 is a normal number return inf */
++ /* Other combinations: return NaN */
++ mov r11, -1
++ ldm sp++, r2-r7,pc
++
++1:
++ /* Op2 is NaN or Inf */
++ cpc r8
++ /* If inf return zero else return NaN*/
++ mov r10, 0
++ moveq r11, 0
++ movne r11, -1
++ ldm sp++, r2-r7,pc
++
++2:
++ /* Op2 is zero */
++ or r6,r11,r10 /* 0.0/0.0 yields NaN */
++ mov r10, 0
++ moveq r11, -1 /* Return NaN */
++ movne r11, lr /* Return inf */
++ rjmp __dfdiv_return_op1
++
++#endif
++
++
++#ifdef L_avr32_f32_div
++ .global __avr32_f32_div
++ .type __avr32_f32_div,@function
++__avr32_f32_div:
++ eor r8, r11, r12 /* MSB(r8) = Sign(op1) ^ Sign(op2) */
++ /* Unpack */
++ lsl r12,1
++ reteq 0 /* Return zero if op1 is zero */
++ lddpc r9, .Linf_sf
++ lsl r11,1
++
++ /* Check op1 for NaN or Inf */
++ cp r12,r9
++ brhs 2f
++
++ /* Check op2 for NaN or Inf */
++ cp r11,r9
++ brhs 3f
++ /* Check op2 for zero */
++ tst r11,r11
++ breq 4f
++
++ /* If op1 is zero return zero */
++ tst r12, r12
++ reteq 0
++
++ /* Unpack op1*/
++ unpack_sf r9 /*exp*/, r12 /*sf*/
++
++ /* Unpack op2*/
++ unpack_sf r10 /*exp*/, r11 /*sf*/
++
++ /* Calculate new exponent */
++ stm --sp,r7,lr
++ sub r9, r10
++ sub r9,-127
++
++ /* Divide */
++ mov r7,26
++
++ lsr r12,1 /* Make room for one more bit in mantissas */
++ lsr r11,1
++
++0:
++ sub r10,r12,r11
++ movcc r12, r10 /* update dividend if divisor smaller */
++ rol lr /* shift result into lr */
++ eorl lr,1 /* flip bit. */
++ lsl r12,1 /* Shift dividend */
++ sub r7,1
++ brne 0b
++
++ /* round and scale*/
++ neg r12 /* c = 1 iff r12 != 0 */
++ rol lr
++ lsl r10,lr,(32-27) /* Adjust mantissa */
++ ldm sp++, r7, lr
++
++
++ normalize_sf r9 /*exp*/, r10 /*mant*/, r11 /*scratch*/
++
++ /* Check for subnormal result */
++ cp.w r9, 0
++ brgt 0f
++
++ /* Adjust a subnormal result */
++ adjust_subnormal_sf r12 /*sf*/, r9 /*exp*/, r10 /*mant*/, r8 /*sign*/,r11 /*scratch*/
++ ret r12
++0:
++ round_sf r9 /*exp*/, r10 /*mant*/, r11 /*scratch*/
++ pack_sf r12 /*sf*/, r9 /*exp*/, r10 /*mant*/
++__divsf_return_op1:
++ lsl r8, 1
++ ror r12
++ ret r12
++
++2:
++ /* Op1 is NaN or inf */
++ retne -1 /* Return NaN if op1 is NaN */
++ /* Op1 is inf check op2 */
++ cp r11, r9
++ brlo __divsf_return_op1 /* inf/number gives inf */
++ ret -1 /* The rest gives NaN*/
++3:
++ /* Op1 is NaN or inf */
++ reteq 0 /* Return zero if number/inf*/
++ ret -1 /* Return NaN*/
++4:
++ /* Op2 is zero ? */
++ tst r12,r12
++ reteq -1 /* 0.0/0.0 is NaN */
++ lddpc r12, .Linf_sf
++ rjmp __divsf_return_op1
++
++#endif
++
++#ifdef L_avr32_f32_mul
++ .global __avr32_f32_mul
++ .type __avr32_f32_mul,@function
++__avr32_f32_mul:
++ eor r8, r11, r12 /* MSB(r8) = Sign(op1) ^ Sign(op2) */
++ lsl r12,1 /* unpack op1 */
++ lsl r11,1 /* unpack op2 */
++
++ /* arrange operands so that that op1 >= op2 */
++ sub r9,r12,r11
++ brcc 0f
++
++ sub r12,r9 /* swap operands if op2 was larger */
++ add r11,r9
++
++0:
++ lddpc r9,.Linf_sf
++ cp r12,r9
++ brhs 2f
++
++ /* Check op2 for zero */
++ tst r11,r11
++ reteq 0 /* Return zero */
++
++ /* Unpack op1 */
++ unpack_sf r9 /*exp*/, r12 /*sf*/
++ /* Unpack op2 */
++ unpack_sf r10 /*exp*/, r11 /*sf*/
++
++ /* Calculate new exponent */
++ add r9,r10
++
++ /* Do the multiplication */
++ mulu.d r10,r12,r11
++
++ sub r9,(127-1) /* remove extra exponent bias */
++
++ /* Check if we have any bits in r10 which
++ means a rounding bit should be inserted in LSB of result */
++ tst r10,r10
++ srne r10
++ or r12,r11,r10
++
++ /* Normalize */
++ normalize_sf r9 /*exp*/, r12 /*mant*/, r11 /*scratch*/
++
++ /* Check for subnormal result */
++ cp.w r9, 0
++ brgt 0f
++
++ /* Adjust a subnormal result */
++ adjust_subnormal_sf r12/*sf*/, r9 /*exp*/, r12 /*mant*/, r8 /*sign*/, r11 /*scratch */
++ ret r12
++0:
++ round_sf r9 /*exp*/, r12 /*mant*/, r11 /*scratch*/
++ cp.w r9, 0xff
++ brlo 1f
++ lddpc r12,.Linf_sf
++ rjmp __mulsf_return_op1
++1:
++ pack_sf r12 /*sf*/, r9 /*exp*/, r12 /*mant*/
++__mulsf_return_op1:
++ lsl r8, 1
++ ror r12
++ ret r12
++
++2:
++ /* Op1 is inf or NaN */
++ retne -1 /* Op1 is NaN return NaN */
++
++ /* Op1 is inf and op2 is smaller so it is either infinity
++ or a subnormal number */
++ cp r11,0
++ brne __mulsf_return_op1 /* op2 is not zero. return op1.*/
++ ret -1 /* inf * 0 return NaN */
++#endif
++
++
++#ifdef L_avr32_s32_to_f32
++ .global __avr32_s32_to_f32
++ .type __avr32_s32_to_f32,@function
++__avr32_s32_to_f32:
++ cp r12, 0
++ reteq r12 /* If zero then return zero float */
++ mov r11, r12 /* Keep the sign */
++ abs r12 /* Compute the absolute value */
++ mov r10, 31 + 127 /* Set the correct exponent */
++
++ /* Normalize */
++ normalize_sf r10 /*exp*/, r12 /*mant*/, r9 /*scratch*/
++
++ /* Check for subnormal result */
++ cp.w r10, 0
++ brgt 0f
++
++ /* Adjust a subnormal result */
++ adjust_subnormal_sf r12/*sf*/, r10 /*exp*/, r12 /*mant*/, r11/*sign*/, r9 /*scratch*/
++ ret r12
++0:
++ round_sf r10 /*exp*/, r12 /*mant*/, r9 /*scratch*/
++ pack_sf r12 /*sf*/, r10 /*exp*/, r12 /*mant*/
++__floatsisf_return_op1:
++ lsl r11, 1
++ ror r12
++ ret r12
++#endif
++
++#ifdef L_avr32_u32_to_f32
++ .global __avr32_u32_to_f32
++ .type __avr32_u32_to_f32,@function
++__avr32_u32_to_f32:
++ cp r12, 0
++ reteq r12 /* If zero then return zero float */
++ mov r10, 31 + 127 /* Set the correct exponent */
++
++ /* Normalize */
++ normalize_sf r10 /*exp*/, r12 /*mant*/, r9 /*scratch*/
++
++ /* Check for subnormal result */
++ cp.w r10, 0
++ brgt 0f
++
++ /* Adjust a subnormal result */
++ mov r8, 0
++ adjust_subnormal_sf r12/*sf*/,r10 /*exp*/, r12 /*mant*/,r8/*sign*/, r9 /*scratch*/
++ ret r12
++0:
++ round_sf r10 /*exp*/, r12 /*mant*/, r9 /*scratch*/
++ pack_sf r12 /*sf*/, r10 /*exp*/, r12 /*mant*/
++__floatunsisf_return_op1:
++ lsr r12,1 /* Sign bit is 0 for unsigned int */
++ ret r12
++#endif
++
++
++#ifdef L_avr32_f32_to_s32
++ .global __avr32_f32_to_s32
++ .type __avr32_f32_to_s32,@function
++__avr32_f32_to_s32:
++ lsr r11,r12,23 /* Extract exponent */
++ castu.b r11
++ sub r11,127 /* Fix bias */
++ retlo 0 /* Negative exponent yields zero integer */
++
++#ifdef __IEEE_LARGE_FLOATS__
++ cp r11,31
++ brcc 0f
++#endif
++ /* Shift mantissa into correct position */
++ rsub r11,r11,31 /* Shift amount */
++ lsl r10,r12,8 /* Get mantissa */
++ sbr r10,31 /* Add implicit bit */
++ lsr r10,r10,r11 /* Perform shift */
++ lsl r12,1 /* Check sign */
++ retcc r10 /* if positive, we are done */
++ neg r10 /* if negative float, negate result */
++ ret r10
++
++#ifdef __IEEE_LARGE_FLOATS__
++0:
++ mov r11,-1
++ lsr r11,1
++ lsl r12,1
++ acr r11
++
++ ret r11
++#endif
++#endif
++
++#ifdef L_avr32_f32_to_u32
++ .global __avr32_f32_to_u32
++ .type __avr32_f32_to_u32,@function
++__avr32_f32_to_u32:
++ cp r12,0
++ retmi 0 /* Negative numbers gives 0 */
++ bfextu r11, r12, 23, 8 /* Extract exponent */
++ sub r11,127 /* Fix bias */
++ retlo 0 /* Negative exponent yields zero integer */
++
++#ifdef __IEEE_LARGE_FLOATS__
++ cp r11,32
++ brcc 0f
++#endif
++ /* Shift mantissa into correct position */
++ rsub r11,r11,31 /* Shift amount */
++ lsl r12,8 /* Get mantissa */
++ sbr r12,31 /* Add implicit bit */
++ lsr r12,r12,r11 /* Perform shift */
++ ret r12
++
++#ifdef __IEEE_LARGE_FLOATS__
++0:
++ mov r11,-1
++ lsr r11,1
++ lsl r12,1
++ acr r11
++
++ ret r11
++#endif
++#endif
++
++#ifdef L_avr32_f32_to_f64
++ .global __avr32_f32_to_f64
++ .type __avr32_f32_to_f64,@function
++
++__avr32_f32_to_f64:
++ lsl r11,r12,1 /* Remove sign bit, keep original value in r12*/
++ moveq r10, 0
++ reteq r11 /* Return zero if input is zero */
++
++ bfextu r9,r11,24,8 /* Get exponent */
++ cp.w r9,0xff /* check for NaN or inf */
++ breq 0f
++
++ lsl r11,7 /* Convert sf mantissa to df format */
++ mov r10,0
++
++ /* Check if implicit bit should be set */
++ cp.w r9, 0
++ subeq r9,-1 /* Adjust exponent if it was 0 */
++ srne r8
++ or r11, r11, r8 << 31 /* Set implicit bit if needed */
++ sub r9,(127-0x3ff) /* Convert exponent to df format exponent */
++
++ pushm lr
++ normalize_df r9 /*exp*/, r10, r11 /*mantissa*/, r8, lr /*scratch*/
++ popm lr
++ pack_df r9 /*exp*/, r10, r11 /*mantissa*/, r10, r11 /*df*/
++
++__extendsfdf_return_op1:
++ /* Rotate in sign bit */
++ lsl r12, 1
++ ror r11
++ ret r11
++
++0:
++ /* Inf or NaN*/
++ lddpc r10, .Linf
++ lsl r11,8 /* check mantissa */
++ movne r11, -1 /* Return NaN */
++ moveq r11, r10 /* Return inf */
++ rjmp __extendsfdf_return_op1
++#endif
++
++
++#ifdef L_avr32_f64_to_f32
++ .global __avr32_f64_to_f32
++ .type __avr32_f64_to_f32,@function
++
++__avr32_f64_to_f32:
++ /* Unpack */
++ lsl r9,r11,1 /* Unpack exponent */
++ lsr r9,21
++
++ reteq 0 /* If exponent is 0 the number is so small
++ that the conversion to single float gives
++ zero */
++
++ lsl r8,r11,10 /* Adjust mantissa */
++ or r12,r8,r10>>22
++
++ lsl r10,10 /* Check if there are any remaining bits
++ in the low part of the mantissa.*/
++ neg r10
++ rol r12 /* If there were remaining bits then set lsb
++ of mantissa to 1 */
++
++ cp r9,0x7ff
++ breq 2f /* Check for NaN or inf */
++
++ sub r9,(0x3ff-127) /* Adjust bias of exponent */
++ sbr r12,31 /* set the implicit bit.*/
++
++ cp.w r9, 0 /* Check for subnormal number */
++ brgt 0f
++
++ /* Adjust a subnormal result */
++ adjust_subnormal_sf r12/*sf*/,r9 /*exp*/, r12 /*mant*/, r11/*sign*/, r10 /*scratch*/
++ ret r12
++0:
++ round_sf r9 /*exp*/, r12 /*mant*/, r10 /*scratch*/
++ pack_sf r12 /*sf*/, r9 /*exp*/, r12 /*mant*/
++__truncdfsf_return_op1:
++ /* Rotate in sign bit */
++ lsl r11, 1
++ ror r12
++ ret r12
++
++
++2:
++ /* NaN or inf */
++ cbr r12,31 /* clear implicit bit */
++ retne -1 /* Return NaN if mantissa not zero */
++ lddpc r12,.Linf_sf
++ ret r12 /* Return inf */
++#endif
++
++
++ .align 2
++.Linf:
++ .long 0xffe00000
++
++ .align 2
++.Linf_sf:
++ .long 0xff000000
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/lib2funcs.S gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/lib2funcs.S
+--- gcc-4.0.2/gcc/config/avr32/lib2funcs.S 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/lib2funcs.S 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,21 @@
++ .align 4
++ .global __nonlocal_goto
++ .type __nonlocal_goto,@function
++
++/* __nonlocal_goto: This function handles nonlocal_goto's in gcc.
++
++ parameter 0 (r12) = New Frame Pointer
++ parameter 1 (r11) = Address to goto
++ parameter 2 (r10) = New Stack Pointer
++
++ This function invalidates the return stack, since it returns from a
++ function without using a return instruction.
++*/
++__nonlocal_goto:
++ mov r7, r12
++ mov sp, r10
++ frs # Flush return stack
++ mov pc, r11
++
++
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/linux-elf.h gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/linux-elf.h
+--- gcc-4.0.2/gcc/config/avr32/linux-elf.h 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/linux-elf.h 2006-11-10 15:14:06.000000000 +0100
+@@ -0,0 +1,154 @@
++/*
++ Linux/Elf specific definitions.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++ and Hvard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of GCC.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++
++
++/* elfos.h should have already been included. Now just override
++ any conflicting definitions and add any extras. */
++
++/* Run-time Target Specification. */
++#undef TARGET_VERSION
++#define TARGET_VERSION fputs (" (AVR32 GNU/Linux with ELF)", stderr);
++
++/* Do not assume anything about header files. */
++#define NO_IMPLICIT_EXTERN_C
++
++/* The GNU C++ standard library requires that these macros be defined. */
++#undef CPLUSPLUS_CPP_SPEC
++#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
++
++/* Now we define the strings used to build the spec file. */
++#undef LIB_SPEC
++#define LIB_SPEC \
++ "%{pthread:-lpthread} \
++ %{shared:-lc} \
++ %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
++
++/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
++ the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
++ provides part of the support for getting C++ file-scope static
++ object constructed before entering `main'. */
++
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC \
++ "%{!shared: \
++ %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
++ %{!p:%{profile:gcrt1.o%s} \
++ %{!profile:crt1.o%s}}}} \
++ crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
++
++/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on
++ the GNU/Linux magical crtend.o file (see crtstuff.c) which
++ provides part of the support for getting C++ file-scope static
++ object constructed before entering `main', followed by a normal
++ GNU/Linux "finalizer" file, `crtn.o'. */
++
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC \
++ "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
++
++#undef ASM_SPEC
++#define ASM_SPEC "%{!mno-pic:--pic} %{mrelax|O*:%{mno-relax|O0|O1: ;:--linkrelax}} %{mcpu=*:-mcpu=%*}"
++
++#undef LINK_SPEC
++#define LINK_SPEC "%{version:-v} \
++ %{static:-Bstatic} \
++ %{shared:-shared} \
++ %{symbolic:-Bsymbolic} \
++ %{rdynamic:-export-dynamic} \
++ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
++ %{mrelax|O*:%{mno-relax|O0|O1: ;:--relax}}"
++
++#define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS()
++
++/* This is how we tell the assembler that two symbols have the same value. */
++#define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \
++ do \
++ { \
++ assemble_name (FILE, NAME1); \
++ fputs (" = ", FILE); \
++ assemble_name (FILE, NAME2); \
++ fputc ('\n', FILE); \
++ } \
++ while (0)
++
++
++
++#undef CC1_SPEC
++#define CC1_SPEC "%{profile:-p}"
++
++/* Target CPU builtins. */
++#define TARGET_CPU_CPP_BUILTINS() \
++ do \
++ { \
++ builtin_define ("__avr32__"); \
++ builtin_define ("__AVR32__"); \
++ builtin_define ("__AVR32_LINUX__"); \
++ builtin_define (avr32_part->macro); \
++ builtin_define (avr32_arch->macro); \
++ if (avr32_arch->uarch_type == UARCH_TYPE_AVR32A) \
++ builtin_define ("__AVR32_AVR32A__"); \
++ else \
++ builtin_define ("__AVR32_AVR32B__"); \
++ if (TARGET_UNALIGNED_WORD) \
++ builtin_define ("__AVR32_HAS_UNALIGNED_WORD__"); \
++ if (TARGET_SIMD) \
++ builtin_define ("__AVR32_HAS_SIMD__"); \
++ if (TARGET_DSP) \
++ builtin_define ("__AVR32_HAS_DSP__"); \
++ if (TARGET_RMW) \
++ builtin_define ("__AVR32_HAS_RMW__"); \
++ if (TARGET_BRANCH_PRED) \
++ builtin_define ("__AVR32_HAS_BRANCH_PRED__"); \
++ if (flag_pic) \
++ { \
++ builtin_define ("__PIC__"); \
++ builtin_define ("__pic__"); \
++ } \
++ } \
++ while (0)
++
++
++
++/* Call the function profiler with a given profile label. */
++#undef FUNCTION_PROFILER
++#define FUNCTION_PROFILER(STREAM, LABELNO) \
++ do \
++ { \
++ fprintf (STREAM, "\tmov\tlr, lo(mcount)\n\torh\tlr, hi(mcount)\n"); \
++ fprintf (STREAM, "\ticall lr\n"); \
++ } \
++ while (0)
++
++#define NO_PROFILE_COUNTERS 1
++
++/* For dynamic libraries to work */
++/* #define PLT_REG_CALL_CLOBBERED 1 */
++#define AVR32_ALWAYS_PIC 1
++
++/* uclibc does not implement sinf, cosf etc. */
++#undef TARGET_C99_FUNCTIONS
++#define TARGET_C99_FUNCTIONS 0
++
++#define LINK_GCC_C_SEQUENCE_SPEC \
++ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/predicates.md gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/predicates.md
+--- gcc-4.0.2/gcc/config/avr32/predicates.md 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/predicates.md 2006-11-09 15:01:19.000000000 +0100
+@@ -0,0 +1,303 @@
++;; AVR32 predicates file.
++;; Copyright 2003-2006 Atmel Corporation.
++;;
++;; Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++;;
++;; This file is part of GCC.
++;;
++;; This program is free software; you can redistribute it and/or modify
++;; it under the terms of the GNU General Public License as published by
++;; the Free Software Foundation; either version 2 of the License, or
++;; (at your option) any later version.
++;;
++;; This program is distributed in the hope that it will be useful,
++;; but WITHOUT ANY WARRANTY; without even the implied warranty of
++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++;; GNU General Public License for more details.
++;;
++;; You should have received a copy of the GNU General Public License
++;; along with this program; if not, write to the Free Software
++;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++
++;; True if the operand is a memory reference which contains an
++;; Address consisting of a single pointer register
++(define_predicate "avr32_indirect_register_operand"
++ (and (match_code "mem")
++ (match_test "register_operand(XEXP(op, 0), SImode)")))
++
++
++
++;; Address expression with a base pointer offset with
++;; a register displacement
++(define_predicate "avr32_indexed_memory_operand"
++ (and (match_code "mem")
++ (match_test "GET_CODE(XEXP(op, 0)) == PLUS"))
++ {
++
++ rtx op0 = XEXP(XEXP(op, 0), 0);
++ rtx op1 = XEXP(XEXP(op, 0), 1);
++
++ return ((avr32_address_register_rtx_p (op0, 0)
++ && avr32_legitimate_index_p (GET_MODE(op), op1, 0))
++ || (avr32_address_register_rtx_p (op1, 0)
++ && avr32_legitimate_index_p (GET_MODE(op), op0, 0)));
++
++ })
++
++;; Operand suitable for the ld.sb instruction
++(define_predicate "load_sb_memory_operand"
++ (ior (match_operand 0 "avr32_indirect_register_operand")
++ (match_operand 0 "avr32_indexed_memory_operand")))
++
++
++;; Operand suitable as operand to insns sign extending QI values
++(define_predicate "extendqi_operand"
++ (ior (match_operand 0 "load_sb_memory_operand")
++ (match_operand 0 "register_operand")))
++
++(define_predicate "post_inc_memory_operand"
++ (and (match_code "mem")
++ (match_test "(GET_CODE(XEXP(op, 0)) == POST_INC)
++ && REG_P(XEXP(XEXP(op, 0), 0))")))
++
++;; Operand suitable for loading TImode values
++(define_predicate "loadti_operand"
++ (ior (ior (match_operand 0 "register_operand")
++ (match_operand 0 "avr32_indirect_register_operand"))
++ (match_operand 0 "post_inc_memory_operand")))
++
++;; Operand suitable for add instructions
++(define_predicate "avr32_add_operand"
++ (ior (match_operand 0 "register_operand")
++ (and (match_operand 0 "immediate_operand")
++ (match_test "CONST_OK_FOR_CONSTRAINT_P(INTVAL(op), 'I', \"Is21\")"))))
++
++;; Operand is a power of two immediate
++(define_predicate "power_of_two_operand"
++ (match_code "const_int")
++{
++ HOST_WIDE_INT value = INTVAL (op);
++
++ return value != 0 && (value & (value - 1)) == 0;
++})
++
++;; Operand is a multiple of 8 immediate
++(define_predicate "multiple_of_8_operand"
++ (match_code "const_int")
++{
++ HOST_WIDE_INT value = INTVAL (op);
++
++ return (value & 0x7) == 0 ;
++})
++
++;; Operand is a multiple of 16 immediate
++(define_predicate "multiple_of_16_operand"
++ (match_code "const_int")
++{
++ HOST_WIDE_INT value = INTVAL (op);
++
++ return (value & 0xf) == 0 ;
++})
++
++;; Operand is a mask used for masking away upper bits of a reg
++(define_predicate "avr32_mask_upper_bits_operand"
++ (match_code "const_int")
++{
++ HOST_WIDE_INT value = INTVAL (op) + 1;
++
++ return value != 1 && value != 0 && (value & (value - 1)) == 0;
++})
++
++
++;; Operand suitable for mul instructions
++(define_predicate "avr32_mul_operand"
++ (ior (match_operand 0 "register_operand")
++ (and (match_operand 0 "immediate_operand")
++ (match_test "CONST_OK_FOR_CONSTRAINT_P(INTVAL(op), 'K', \"Ks08\")"))))
++
++;; True for logical binary operators.
++(define_predicate "logical_binary_operator"
++ (match_code "ior,xor,and"))
++
++;; True for logical shift operators
++(define_predicate "logical_shift_operator"
++ (match_code "ashift,lshiftrt"))
++
++;; True for shift operand for logical and, or and eor insns
++(define_predicate "avr32_logical_shift_operand"
++ (and (match_code "ashift,lshiftrt")
++ (ior (and (match_test "GET_CODE(XEXP(op, 1)) == CONST_INT")
++ (match_test "register_operand(XEXP(op, 0), GET_MODE(XEXP(op, 0)))"))
++ (and (match_test "GET_CODE(XEXP(op, 0)) == CONST_INT")
++ (match_test "register_operand(XEXP(op, 1), GET_MODE(XEXP(op, 1)))"))))
++ {
++ return 1;
++ }
++ )
++
++
++;; Predicate for second operand to and, ior and xor insn patterns
++(define_predicate "avr32_logical_insn_operand"
++ (ior (match_operand 0 "register_operand")
++ (match_operand 0 "avr32_logical_shift_operand"))
++ {
++ return 1;
++ }
++)
++
++
++;; True for avr32 comparison operators
++(define_predicate "avr32_comparison_operator"
++ (ior (match_code "eq, ne, gt, ge, lt, le, gtu, geu, ltu, leu")
++ (and (match_code "unspec")
++ (match_test "(XINT(op, 1) == UNSPEC_COND_MI)
++ || (XINT(op, 1) == UNSPEC_COND_PL)"))))
++
++;; True if this is a const_int with one bit set
++(define_predicate "one_bit_set_operand"
++ (match_code "const_int")
++ {
++ int i;
++ int value;
++ int ones = 0;
++
++ value = INTVAL(op);
++ for ( i = 0 ; i < 32; i++ ){
++ if ( value & ( 1 << i ) ){
++ ones++;
++ }
++ }
++
++ return ( ones == 1 );
++ })
++
++
++;; True if this is a const_int with one bit cleared
++(define_predicate "one_bit_cleared_operand"
++ (match_code "const_int")
++ {
++ int i;
++ int value;
++ int zeroes = 0;
++
++ value = INTVAL(op);
++ for ( i = 0 ; i < 32; i++ ){
++ if ( !(value & ( 1 << i )) ){
++ zeroes++;
++ }
++ }
++
++ return ( zeroes == 1 );
++ })
++
++
++;; True if this is a register or immediate operand
++(define_predicate "register_immediate_operand"
++ (ior (match_operand 0 "register_operand")
++ (match_operand 0 "immediate_operand")))
++
++
++;; True is this is an operand containing a label_ref
++(define_predicate "avr32_label_ref_operand"
++ (and (match_code "mem")
++ (match_test "avr32_find_symbol(op)
++ && (GET_CODE(avr32_find_symbol(op)) == LABEL_REF)")))
++
++;; True is this is a valid symbol pointing to the constant pool
++(define_predicate "avr32_const_pool_operand"
++ (and (match_code "symbol_ref")
++ (match_test "CONSTANT_POOL_ADDRESS_P(op)"))
++ {
++ return (flag_pic ? (!(symbol_mentioned_p (get_pool_constant (op))
++ || label_mentioned_p (get_pool_constant (op)))
++ || avr32_got_mentioned_p(get_pool_constant (op)))
++ : true);
++ }
++)
++
++;; True is this is a memory reference to the constant or mini pool
++(define_predicate "avr32_const_pool_ref_operand"
++ (ior (match_operand 0 "avr32_label_ref_operand")
++ (and (match_code "mem")
++ (match_test "avr32_const_pool_operand(XEXP(op,0), GET_MODE(XEXP(op,0)))"))))
++
++
++
++;; True is this is a k12 offseted memory operand
++(define_predicate "avr32_k12_memory_operand"
++ (and (match_code "mem")
++ (ior (match_test "REG_P(XEXP(op, 0))")
++ (match_test "GET_CODE(XEXP(op, 0)) == PLUS
++ && REG_P(XEXP(XEXP(op, 0), 0))
++ && (GET_CODE(XEXP(XEXP(op, 0), 1)) == CONST_INT)
++ && (CONST_OK_FOR_CONSTRAINT_P(INTVAL(XEXP(XEXP(op, 0), 0)),
++ 'K', (mode == SImode) ? \"Ks14\" : ((mode == HImode) ? \"Ks13\" : \"Ks12\")))"))))
++
++;; True is this is a memory operand with an immediate displacement
++(define_predicate "avr32_imm_disp_memory_operand"
++ (and (match_code "mem")
++ (match_test "GET_CODE(XEXP(op, 0)) == PLUS
++ && REG_P(XEXP(XEXP(op, 0), 0))
++ && (GET_CODE(XEXP(XEXP(op, 0), 1)) == CONST_INT)")))
++
++;; True is this is a bswap operand
++(define_predicate "avr32_bswap_operand"
++ (ior (match_operand 0 "avr32_k12_memory_operand")
++ (match_operand 0 "register_operand")))
++
++;; True is this is a valid coprocessor insn memory operand
++(define_predicate "avr32_cop_memory_operand"
++ (and (match_operand 0 "memory_operand")
++ (not (match_test "GET_CODE(XEXP(op, 0)) == PLUS
++ && REG_P(XEXP(XEXP(op, 0), 0))
++ && (GET_CODE(XEXP(XEXP(op, 0), 1)) == CONST_INT)
++ && !(CONST_OK_FOR_CONSTRAINT_P(INTVAL(XEXP(XEXP(op, 0), 0)), 'K', \"Ku10\"))"))))
++
++;; True is this is a valid source/destination operand
++;; for moving values to/from a coprocessor
++(define_predicate "avr32_cop_move_operand"
++ (ior (match_operand 0 "register_operand")
++ (match_operand 0 "avr32_cop_memory_operand")))
++
++
++;; True is this is a valid extract byte offset for use in
++;; load extracted index insns
++(define_predicate "avr32_extract_shift_operand"
++ (and (match_operand 0 "const_int_operand")
++ (match_test "(INTVAL(op) == 0) || (INTVAL(op) == 8)
++ || (INTVAL(op) == 16) || (INTVAL(op) == 24)")))
++
++;; True is this is a floating-point register
++(define_predicate "avr32_fp_register_operand"
++ (and (match_operand 0 "register_operand")
++ (match_test "REGNO_REG_CLASS(REGNO(op)) == FP_REGS")))
++
++;; True is this is valid avr32 symbol operand
++(define_predicate "avr32_symbol_operand"
++ (ior (match_code "label_ref, symbol_ref")
++ (and (match_code "const")
++ (match_test "avr32_find_symbol(op)"))))
++
++;; True is this is valid operand for the lda.w and call pseudo insns
++(define_predicate "avr32_address_operand"
++ (and (match_code "label_ref, symbol_ref")
++ (ior (match_test "TARGET_HAS_ASM_ADDR_PSEUDOS")
++ (match_test "flag_pic")) ))
++
++;; True if this is a avr32 call operand
++(define_predicate "avr32_call_operand"
++ (ior (ior (match_operand 0 "register_operand")
++ (ior (match_operand 0 "avr32_const_pool_ref_operand")
++ (match_operand 0 "avr32_address_operand")))
++ (match_test "SYMBOL_REF_RCALL_FUNCTION_P(op)")))
++
++;; Return true for operators performing ALU operations
++
++(define_predicate "alu_operator"
++ (match_code "ior, xor, and, plus, minus, ashift, lshiftrt, ashiftrt"))
++
++(define_predicate "avr32_add_shift_immediate_operand"
++ (and (match_operand 0 "immediate_operand")
++ (match_test "CONST_OK_FOR_CONSTRAINT_P(INTVAL(op), 'K', \"Ku02\")")))
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/simd.md gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/simd.md
+--- gcc-4.0.2/gcc/config/avr32/simd.md 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/simd.md 2006-10-10 12:36:34.000000000 +0200
+@@ -0,0 +1,145 @@
++;; AVR32 machine description file for SIMD instructions.
++;; Copyright 2003-2006 Atmel Corporation.
++;;
++;; Written by Ronny Pedersen, Atmel Norway, <rpedersen@atmel.com>
++;;
++;; This file is part of GCC.
++;;
++;; This program is free software; you can redistribute it and/or modify
++;; it under the terms of the GNU General Public License as published by
++;; the Free Software Foundation; either version 2 of the License, or
++;; (at your option) any later version.
++;;
++;; This program is distributed in the hope that it will be useful,
++;; but WITHOUT ANY WARRANTY; without even the implied warranty of
++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++;; GNU General Public License for more details.
++;;
++;; You should have received a copy of the GNU General Public License
++;; along with this program; if not, write to the Free Software
++;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++;; -*- Mode: Scheme -*-
++
++
++;; Vector modes
++(define_mode_macro VECM [V2HI V4QI])
++(define_mode_attr size [(V2HI "h") (V4QI "b")])
++
++(define_insn "add<mode>3"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (plus:VECM (match_operand:VECM 1 "register_operand" "r")
++ (match_operand:VECM 2 "register_operand" "r")))]
++ "TARGET_SIMD"
++ "padd.<size>\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++
++(define_insn "sub<mode>3"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (minus:VECM (match_operand:VECM 1 "register_operand" "r")
++ (match_operand:VECM 2 "register_operand" "r")))]
++ "TARGET_SIMD"
++ "psub.<size>\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++
++(define_insn "abs<mode>2"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (abs:VECM (match_operand:VECM 1 "register_operand" "r")))]
++ "TARGET_SIMD"
++ "pabs.s<size>\t%0, %1"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "ashl<mode>3"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (ashift:VECM (match_operand:VECM 1 "register_operand" "r")
++ (match_operand:SI 2 "immediate_operand" "Ku04")))]
++ "TARGET_SIMD"
++ "plsl.<size>\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "ashr<mode>3"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (ashiftrt:VECM (match_operand:VECM 1 "register_operand" "r")
++ (match_operand:SI 2 "immediate_operand" "Ku04")))]
++ "TARGET_SIMD"
++ "pasr.<size>\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "lshr<mode>3"
++ [(set (match_operand:VECM 0 "register_operand" "=r")
++ (lshiftrt:VECM (match_operand:VECM 1 "register_operand" "r")
++ (match_operand:SI 2 "immediate_operand" "Ku04")))]
++ "TARGET_SIMD"
++ "plsr.<size>\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "smaxv2hi3"
++ [(set (match_operand:V2HI 0 "register_operand" "=r")
++ (smax:V2HI (match_operand:V2HI 1 "register_operand" "r")
++ (match_operand:V2HI 2 "register_operand" "r")))]
++
++ "TARGET_SIMD"
++ "pmax.sh\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "sminv2hi3"
++ [(set (match_operand:V2HI 0 "register_operand" "=r")
++ (smin:V2HI (match_operand:V2HI 1 "register_operand" "r")
++ (match_operand:V2HI 2 "register_operand" "r")))]
++
++ "TARGET_SIMD"
++ "pmin.sh\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "umaxv4qi3"
++ [(set (match_operand:V4QI 0 "register_operand" "=r")
++ (umax:V4QI (match_operand:V4QI 1 "register_operand" "r")
++ (match_operand:V4QI 2 "register_operand" "r")))]
++
++ "TARGET_SIMD"
++ "pmax.ub\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "uminv4qi3"
++ [(set (match_operand:V4QI 0 "register_operand" "=r")
++ (umin:V4QI (match_operand:V4QI 1 "register_operand" "r")
++ (match_operand:V4QI 2 "register_operand" "r")))]
++
++ "TARGET_SIMD"
++ "pmin.ub\t%0, %1, %2"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++
++(define_insn "addsubv2hi"
++ [(set (match_operand:V2HI 0 "register_operand" "=r")
++ (vec_concat:V2HI
++ (plus:HI (match_operand:HI 1 "register_operand" "r")
++ (match_operand:HI 2 "register_operand" "r"))
++ (minus:HI (match_dup 1) (match_dup 2))))]
++ "TARGET_SIMD"
++ "paddsub.h\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
++
++(define_insn "subaddv2hi"
++ [(set (match_operand:V2HI 0 "register_operand" "=r")
++ (vec_concat:V2HI
++ (minus:HI (match_operand:HI 1 "register_operand" "r")
++ (match_operand:HI 2 "register_operand" "r"))
++ (plus:HI (match_dup 1) (match_dup 2))))]
++ "TARGET_SIMD"
++ "psubadd.h\t%0, %1:b, %2:b"
++ [(set_attr "length" "4")
++ (set_attr "type" "alu")])
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/t-avr32 gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/t-avr32
+--- gcc-4.0.2/gcc/config/avr32/t-avr32 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/t-avr32 2006-11-24 17:10:48.000000000 +0100
+@@ -0,0 +1,63 @@
++
++MD_INCLUDES= $(srcdir)/config/avr32/avr32.md \
++ $(srcdir)/config/avr32/fpcp.md \
++ $(srcdir)/config/avr32/simd.md \
++ $(srcdir)/config/avr32/predicates.md
++
++s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \
++ s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES)
++
++# We want fine grained libraries, so use the new code
++# to build the floating point emulation libraries.
++FPBIT = fp-bit.c
++DPBIT = dp-bit.c
++
++LIB1ASMSRC = avr32/lib1funcs.S
++LIB1ASMFUNCS = _avr32_f64_mul _avr32_f64_addsub _avr32_f64_to_u32 _avr32_f64_to_s32 \
++ _avr32_f64_to_u64 _avr32_f64_to_s64 _avr32_u32_to_f64 _avr32_s32_to_f64 \
++ _avr32_f64_cmp_eq _avr32_f64_cmp_ge _avr32_f64_cmp_lt \
++ _avr32_f32_cmp_eq _avr32_f32_cmp_ge _avr32_f32_cmp_lt \
++ _avr32_f64_div _avr32_f32_div\
++ _avr32_f32_mul _avr32_s32_to_f32 _avr32_u32_to_f32 _avr32_f32_to_s32 \
++ _avr32_f32_to_u32 _avr32_f32_to_f64 _avr32_f64_to_f32
++
++LIB2FUNCS_EXTRA += $(srcdir)/config/avr32/lib2funcs.S
++
++MULTILIB_OPTIONS = march=ap/march=uc
++MULTILIB_DIRNAMES = ap uc
++MULTILIB_EXCEPTIONS =
++MULTILIB_MATCHES = march?ap=mcpu?ap7000
++MULTILIB_MATCHES += march?ap=mcpu?ap7010
++MULTILIB_MATCHES += march?ap=mcpu?ap7020
++MULTILIB_MATCHES += march?uc=mcpu?uc3a0256
++MULTILIB_MATCHES += march?uc=mcpu?uc3a0512
++MULTILIB_MATCHES += march?uc=mcpu?uc3a1128
++MULTILIB_MATCHES += march?uc=mcpu?uc3a1256
++MULTILIB_MATCHES += march?uc=mcpu?uc3a1512
++MULTILIB_MATCHES += march?ap=mpart?ap7000
++MULTILIB_MATCHES += march?ap=mpart?ap7010
++MULTILIB_MATCHES += march?ap=mpart?ap7020
++MULTILIB_MATCHES += march?uc=mpart?uc3a0256
++MULTILIB_MATCHES += march?uc=mpart?uc3a0512
++MULTILIB_MATCHES += march?uc=mpart?uc3a1128
++MULTILIB_MATCHES += march?uc=mpart?uc3a1256
++MULTILIB_MATCHES += march?uc=mpart?uc3a1512
++
++EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o
++
++CRTSTUFF_T_CFLAGS = -mrelax
++CRTSTUFF_T_CFLAGS_S = -mrelax -fPIC
++TARGET_LIBGCC2_CFLAGS += -mrelax
++
++LIBGCC = stmp-multilib
++INSTALL_LIBGCC = install-multilib
++
++fp-bit.c: $(srcdir)/config/fp-bit.c
++ echo '#define FLOAT' > fp-bit.c
++ cat $(srcdir)/config/fp-bit.c >> fp-bit.c
++
++dp-bit.c: $(srcdir)/config/fp-bit.c
++ cat $(srcdir)/config/fp-bit.c > dp-bit.c
++
++
++
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/t-elf gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/t-elf
+--- gcc-4.0.2/gcc/config/avr32/t-elf 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/t-elf 2006-03-20 13:59:57.000000000 +0100
+@@ -0,0 +1,16 @@
++
++# Assemble startup files.
++$(T)crti.o: $(srcdir)/config/avr32/crti.asm $(GCC_PASSES)
++ $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) $(INCLUDES) \
++ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/avr32/crti.asm
++
++$(T)crtn.o: $(srcdir)/config/avr32/crtn.asm $(GCC_PASSES)
++ $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) $(INCLUDES) \
++ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/avr32/crtn.asm
++
++
++# Build the libraries for both hard and soft floating point
++EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o
++
++LIBGCC = stmp-multilib
++INSTALL_LIBGCC = install-multilib
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/avr32/uclinux-elf.h gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/uclinux-elf.h
+--- gcc-4.0.2/gcc/config/avr32/uclinux-elf.h 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/avr32/uclinux-elf.h 2006-01-04 10:57:09.000000000 +0100
+@@ -0,0 +1,20 @@
++
++/* Run-time Target Specification. */
++#undef TARGET_VERSION
++#define TARGET_VERSION fputs (" (AVR32 uClinux with ELF)", stderr)
++
++/* We don't want a .jcr section on uClinux. As if this makes a difference... */
++#define TARGET_USE_JCR_SECTION 0
++
++/* Here we go. Drop the crtbegin/crtend stuff completely. */
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC \
++ "%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}" \
++ " %{!p:%{profile:gcrt1.o%s}" \
++ " %{!profile:crt1.o%s}}}} crti.o%s"
++
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC "crtn.o%s"
++
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT (AVR32_FLAG_NO_INIT_GOT)
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config/host-linux.c gcc-4.0.2-atmel.0.99.2/gcc/config/host-linux.c
+--- gcc-4.0.2/gcc/config/host-linux.c 2005-08-01 20:00:10.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/config/host-linux.c 2006-03-23 13:33:12.000000000 +0100
+@@ -26,6 +26,9 @@
+ #include "hosthooks.h"
+ #include "hosthooks-def.h"
+
++#ifndef SSIZE_MAX
++#define SSIZE_MAX LONG_MAX
++#endif
+
+ /* Linux has a feature called exec-shield-randomize that perturbs the
+ address of non-fixed mapped segments by a (relatively) small amount.
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/config.gcc gcc-4.0.2-atmel.0.99.2/gcc/config.gcc
+--- gcc-4.0.2/gcc/config.gcc 2005-08-09 12:57:04.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/config.gcc 2006-02-08 17:33:56.000000000 +0100
+@@ -189,9 +189,6 @@ case ${target} in
+ | ip2k-*-elf \
+ | ns32k-*-netbsdelf* \
+ | ns32k-*-netbsd* \
+- | c4x-* \
+- | tic4x-* \
+- | hppa1.1-*-rtems* \
+ )
+ if test "x$enable_obsolete" != xyes; then
+ echo "*** Configuration ${target} is obsolete." >&2
+@@ -251,9 +248,6 @@ arm*-*-*)
+ cpu_type=arm
+ extra_headers="mmintrin.h"
+ ;;
+-bfin*-*)
+- cpu_type=bfin
+- ;;
+ ep9312*-*-*)
+ cpu_type=arm
+ ;;
+@@ -735,6 +729,24 @@ avr-*-*)
+ tm_file="avr/avr.h dbxelf.h"
+ use_fixproto=yes
+ ;;
++avr32*-*-linux*)
++ tm_file="dbxelf.h elfos.h linux.h avr32/linux-elf.h avr32/avr32.h "
++ tmake_file="t-linux avr32/t-avr32 avr32/t-elf"
++ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
++ extra_modes=avr32/avr32-modes.def
++ gnu_ld=yes
++ ;;
++avr32*-*-uclinux*)
++ tm_file="dbxelf.h elfos.h linux.h avr32/linux-elf.h avr32/uclinux-elf.h avr32/avr32.h"
++ tmake_file="t-linux avr32/t-avr32 avr32/t-elf"
++ extra_modes=avr32/avr32-modes.def
++ gnu_ld=yes
++ ;;
++avr32-*-*)
++ tm_file="dbxelf.h elfos.h avr32/avr32.h avr32/avr32-elf.h"
++ tmake_file="avr32/t-avr32 avr32/t-elf"
++ extra_modes=avr32/avr32-modes.def
++ ;;
+ bfin*-elf*)
+ tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
+ tmake_file=bfin/t-bfin-elf
+@@ -792,14 +804,10 @@ frv-*-*linux*)
+ linux.h frv/linux.h frv/frv-abi.h"
+ tmake_file="${tmake_file} frv/t-frv frv/t-linux"
+ ;;
+-h8300-*-rtemscoff*)
++h8300-*-rtems*)
+ tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
+ tm_file="h8300/h8300.h dbxcoff.h h8300/coff.h h8300/rtems.h rtems.h"
+ ;;
+-h8300-*-rtems*)
+- tmake_file="h8300/t-h8300 h8300/t-elf t-rtems h8300/t-rtems"
+- tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h"
+- ;;
+ h8300-*-elf*)
+ tmake_file="h8300/t-h8300 h8300/t-elf"
+ tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h"
+@@ -1560,6 +1568,9 @@ pdp11-*-bsd)
+ pdp11-*-*)
+ use_fixproto=yes
+ ;;
++avr-*-*)
++ use_fixproto=yes
++ ;;
+ # port not yet contributed
+ #powerpc-*-openbsd*)
+ # tmake_file="${tmake_file} rs6000/t-fprules "
+@@ -2471,6 +2482,21 @@ case "${target}" in
+ fi
+ ;;
+
++ avr32*-*-*)
++ supported_defaults="cpu"
++
++ case "$with_cpu" in
++ "" \
++ | morgan | ap7000 )
++ # OK
++ ;;
++ *)
++ echo "Unknown arch used in --with-arch=$with_arch" 1>&2
++ exit 1
++ ;;
++ esac
++ ;;
++
+ fr*-*-*linux*)
+ supported_defaults=cpu
+ case "$with_cpu" in
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/cp/decl.c gcc-4.0.2-atmel.0.99.2/gcc/cp/decl.c
+--- gcc-4.0.2/gcc/cp/decl.c 2005-09-09 02:51:56.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/cp/decl.c 2006-10-03 15:32:50.000000000 +0200
+@@ -6128,6 +6128,7 @@ compute_array_index_type (tree name, tre
+ name);
+ else
+ error ("size of array is not an integral constant-expression");
++ size = integer_one_node;
+ }
+ else if (pedantic)
+ {
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/c-typeck.c gcc-4.0.2-atmel.0.99.2/gcc/c-typeck.c
+--- gcc-4.0.2/gcc/c-typeck.c 2005-09-06 22:10:50.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/c-typeck.c 2006-10-03 15:32:50.000000000 +0200
+@@ -2742,8 +2742,13 @@ build_unary_op (enum tree_code code, tre
+ when we have proper support for integer constant expressions. */
+ val = get_base_address (arg);
+ if (val && TREE_CODE (val) == INDIRECT_REF
+- && integer_zerop (TREE_OPERAND (val, 0)))
+- return fold_convert (argtype, fold_offsetof (arg));
++ && TREE_CONSTANT (TREE_OPERAND (val, 0)))
++ {
++ tree op0 = fold_convert (argtype, fold_offsetof (arg)), op1;
++
++ op1 = fold_convert (argtype, TREE_OPERAND (val, 0));
++ return fold (build2 (PLUS_EXPR, argtype, op0, op1));
++ }
+
+ val = build1 (ADDR_EXPR, argtype, arg);
+
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/doc/extend.texi gcc-4.0.2-atmel.0.99.2/gcc/doc/extend.texi
+--- gcc-4.0.2/gcc/doc/extend.texi 2005-07-20 12:36:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/doc/extend.texi 2006-06-19 13:14:00.000000000 +0200
+@@ -1723,13 +1723,6 @@ on data in the eight bit data area. Not
+ You must use GAS and GLD from GNU binutils version 2.7 or later for
+ this attribute to work correctly.
+
+-@item exception_handler
+-@cindex exception handler functions on the Blackfin processor
+-Use this attribute on the Blackfin to indicate that the specified function
+-is an exception handler. The compiler will generate function entry and
+-exit sequences suitable for use in an exception handler when this
+-attribute is present.
+-
+ @item far
+ @cindex functions which handle memory bank switching
+ On 68HC11 and 68HC12 the @code{far} attribute causes the compiler to
+@@ -1873,13 +1866,13 @@ this attribute to work correctly.
+
+ @item interrupt
+ @cindex interrupt handler functions
+-Use this attribute on the ARM, AVR, C4x, M32R/D and Xstormy16 ports to indicate
++Use this attribute on the ARM, AVR, AVR32, C4x, M32R/D and Xstormy16 ports to indicate
+ that the specified function is an interrupt handler. The compiler will
+ generate function entry and exit sequences suitable for use in an
+ interrupt handler when this attribute is present.
+
+-Note, interrupt handlers for the Blackfin, m68k, H8/300, H8/300H, H8S, and
+-SH processors can be specified via the @code{interrupt_handler} attribute.
++Note, interrupt handlers for the m68k, H8/300, H8/300H, H8S, and SH processors
++can be specified via the @code{interrupt_handler} attribute.
+
+ Note, on the AVR, interrupts will be enabled inside the function.
+
+@@ -1892,18 +1885,21 @@ void f () __attribute__ ((interrupt ("IR
+
+ Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF@.
+
+-@item interrupt_handler
+-@cindex interrupt handler functions on the Blackfin, m68k, H8/300 and SH processors
+-Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and SH to
+-indicate that the specified function is an interrupt handler. The compiler
+-will generate function entry and exit sequences suitable for use in an
+-interrupt handler when this attribute is present.
++Note, for the AVR32, you can specify which banking scheme is used for
++the interrupt mode this interrupt handler is used in like this:
++
++@smallexample
++void f () __attribute__ ((interrupt ("FULL")));
++@end smallexample
+
+-@item kspisusp
+-@cindex User stack pointer in interrupts on the Blackfin
+-When used together with @code{interrupt_handler}, @code{exception_handler}
+-or @code{nmi_handler}, code will be generated to load the stack pointer
+-from the USP register in the function prologue.
++Permissible values for this parameter are: FULL, HALF, NONE and UNDEF.
++
++@item interrupt_handler
++@cindex interrupt handler functions on the m68k, H8/300 and SH processors
++Use this attribute on the m68k, H8/300, H8/300H, H8S, and SH to indicate that
++the specified function is an interrupt handler. The compiler will generate
++function entry and exit sequences suitable for use in an interrupt
++handler when this attribute is present.
+
+ @item long_call/short_call
+ @cindex indirect calls on ARM
+@@ -1983,19 +1979,6 @@ use the normal calling convention based
+ This attribute can be used to cancel the effect of the @option{-mlong-calls}
+ option.
+
+-@item nesting
+-@cindex Allow nesting in an interrupt handler on the Blackfin processor.
+-Use this attribute together with @code{interrupt_handler},
+-@code{exception_handler} or @code{nmi_handler} to indicate that the function
+-entry code should enable nested interrupts or exceptions.
+-
+-@item nmi_handler
+-@cindex NMI handler functions on the Blackfin processor
+-Use this attribute on the Blackfin to indicate that the specified function
+-is an NMI handler. The compiler will generate function entry and
+-exit sequences suitable for use in an NMI handler when this
+-attribute is present.
+-
+ @item no_instrument_function
+ @cindex @code{no_instrument_function} function attribute
+ @opindex finstrument-functions
+@@ -2140,8 +2123,8 @@ disabled with the linker or the loader i
+ problem.)
+
+ @item saveall
+-@cindex save all registers on the Blackfin, H8/300, H8/300H, and H8S
+-Use this attribute on the Blackfin, H8/300, H8/300H, and H8S to indicate that
++@cindex save all registers on the H8/300, H8/300H, and H8S
++Use this attribute on the H8/300, H8/300H, and H8S to indicate that
+ all registers except the stack pointer should be saved in the prologue
+ regardless of whether they are used or not.
+
+@@ -3221,7 +3204,7 @@ struct my_unpacked_struct
+ int i;
+ @};
+
+-struct __attribute__ ((__packed__)) my_packed_struct
++struct my_packed_struct __attribute__ ((__packed__))
+ @{
+ char c;
+ int i;
+@@ -5449,6 +5432,7 @@ instructions, but allow the compiler to
+ @menu
+ * Alpha Built-in Functions::
+ * ARM Built-in Functions::
++* AVR32 Built-in Functions::
+ * Blackfin Built-in Functions::
+ * FR-V Built-in Functions::
+ * X86 Built-in Functions::
+@@ -5686,6 +5670,54 @@ long long __builtin_arm_wxor (long long,
+ long long __builtin_arm_wzero ()
+ @end smallexample
+
++@node AVR32 Built-in Functions
++@subsection AVR32 Built-in Functions
++
++
++@smallexample
++
++int __builtin_sats (int /*Rd*/,int /*sa*/, int /*bn*/)
++int __builtin_satu (int /*Rd*/,int /*sa*/, int /*bn*/)
++int __builtin_satrnds (int /*Rd*/,int /*sa*/, int /*bn*/)
++int __builtin_satrndu (int /*Rd*/,int /*sa*/, int /*bn*/)
++short __builtin_mulsathh_h (short, short)
++int __builtin_mulsathh_w (short, short)
++short __builtin_mulsatrndhh_h (short, short)
++int __builtin_mulsatrndwh_w (int, short)
++int __builtin_mulsatwh_w (int, short)
++int __builtin_macsathh_w (int, short, short)
++short __builtin_satadd_h (short, short)
++short __builtin_satsub_h (short, short)
++int __builtin_satadd_w (int, int)
++int __builtin_satsub_w (int, int)
++long long __builtin_mulwh_d(int, short)
++long long __builtin_mulnwh_d(int, short)
++long long __builtin_macwh_d(long long, int, short)
++long long __builtin_machh_d(long long, short, short)
++
++void __builtin_musfr(int);
++int __builtin_mustr(void);
++int __builtin_mfsr(int /*Status Register Address*/)
++void __builtin_mtsr(int /*Status Register Address*/, int /*Value*/)
++int __builtin_mfdr(int /*Debug Register Address*/)
++void __builtin_mtdr(int /*Debug Register Address*/, int /*Value*/)
++void __builtin_cache(void * /*Address*/, int /*Cache Operation*/)
++void __builtin_sync(int /*Sync Operation*/)
++void __builtin_tlbr(void)
++void __builtin_tlbs(void)
++void __builtin_tlbw(void)
++void __builtin_breakpoint(void)
++int __builtin_xchg(void * /*Address*/, int /*Value*/ )
++short __builtin_bswap_16(short)
++int __builtin_bswap_32(int)
++void __builtin_cop(int/*cpnr*/, int/*crd*/, int/*crx*/, int/*cry*/, int/*op*/)
++int __builtin_mvcr_w(int/*cpnr*/, int/*crs*/)
++void __builtin_mvrc_w(int/*cpnr*/, int/*crd*/, int/*value*/)
++long long __builtin_mvcr_d(int/*cpnr*/, int/*crs*/)
++void __builtin_mvrc_d(int/*cpnr*/, int/*crd*/, long long/*value*/)
++
++@end smallexample
++
+ @node Blackfin Built-in Functions
+ @subsection Blackfin Built-in Functions
+
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/doc/invoke.texi gcc-4.0.2-atmel.0.99.2/gcc/doc/invoke.texi
+--- gcc-4.0.2/gcc/doc/invoke.texi 2005-09-02 10:12:30.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/doc/invoke.texi 2006-02-08 17:33:56.000000000 +0100
+@@ -185,7 +185,7 @@ in the following sections.
+ -fno-default-inline -fvisibility-inlines-hidden @gol
+ -Wabi -Wctor-dtor-privacy @gol
+ -Wnon-virtual-dtor -Wreorder @gol
+--Weffc++ -Wno-deprecated -Wstrict-null-sentinel @gol
++-Weffc++ -Wno-deprecated @gol
+ -Wno-non-template-friend -Wold-style-cast @gol
+ -Woverloaded-virtual -Wno-pmf-conversions @gol
+ -Wsign-promo}
+@@ -542,6 +542,10 @@ Objective-C and Objective-C++ Dialects}.
+ -mauto-incdec -minmax -mlong-calls -mshort @gol
+ -msoft-reg-count=@var{count}}
+
++@emph{AVR32 Options}
++@gccoptlist{-muse-rodata-section -mhard-float -msoft-float -mrelax @gol
++-muse-oscall -mforce-double-align -mno-init-got -mcpu=@var{cpu}}
++
+ @emph{MCore Options}
+ @gccoptlist{-mhardlit -mno-hardlit -mdiv -mno-div -mrelax-immediates @gol
+ -mno-relax-immediates -mwide-bitfields -mno-wide-bitfields @gol
+@@ -1738,14 +1742,6 @@ to filter out those warnings.
+ @opindex Wno-deprecated
+ Do not warn about usage of deprecated features. @xref{Deprecated Features}.
+
+-@item -Wstrict-null-sentinel @r{(C++ only)}
+-@opindex Wstrict-null-sentinel
+-Warn also about the use of an uncasted @code{NULL} as sentinel. When
+-compiling only with GCC this is a valid sentinel, as @code{NULL} is defined
+-to @code{__null}. Although it is a null pointer constant not a null pointer,
+-it is guaranteed to of the same size as a pointer. But this use is
+-not portable across different compilers.
+-
+ @item -Wno-non-template-friend @r{(C++ only)}
+ @opindex Wno-non-template-friend
+ Disable warnings when non-templatized friend functions are declared
+@@ -2549,13 +2545,11 @@ get these warnings.
+ If you want to warn about code which uses the uninitialized value of the
+ variable in its own initializer, use the @option{-Winit-self} option.
+
+-These warnings occur for individual uninitialized or clobbered
+-elements of structure, union or array variables as well as for
+-variables which are uninitialized or clobbered as a whole. They do
+-not occur for variables or elements declared @code{volatile}. Because
+-these warnings depend on optimization, the exact variables or elements
+-for which there are warnings will depend on the precise optimization
+-options and version of GCC used.
++These warnings occur only for variables that are candidates for
++register allocation. Therefore, they do not occur for a variable that
++is declared @code{volatile}, or whose address is taken, or whose size
++is other than 1, 2, 4 or 8 bytes. Also, they do not occur for
++structures, unions or arrays, even when they are in registers.
+
+ Note that there may be no warning about a variable that is used only
+ to compute a value that itself is never used, because such
+@@ -5584,10 +5578,6 @@ If number of candidates in the set is sm
+ we always try to remove unnecessary ivs from the set during its
+ optimization when a new iv is added to the set.
+
+-@item scev-max-expr-size
+-Bound on size of expressions used in the scalar evolutions analyzer.
+-Large expressions slow the analyzer.
+-
+ @item max-iterations-to-track
+
+ The maximum number of iterations of a loop the brute force algorithm
+@@ -6695,7 +6685,7 @@ that macro, which enables you to change
+ * ARC Options::
+ * ARM Options::
+ * AVR Options::
+-* Blackfin Options::
++* AVR32 Options::
+ * CRIS Options::
+ * Darwin Options::
+ * DEC Alpha Options::
+@@ -7147,81 +7137,55 @@ comply to the C standards, but it will p
+ size.
+ @end table
+
+-@node Blackfin Options
+-@subsection Blackfin Options
+-@cindex Blackfin Options
++@node AVR32 Options
++@subsection AVR32 Options
++@cindex AVR32 Options
+
+-@table @gcctabopt
+-@item -momit-leaf-frame-pointer
+-@opindex momit-leaf-frame-pointer
+-Don't keep the frame pointer in a register for leaf functions. This
+-avoids the instructions to save, set up and restore frame pointers and
+-makes an extra register available in leaf functions. The option
+-@option{-fomit-frame-pointer} removes the frame pointer for all functions
+-which might make debugging harder.
++These options are defined for AVR32 implementations:
+
+-@item -mspecld-anomaly
+-@opindex mspecld-anomaly
+-When enabled, the compiler will ensure that the generated code does not
+-contain speculative loads after jump instructions. This option is enabled
+-by default.
+-
+-@item -mno-specld-anomaly
+-@opindex mno-specld-anomaly
+-Don't generate extra code to prevent speculative loads from occurring.
+-
+-@item -mcsync-anomaly
+-@opindex mcsync-anomaly
+-When enabled, the compiler will ensure that the generated code does not
+-contain CSYNC or SSYNC instructions too soon after conditional branches.
+-This option is enabled by default.
+-
+-@item -mno-csync-anomaly
+-@opindex mno-csync-anomaly
+-Don't generate extra code to prevent CSYNC or SSYNC instructions from
+-occurring too soon after a conditional branch.
+-
+-@item -mlow-64k
+-@opindex mlow-64k
+-When enabled, the compiler is free to take advantage of the knowledge that
+-the entire program fits into the low 64k of memory.
+-
+-@item -mno-low-64k
+-@opindex mno-low-64k
+-Assume that the program is arbitrarily large. This is the default.
++@table @gcctabopt
++@item -muse-rodata-section
++@opindex muse-rodata-section
++Use section @samp{.rodata} for read-only data instead of @samp{.text}.
+
+-@item -mid-shared-library
+-@opindex mid-shared-library
+-Generate code that supports shared libraries via the library ID method.
+-This allows for execute in place and shared libraries in an environment
+-without virtual memory management. This option implies @option{-fPIC}.
++@item -mhard-float
++@opindex mhard-float
++Use floating-point coprocessor instructions.
+
+-@item -mno-id-shared-library
+-@opindex mno-id-shared-library
+-Generate code that doesn't assume ID based shared libraries are being used.
+-This is the default.
++@item -msoft-float
++@opindex msoft-float
++Use software floating-point library.
+
+-@item -mshared-library-id=n
+-@opindex mshared-library-id
+-Specified the identification number of the ID based shared library being
+-compiled. Specifying a value of 0 will generate more compact code, specifying
+-other values will force the allocation of that number to the current
+-library but is no more space or time efficient than omitting this option.
++@item -mrelax
++@opindex mrelax
++Enable relaxing in linker. This means that when the address of symbols
++are known at link time, the linker can optimize @samp{icall} and @samp{mcall}
++instructions into a @samp{rcall} instruction if possible. Loading the address
++of a symbol can also be optimized.
++
++@item -muse-oscall
++@opindex muse-oscall
++When using gcc as a frontend for linking this switch forces the use of
++@samp{fake} system calls in the newlib c-library. These fake system
++calls are handled by some AVR32 simulators which redirects these calls
++to the OS in which the simulator is running. This is practical for
++being able to perform file I/O when running programs in a simulator.
++
++@item -mforce-double-align
++@opindex mforce-double-align
++Force double-word alignment for double-word memory accesses.
++
++@item -mno-init-got
++@opindex mno-init-got
++Do not initialize the GOT register before using it when compiling PIC
++code.
+
+-@item -mlong-calls
+-@itemx -mno-long-calls
+-@opindex mlong-calls
+-@opindex mno-long-calls
+-Tells the compiler to perform function calls by first loading the
+-address of the function into a register and then performing a subroutine
+-call on this register. This switch is needed if the target function
+-will lie outside of the 24 bit addressing range of the offset based
+-version of subroutine call instruction.
++@item -mcpu=@var{cpu-type}
++@opindex mcpu
++Generate code for the specified cpu. Permissible names are: @samp{morgan},
++@samp{ap7000} and @samp{default}. @samp{default} is a dummy cpu which
++allows all avr32 instructions.
+
+-This feature is not enabled by default. Specifying
+-@option{-mno-long-calls} will restore the default behavior. Note these
+-switches have no effect on how the compiler generates code to handle
+-function calls via function pointers.
+ @end table
+
+ @node CRIS Options
+@@ -10853,6 +10817,7 @@ conventions that adheres to the March 19
+ Application Binary Interface, PowerPC processor supplement. This is the
+ default unless you configured GCC using @samp{powerpc-*-eabiaix}.
+
++
+ @item -mcall-sysv-eabi
+ @opindex mcall-sysv-eabi
+ Specify both @option{-mcall-sysv} and @option{-meabi} options.
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/doc/md.texi gcc-4.0.2-atmel.0.99.2/gcc/doc/md.texi
+--- gcc-4.0.2/gcc/doc/md.texi 2005-08-14 01:56:45.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/doc/md.texi 2006-07-13 09:53:31.000000000 +0200
+@@ -3,6 +3,7 @@
+ @c This is part of the GCC manual.
+ @c For copying conditions, see the file gcc.texi.
+
++
+ @ifset INTERNALS
+ @node Machine Desc
+ @chapter Machine Descriptions
+@@ -1683,6 +1684,59 @@ A memory reference suitable for iWMMXt l
+ A memory reference suitable for the ARMv4 ldrsb instruction.
+ @end table
+
++@item AVR32 family---@file{avr32.h}
++@table @code
++@item f
++Floating-point registers (f0 to f15)
++
++@item Ku@var{bits}
++Unsigned constant representable with @var{bits} number of bits (Must be
++two digits). I.e: An unsigned 8-bit constant is written as @samp{Ku08}
++
++@item Ks@var{bits}
++Signed constant representable with @var{bits} number of bits (Must be
++two digits). I.e: A signed 12-bit constant is written as @samp{Ks12}
++
++@item Is@var{bits}
++The negated range of a signed constant representable with @var{bits}
++number of bits. The same as @samp{Ks@var{bits}} with a negated range.
++This means that the constant must be in the range @math{-2^{bits-1}-1} to @math{2^{bits-1}}
++
++@item G
++A single/double precision floating-point immediate or 64-bit integer
++immediate where the least and most significant words both can be
++loaded with a move instruction. That is the the integer form of the
++values in the least and most significant words both are in the range
++@math{-2^{20}} to @math{2^{20}-1}.
++
++@item RKs@var{bits}
++A memory reference where the address consists of a base register
++plus a signed immediate displacement with range given by @samp{Ks@var{bits}}
++which has the same format as for the signed immediate integer constraint
++given above.
++
++@item RKu@var{bits}
++A memory reference where the address consists of a base register
++plus an unsigned immediate displacement with range given by @samp{Ku@var{bits}}
++which has the same format as for the unsigned immediate integer constraint
++given above.
++
++@item S
++A memory reference with an immediate or register offset
++
++@item T
++A memory reference to a constant pool entry
++
++@item W
++A valid operand for use in the @samp{lda.w} instruction macro when
++relaxing is enabled
++
++@item Z
++A memory reference valid for coprocessor memory instructions
++
++@end table
++
++
+ @item AVR family---@file{avr.h}
+ @table @code
+ @item l
+@@ -2069,102 +2123,6 @@ range of 1 to 2047.
+
+ @end table
+
+-@item Blackfin family---@file{bfin.h}
+-@table @code
+-@item a
+-P register
+-
+-@item d
+-D register
+-
+-@item z
+-A call clobbered P register.
+-
+-@item D
+-Even-numbered D register
+-
+-@item W
+-Odd-numbered D register
+-
+-@item e
+-Accumulator register.
+-
+-@item A
+-Even-numbered accumulator register.
+-
+-@item B
+-Odd-numbered accumulator register.
+-
+-@item b
+-I register
+-
+-@item B
+-B register
+-
+-@item f
+-M register
+-
+-@item c
+-Registers used for circular buffering, i.e. I, B, or L registers.
+-
+-@item C
+-The CC register.
+-
+-@item x
+-Any D, P, B, M, I or L register.
+-
+-@item y
+-Additional registers typically used only in prologues and epilogues: RETS,
+-RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP.
+-
+-@item w
+-Any register except accumulators or CC.
+-
+-@item Ksh
+-Signed 16 bit integer (in the range -32768 to 32767)
+-
+-@item Kuh
+-Unsigned 16 bit integer (in the range 0 to 65535)
+-
+-@item Ks7
+-Signed 7 bit integer (in the range -64 to 63)
+-
+-@item Ku7
+-Unsigned 7 bit integer (in the range 0 to 127)
+-
+-@item Ku5
+-Unsigned 5 bit integer (in the range 0 to 31)
+-
+-@item Ks4
+-Signed 4 bit integer (in the range -8 to 7)
+-
+-@item Ks3
+-Signed 3 bit integer (in the range -3 to 4)
+-
+-@item Ku3
+-Unsigned 3 bit integer (in the range 0 to 7)
+-
+-@item P@var{n}
+-Constant @var{n}, where @var{n} is a single-digit constant in the range 0 to 4.
+-
+-@item M1
+-Constant 255.
+-
+-@item M2
+-Constant 65535.
+-
+-@item J
+-An integer constant with exactly a single bit set.
+-
+-@item L
+-An integer constant with all bits set except exactly one.
+-
+-@item H
+-
+-@item Q
+-Any SYMBOL_REF.
+-@end table
+-
+ @item IP2K---@file{ip2k.h}
+ @table @code
+ @item a
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/expr.c gcc-4.0.2-atmel.0.99.2/gcc/expr.c
+--- gcc-4.0.2/gcc/expr.c 2005-09-10 03:03:28.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/expr.c 2006-10-10 12:40:42.000000000 +0200
+@@ -3314,16 +3314,17 @@ emit_single_push_insn (enum machine_mode
+ }
+ else
+ {
++ emit_move_insn (stack_pointer_rtx,
++ expand_binop (Pmode,
+ #ifdef STACK_GROWS_DOWNWARD
+- /* ??? This seems wrong if STACK_PUSH_CODE == POST_DEC. */
+- dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
+- GEN_INT (-(HOST_WIDE_INT) rounded_size));
++ sub_optab,
+ #else
+- /* ??? This seems wrong if STACK_PUSH_CODE == POST_INC. */
+- dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
+- GEN_INT (rounded_size));
++ add_optab,
+ #endif
+- dest_addr = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, dest_addr);
++ stack_pointer_rtx,
++ GEN_INT (rounded_size),
++ NULL_RTX, 0, OPTAB_LIB_WIDEN));
++ dest_addr = stack_pointer_rtx;
+ }
+
+ dest = gen_rtx_MEM (mode, dest_addr);
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/genemit.c gcc-4.0.2-atmel.0.99.2/gcc/genemit.c
+--- gcc-4.0.2/gcc/genemit.c 2004-09-09 15:22:33.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/genemit.c 2006-03-23 13:26:49.000000000 +0100
+@@ -122,6 +122,24 @@ max_operand_vec (rtx insn, int arg)
+ }
+
+ static void
++gen_vararg_prologue(int operands)
++{
++ int i;
++
++ if (operands > 1)
++ {
++ for (i = 1; i < operands; i++)
++ printf(" rtx operand%d ATTRIBUTE_UNUSED;\n", i);
++
++ printf(" va_list args;\n\n");
++ printf(" va_start(args, operand0);\n");
++ for (i = 1; i < operands; i++)
++ printf(" operand%d = va_arg(args, rtx);\n", i);
++ printf(" va_end(args);\n\n");
++ }
++}
++
++static void
+ print_code (RTX_CODE code)
+ {
+ const char *p1;
+@@ -406,18 +424,16 @@ gen_insn (rtx insn, int lineno)
+ fatal ("match_dup operand number has no match_operand");
+
+ /* Output the function name and argument declarations. */
+- printf ("rtx\ngen_%s (", XSTR (insn, 0));
++ printf ("rtx\ngen_%s ", XSTR (insn, 0));
++
+ if (operands)
+- for (i = 0; i < operands; i++)
+- if (i)
+- printf (",\n\trtx operand%d ATTRIBUTE_UNUSED", i);
++ printf("(rtx operand0 ATTRIBUTE_UNUSED, ...)\n");
+ else
+- printf ("rtx operand%d ATTRIBUTE_UNUSED", i);
+- else
+- printf ("void");
+- printf (")\n");
++ printf("(void)\n");
+ printf ("{\n");
+
++ gen_vararg_prologue(operands);
++
+ /* Output code to construct and return the rtl for the instruction body. */
+
+ if (XVECLEN (insn, 1) == 1)
+@@ -457,16 +473,12 @@ gen_expand (rtx expand)
+ operands = max_operand_vec (expand, 1);
+
+ /* Output the function name and argument declarations. */
+- printf ("rtx\ngen_%s (", XSTR (expand, 0));
++ printf ("rtx\ngen_%s ", XSTR (expand, 0));
+ if (operands)
+- for (i = 0; i < operands; i++)
+- if (i)
+- printf (",\n\trtx operand%d", i);
+- else
+- printf ("rtx operand%d", i);
++ printf("(rtx operand0 ATTRIBUTE_UNUSED, ...)\n");
+ else
+- printf ("void");
+- printf (")\n");
++ printf("(void)\n");
++
+ printf ("{\n");
+
+ /* If we don't have any C code to write, only one insn is being written,
+@@ -476,6 +488,8 @@ gen_expand (rtx expand)
+ && operands > max_dup_opno
+ && XVECLEN (expand, 1) == 1)
+ {
++ gen_vararg_prologue(operands);
++
+ printf (" return ");
+ gen_exp (XVECEXP (expand, 1, 0), DEFINE_EXPAND, NULL);
+ printf (";\n}\n\n");
+@@ -489,6 +503,7 @@ gen_expand (rtx expand)
+ for (; i <= max_scratch_opno; i++)
+ printf (" rtx operand%d ATTRIBUTE_UNUSED;\n", i);
+ printf (" rtx _val = 0;\n");
++ gen_vararg_prologue(operands);
+ printf (" start_sequence ();\n");
+
+ /* The fourth operand of DEFINE_EXPAND is some code to be executed
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/genflags.c gcc-4.0.2-atmel.0.99.2/gcc/genflags.c
+--- gcc-4.0.2/gcc/genflags.c 2004-09-09 15:22:33.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/genflags.c 2006-10-10 12:40:42.000000000 +0200
+@@ -128,7 +128,6 @@ static void
+ gen_proto (rtx insn)
+ {
+ int num = num_operands (insn);
+- int i;
+ const char *name = XSTR (insn, 0);
+ int truth = maybe_eval_c_test (XSTR (insn, 2));
+
+@@ -159,12 +158,7 @@ gen_proto (rtx insn)
+ if (num == 0)
+ fputs ("void", stdout);
+ else
+- {
+- for (i = 1; i < num; i++)
+- fputs ("rtx, ", stdout);
+-
+- fputs ("rtx", stdout);
+- }
++ fputs("rtx, ...", stdout);
+
+ puts (");");
+
+@@ -174,12 +168,7 @@ gen_proto (rtx insn)
+ {
+ printf ("static inline rtx\ngen_%s", name);
+ if (num > 0)
+- {
+- putchar ('(');
+- for (i = 0; i < num-1; i++)
+- printf ("rtx ARG_UNUSED (%c), ", 'a' + i);
+- printf ("rtx ARG_UNUSED (%c))\n", 'a' + i);
+- }
++ puts("(rtx ARG_UNUSED(a), ...)");
+ else
+ puts ("(void)");
+ puts ("{\n return 0;\n}");
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/genoutput.c gcc-4.0.2-atmel.0.99.2/gcc/genoutput.c
+--- gcc-4.0.2/gcc/genoutput.c 2004-09-09 15:22:34.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/genoutput.c 2006-03-23 13:26:49.000000000 +0100
+@@ -383,7 +383,7 @@ output_insn_data (void)
+ }
+
+ if (d->name && d->name[0] != '*')
+- printf (" (insn_gen_fn) gen_%s,\n", d->name);
++ printf (" gen_%s,\n", d->name);
+ else
+ printf (" 0,\n");
+
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/longlong.h gcc-4.0.2-atmel.0.99.2/gcc/longlong.h
+--- gcc-4.0.2/gcc/longlong.h 2004-06-15 12:40:44.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/longlong.h 2005-06-07 14:59:22.000000000 +0200
+@@ -227,6 +227,39 @@ UDItype __umulsidi3 (USItype, USItype);
+ #define UDIV_TIME 100
+ #endif /* __arm__ */
+
++#if defined (__avr32__) && W_TYPE_SIZE == 32
++#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
++ __asm__ ("add\t%1, %4, %5\n\tadc\t%0, %2, %3" \
++ : "=r" ((USItype) (sh)), \
++ "=&r" ((USItype) (sl)) \
++ : "r" ((USItype) (ah)), \
++ "r" ((USItype) (bh)), \
++ "r" ((USItype) (al)), \
++ "r" ((USItype) (bl)) __CLOBBER_CC)
++#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
++ __asm__ ("sub\t%1, %4, %5\n\tsbc\t%0, %2, %3" \
++ : "=r" ((USItype) (sh)), \
++ "=&r" ((USItype) (sl)) \
++ : "r" ((USItype) (ah)), \
++ "r" ((USItype) (bh)), \
++ "r" ((USItype) (al)), \
++ "r" ((USItype) (bl)) __CLOBBER_CC)
++
++#define __umulsidi3(a,b) ((UDItype)(a) * (UDItype)(b))
++
++#define umul_ppmm(w1, w0, u, v) \
++{ \
++ DWunion __w; \
++ __w.ll = __umulsidi3 (u, v); \
++ w1 = __w.s.high; \
++ w0 = __w.s.low; \
++}
++
++#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
++#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X))
++#define COUNT_LEADING_ZEROS_0 32
++#endif
++
+ #if defined (__hppa) && W_TYPE_SIZE == 32
+ #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/optabs.h gcc-4.0.2-atmel.0.99.2/gcc/optabs.h
+--- gcc-4.0.2/gcc/optabs.h 2005-02-12 12:34:21.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/optabs.h 2006-10-10 12:40:42.000000000 +0200
+@@ -389,7 +389,7 @@ extern enum insn_code reload_out_optab[N
+ extern GTY(()) optab code_to_optab[NUM_RTX_CODE + 1];
+
+
+-typedef rtx (*rtxfun) (rtx);
++typedef rtx (*rtxfun) (rtx, ...);
+
+ /* Indexed by the rtx-code for a conditional (e.g. EQ, LT,...)
+ gives the gen_function to make a branch to test that condition. */
+Binary files gcc-4.0.2/gcc/po/be.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/be.gmo differ
+Binary files gcc-4.0.2/gcc/po/ca.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/ca.gmo differ
+Binary files gcc-4.0.2/gcc/po/da.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/da.gmo differ
+Binary files gcc-4.0.2/gcc/po/de.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/de.gmo differ
+Binary files gcc-4.0.2/gcc/po/el.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/el.gmo differ
+Binary files gcc-4.0.2/gcc/po/es.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/es.gmo differ
+Binary files gcc-4.0.2/gcc/po/fr.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/fr.gmo differ
+Binary files gcc-4.0.2/gcc/po/ja.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/ja.gmo differ
+Binary files gcc-4.0.2/gcc/po/nl.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/nl.gmo differ
+Binary files gcc-4.0.2/gcc/po/sv.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/sv.gmo differ
+Binary files gcc-4.0.2/gcc/po/tr.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/tr.gmo differ
+Binary files gcc-4.0.2/gcc/po/zh_CN.gmo and gcc-4.0.2-atmel.0.99.2/gcc/po/zh_CN.gmo differ
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c gcc-4.0.2-atmel.0.99.2/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c
+--- gcc-4.0.2/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c 2005-02-19 20:48:02.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c 2005-06-07 14:06:28.000000000 +0200
+@@ -1 +1,3 @@
+-/* Test no newline at eof warning when Mac line ending is used*/ /* { dg-do compile } */ int main() { return 0; }
+\ No newline at end of file
++/* Test no newline at eof warning when Mac line ending is used*/
++/* { dg-do compile } */
++int main() { return 0; }
+diff -Nrup --ignore-space-change gcc-4.0.2/gcc/tree-ssa-operands.c gcc-4.0.2-atmel.0.99.2/gcc/tree-ssa-operands.c
+--- gcc-4.0.2/gcc/tree-ssa-operands.c 2005-06-24 15:23:42.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/gcc/tree-ssa-operands.c 2005-07-15 16:06:29.000000000 +0200
+@@ -1135,7 +1135,7 @@ get_expr_operands (tree stmt, tree *expr
+
+ if (code == COMPONENT_REF)
+ {
+- if (s_ann && TREE_THIS_VOLATILE (TREE_OPERAND (expr, 1)))
++ if (TREE_THIS_VOLATILE (TREE_OPERAND (expr, 1)))
+ s_ann->has_volatile_ops = true;
+ get_expr_operands (stmt, &TREE_OPERAND (expr, 2), opf_none);
+ }
+diff -Nrup --ignore-space-change gcc-4.0.2/libcpp/po/sv.po gcc-4.0.2-atmel.0.99.2/libcpp/po/sv.po
+--- gcc-4.0.2/libcpp/po/sv.po 2005-09-04 14:30:22.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libcpp/po/sv.po 2006-01-20 10:54:31.000000000 +0100
+@@ -2,7 +2,7 @@
+ # Copyright 2000, 2005 Free Software Foundation, Inc.
+ # Dennis Bjrklund <db@zigo.dhs.org>, 2000, 2001, 2002.
+ # Gran Uddeborg <goeran@uddeborg.se>, 2005.
+-# $Revision: 1.2 $
++# $Revision: 3550 $
+ #
+ msgid ""
+ msgstr ""
+Binary files gcc-4.0.2/libcpp/po/tr.gmo and gcc-4.0.2-atmel.0.99.2/libcpp/po/tr.gmo differ
+Binary files gcc-4.0.2/libcpp/po/vi.gmo and gcc-4.0.2-atmel.0.99.2/libcpp/po/vi.gmo differ
+diff -Nrup --ignore-space-change gcc-4.0.2/libffi/src/frv/eabi.S gcc-4.0.2-atmel.0.99.2/libffi/src/frv/eabi.S
+--- gcc-4.0.2/libffi/src/frv/eabi.S 2004-08-30 17:43:03.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libffi/src/frv/eabi.S 2005-07-15 16:26:03.000000000 +0200
+@@ -3,7 +3,7 @@
+
+ FR-V Assembly glue.
+
+- $Id: sysv.S,v 1.1.1.1 1998/11/29 16:48:16 green Exp $
++ $Id: eabi.S 3484 2005-07-15 14:26:03Z rpedersen $
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/AttributeList.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/AttributeList.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/AttributeList.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/AttributeList.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX Attribute List Interface.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: AttributeList.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: AttributeList.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/Attributes.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Attributes.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/Attributes.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Attributes.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: Attributes.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Attributes.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ContentHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ContentHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ContentHandler.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ContentHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: ContentHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: ContentHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/DocumentHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/DocumentHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/DocumentHandler.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/DocumentHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX document handler.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: DocumentHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: DocumentHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/DTDHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/DTDHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/DTDHandler.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/DTDHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX DTD handler.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: DTDHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: DTDHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/EntityResolver.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/EntityResolver.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/EntityResolver.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/EntityResolver.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX entity resolver.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: EntityResolver.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: EntityResolver.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ErrorHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ErrorHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ErrorHandler.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ErrorHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX error handler.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: ErrorHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: ErrorHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Attributes2Impl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Attributes2Impl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Attributes2Impl.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Attributes2Impl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // Attributes2Impl.java - extended AttributesImpl
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: Attributes2Impl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Attributes2Impl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Attributes2.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Attributes2.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Attributes2.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Attributes2.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // Attributes2.java - extended Attributes
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: Attributes2.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Attributes2.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/DeclHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/DeclHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/DeclHandler.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/DeclHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // DeclHandler.java - Optional handler for DTD declaration events.
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: DeclHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: DeclHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/DefaultHandler2.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/DefaultHandler2.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/DefaultHandler2.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/DefaultHandler2.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // DefaultHandler2.java - extended DefaultHandler
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: DefaultHandler2.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: DefaultHandler2.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/EntityResolver2.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/EntityResolver2.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/EntityResolver2.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/EntityResolver2.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // EntityResolver2.java - Extended SAX entity resolver.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: EntityResolver2.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: EntityResolver2.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/LexicalHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/LexicalHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/LexicalHandler.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/LexicalHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // LexicalHandler.java - optional handler for lexical parse events.
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: LexicalHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: LexicalHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Locator2Impl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Locator2Impl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Locator2Impl.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Locator2Impl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // Locator2Impl.java - extended LocatorImpl
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: Locator2Impl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Locator2Impl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Locator2.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Locator2.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/Locator2.java 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/Locator2.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // Locator2.java - extended Locator
+ // http://www.saxproject.org
+ // Public Domain: no warranty.
+-// $Id: Locator2.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Locator2.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.ext;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/package.html gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/package.html
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/ext/package.html 2005-02-02 01:41:52.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/ext/package.html 2005-07-15 16:26:03.000000000 +0200
+@@ -1,5 +1,5 @@
+ <HTML><HEAD>
+-<!-- $Id: package.html,v 1.1 2004/12/23 22:38:42 mark Exp $ -->
++<!-- $Id: package.html 3484 2005-07-15 14:26:03Z rpedersen $ -->
+ </HEAD><BODY>
+
+ <p>
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/HandlerBase.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/HandlerBase.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/HandlerBase.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/HandlerBase.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX default handler base class.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: HandlerBase.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: HandlerBase.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/AttributeListImpl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/AttributeListImpl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/AttributeListImpl.java 2005-02-02 01:41:53.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/AttributeListImpl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX default implementation for AttributeList.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: AttributeListImpl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: AttributeListImpl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/AttributesImpl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/AttributesImpl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/AttributesImpl.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/AttributesImpl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: AttributesImpl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: AttributesImpl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/DefaultHandler.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/DefaultHandler.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/DefaultHandler.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/DefaultHandler.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: DefaultHandler.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: DefaultHandler.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/LocatorImpl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/LocatorImpl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/LocatorImpl.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/LocatorImpl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX default implementation for Locator.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: LocatorImpl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: LocatorImpl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/NamespaceSupport.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/NamespaceSupport.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/NamespaceSupport.java 2005-04-06 23:38:28.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/NamespaceSupport.java 2005-06-07 14:06:28.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // This class is in the Public Domain. NO WARRANTY!
+-// $Id: NamespaceSupport.java,v 1.2 2005/03/24 00:04:07 tromey Exp $
++// $Id: NamespaceSupport.java 3462 2005-06-07 12:06:28Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/NewInstance.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/NewInstance.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/NewInstance.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/NewInstance.java 2005-07-15 16:26:03.000000000 +0200
+@@ -3,7 +3,7 @@
+ // Written by Edwin Goei, edwingo@apache.org
+ // and by David Brownell, dbrownell@users.sourceforge.net
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: NewInstance.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: NewInstance.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/package.html gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/package.html
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/package.html 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/package.html 2005-07-15 16:26:03.000000000 +0200
+@@ -1,5 +1,5 @@
+ <HTML><HEAD>
+-<!-- $Id: package.html,v 1.1 2004/12/23 22:38:42 mark Exp $ -->
++<!-- $Id: package.html 3484 2005-07-15 14:26:03Z rpedersen $ -->
+ </HEAD><BODY>
+
+ <p>This package contains "helper" classes, including
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/ParserAdapter.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/ParserAdapter.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/ParserAdapter.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/ParserAdapter.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: ParserAdapter.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: ParserAdapter.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/ParserFactory.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/ParserFactory.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/ParserFactory.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/ParserFactory.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX parser factory.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: ParserFactory.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: ParserFactory.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLFilterImpl.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLFilterImpl.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLFilterImpl.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLFilterImpl.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: XMLFilterImpl.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: XMLFilterImpl.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the public domain.
+-// $Id: XMLReaderAdapter.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: XMLReaderAdapter.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderFactory.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderFactory.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderFactory.java 2005-02-02 01:41:54.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/helpers/XMLReaderFactory.java 2005-07-15 16:26:03.000000000 +0200
+@@ -3,7 +3,7 @@
+ // Written by David Megginson
+ // and by David Brownell
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: XMLReaderFactory.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: XMLReaderFactory.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax.helpers;
+ import java.io.BufferedReader;
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/InputSource.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/InputSource.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/InputSource.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/InputSource.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX input source.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: InputSource.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: InputSource.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/Locator.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Locator.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/Locator.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Locator.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX locator interface for document events.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: Locator.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Locator.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/package.html gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/package.html
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/package.html 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/package.html 2005-07-15 16:26:03.000000000 +0200
+@@ -1,5 +1,5 @@
+ <html><head>
+-<!-- $Id: package.html,v 1.1 2004/12/23 22:38:42 mark Exp $ -->
++<!-- $Id: package.html 3484 2005-07-15 14:26:03Z rpedersen $ -->
+ </head><body>
+
+ <p> This package provides the core SAX APIs.
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/Parser.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Parser.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/Parser.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/Parser.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX parser interface.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: Parser.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: Parser.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXException.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXException.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXException.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXException.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX exception class.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: SAXException.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: SAXException.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXNotRecognizedException.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXNotRecognizedException.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXNotRecognizedException.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXNotRecognizedException.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: SAXNotRecognizedException.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: SAXNotRecognizedException.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXNotSupportedException.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXNotSupportedException.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXNotSupportedException.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXNotSupportedException.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: SAXNotSupportedException.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: SAXNotSupportedException.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXParseException.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXParseException.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/SAXParseException.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/SAXParseException.java 2005-07-15 16:26:03.000000000 +0200
+@@ -1,7 +1,7 @@
+ // SAX exception class.
+ // http://www.saxproject.org
+ // No warranty; no copyright -- use this as you will.
+-// $Id: SAXParseException.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: SAXParseException.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/XMLFilter.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/XMLFilter.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/XMLFilter.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/XMLFilter.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: XMLFilter.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: XMLFilter.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/libjava/external/sax/org/xml/sax/XMLReader.java gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/XMLReader.java
+--- gcc-4.0.2/libjava/external/sax/org/xml/sax/XMLReader.java 2005-02-02 01:41:51.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libjava/external/sax/org/xml/sax/XMLReader.java 2005-07-15 16:26:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ // http://www.saxproject.org
+ // Written by David Megginson
+ // NO WARRANTY! This class is in the Public Domain.
+-// $Id: XMLReader.java,v 1.1 2004/12/23 22:38:42 mark Exp $
++// $Id: XMLReader.java 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package org.xml.sax;
+
+Binary files gcc-4.0.2/libjava/gnu/java/awt/doc-files/BitwiseXORComposite-1.png and gcc-4.0.2-atmel.0.99.2/libjava/gnu/java/awt/doc-files/BitwiseXORComposite-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/Area-1.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/Area-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/CubicCurve2D-1.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/CubicCurve2D-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/CubicCurve2D-2.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/CubicCurve2D-2.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/CubicCurve2D-3.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/CubicCurve2D-3.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/CubicCurve2D-4.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/CubicCurve2D-4.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/CubicCurve2D-5.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/CubicCurve2D-5.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/Ellipse-1.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/Ellipse-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/GeneralPath-1.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/GeneralPath-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/QuadCurve2D-1.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/QuadCurve2D-1.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/QuadCurve2D-2.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/QuadCurve2D-2.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/QuadCurve2D-3.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/QuadCurve2D-3.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/QuadCurve2D-4.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/QuadCurve2D-4.png differ
+Binary files gcc-4.0.2/libjava/java/awt/geom/doc-files/QuadCurve2D-5.png and gcc-4.0.2-atmel.0.99.2/libjava/java/awt/geom/doc-files/QuadCurve2D-5.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/BevelBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/BevelBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/BevelBorder-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/BevelBorder-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/BevelBorder-3.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/BevelBorder-3.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/EmptyBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/EmptyBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/EtchedBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/EtchedBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/EtchedBorder-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/EtchedBorder-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/LineBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/LineBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-3.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-3.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-4.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-4.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-5.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-5.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/MatteBorder-6.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/MatteBorder-6.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-3.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/border/doc-files/SoftBevelBorder-3.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/doc-files/ComponentUI-1.dia and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/doc-files/ComponentUI-1.dia differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/doc-files/ComponentUI-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/doc-files/ComponentUI-1.png differ
+Binary files gcc-4.0.2/libjava/javax/swing/plaf/doc-files/TreeUI-1.png and gcc-4.0.2-atmel.0.99.2/libjava/javax/swing/plaf/doc-files/TreeUI-1.png differ
+Binary files gcc-4.0.2/libjava/testsuite/libjava.jar/simple.jar and gcc-4.0.2-atmel.0.99.2/libjava/testsuite/libjava.jar/simple.jar differ
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/acinclude.m4 gcc-4.0.2-atmel.0.99.2/libstdc++-v3/acinclude.m4
+--- gcc-4.0.2/libstdc++-v3/acinclude.m4 2005-06-23 11:23:59.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/acinclude.m4 2006-03-28 10:54:09.000000000 +0200
+@@ -139,6 +139,15 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [
+ #enable_symvers=no
+ #enable_hosted_libstdcxx=yes
+
++ # Check for uClibc since Linux platforms use different configuration
++ # directories depending on the C library in use.
++ AC_EGREP_CPP([_using_uclibc], [
++ #include <stdio.h>
++ #if __UCLIBC__
++ _using_uclibc
++ #endif
++ ], uclibc=yes, uclibc=no)
++
+ # Find platform-specific directories containing configuration info.
+ # Also possibly modify flags used elsewhere, as needed by the platform.
+ GLIBCXX_CHECK_HOST
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/configure.host gcc-4.0.2-atmel.0.99.2/libstdc++-v3/configure.host
+--- gcc-4.0.2/libstdc++-v3/configure.host 2005-06-17 02:22:20.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/configure.host 2006-03-28 10:54:09.000000000 +0200
+@@ -193,8 +193,15 @@ case "${host_os}" in
+ freebsd*)
+ os_include_dir="os/bsd/freebsd"
+ ;;
++ linux-uclibc*)
++ os_include_dir="os/uclibc-linux"
++ ;;
+ gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
++ if [ "$uclibc" = "yes" ]; then
++ os_include_dir="os/uclibc"
++ else
+ os_include_dir="os/gnu-linux"
++ fi
+ ;;
+ hpux*)
+ os_include_dir="os/hpux"
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/crossconfig.m4 gcc-4.0.2-atmel.0.99.2/libstdc++-v3/crossconfig.m4
+--- gcc-4.0.2/libstdc++-v3/crossconfig.m4 2005-02-01 07:56:19.000000000 +0100
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/crossconfig.m4 2006-03-28 10:54:09.000000000 +0200
+@@ -148,9 +148,13 @@ case "${host}" in
+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+ AC_SUBST(SECTION_FLAGS)
++ GLIBCXX_CHECK_COMPILER_FEATURES
+ GLIBCXX_CHECK_LINKER_FEATURES
++ GLIBCXX_CHECK_MATH_SUPPORT
++ GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
+- GLIBCXX_CHECK_WCHAR_T_SUPPORT
++ GLIBCXX_CHECK_ICONV_SUPPORT
++ GLIBCXX_CHECK_STDLIB_SUPPORT
+
+ # For LFS.
+ AC_DEFINE(HAVE_INT64_T)
+Binary files gcc-4.0.2/libstdc++-v3/docs/html/17_intro/confdeps.png and gcc-4.0.2-atmel.0.99.2/libstdc++-v3/docs/html/17_intro/confdeps.png differ
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/include/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/include/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/include/Makefile.in 2005-06-22 22:39:09.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/include/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -36,6 +36,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/fragment.am
+ subdir = include
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/libmath/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/libmath/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/libmath/Makefile.in 2005-06-22 22:39:18.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/libmath/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(libmath_la_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -39,6 +37,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ subdir = libmath
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/libsupc++/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/libsupc++/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/libsupc++/Makefile.in 2005-06-22 22:39:21.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/libsupc++/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -15,8 +15,6 @@
+ @SET_MAKE@
+
+
+-SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -40,6 +38,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = $(glibcxxinstall_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/fragment.am
+ subdir = libsupc++
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/Makefile.in 2005-06-22 22:37:12.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -36,6 +36,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \
+ $(srcdir)/../config.sub $(srcdir)/../install-sh \
+ $(srcdir)/../ltmain.sh $(srcdir)/../missing \
+@@ -408,7 +409,13 @@ uninstall-info-am:
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @set fnord $$MAKEFLAGS; amf=$$2; \
++ @failcom='exit 1'; \
++ for f in x $$MAKEFLAGS; do \
++ case $$f in \
++ *=* | --[!k]*);; \
++ *k*) failcom='fail=yes';; \
++ esac; \
++ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -420,7 +427,7 @@ $(RECURSIVE_TARGETS):
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
++ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -428,7 +435,13 @@ $(RECURSIVE_TARGETS):
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @set fnord $$MAKEFLAGS; amf=$$2; \
++ @failcom='exit 1'; \
++ for f in x $$MAKEFLAGS; do \
++ case $$f in \
++ *=* | --[!k]*);; \
++ *k*) failcom='fail=yes';; \
++ esac; \
++ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -449,7 +462,7 @@ maintainer-clean-recursive:
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
++ || eval $$failcom; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/po/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/po/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/po/Makefile.in 2005-06-22 22:39:24.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/po/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -36,6 +36,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/fragment.am
+ subdir = po
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/src/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/src/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/src/Makefile.in 2005-06-22 22:39:26.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/src/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(libstdc___la_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+@@ -38,6 +36,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/fragment.am
+ subdir = src
+diff -Nrup --ignore-space-change gcc-4.0.2/libstdc++-v3/testsuite/Makefile.in gcc-4.0.2-atmel.0.99.2/libstdc++-v3/testsuite/Makefile.in
+--- gcc-4.0.2/libstdc++-v3/testsuite/Makefile.in 2005-06-22 22:39:30.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/libstdc++-v3/testsuite/Makefile.in 2006-03-28 10:54:09.000000000 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.3 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004 Free Software Foundation, Inc.
++# 2003, 2004, 2005 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(libv3test_a_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -39,6 +37,7 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++LIBOBJDIR =
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/fragment.am
+ subdir = testsuite
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/mtest.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/mtest.adb
+--- gcc-4.0.2/zlib/contrib/ada/mtest.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/mtest.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -8,7 +8,7 @@
+ -- Continuous test for ZLib multithreading. If the test is fail
+ -- Wou should provide thread safe allocation routines for the Z_Stream.
+ --
+--- $Id: mtest.adb,v 1.2 2003/08/12 12:11:05 vagul Exp $
++-- $Id: mtest.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ with ZLib;
+ with Ada.Streams;
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/read.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/read.adb
+--- gcc-4.0.2/zlib/contrib/ada/read.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/read.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: read.adb,v 1.7 2003/08/12 12:12:35 vagul Exp $
++-- $Id: read.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ -- Test/demo program for the generic read interface.
+
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/test.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/test.adb
+--- gcc-4.0.2/zlib/contrib/ada/test.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/test.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: test.adb,v 1.17 2003/08/12 12:13:30 vagul Exp $
++-- $Id: test.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ -- The program has a few aims.
+ -- 1. Test ZLib.Ada95 thick binding functionality.
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib.adb
+--- gcc-4.0.2/zlib/contrib/ada/zlib.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: zlib.adb,v 1.19 2003/07/13 16:02:19 vagul Exp $
++-- $Id: zlib.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ with Ada.Exceptions;
+ with Ada.Unchecked_Conversion;
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib.ads gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib.ads
+--- gcc-4.0.2/zlib/contrib/ada/zlib.ads 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib.ads 2005-07-15 16:26:03.000000000 +0200
+@@ -25,7 +25,7 @@
+ -- covered by the GNU Public License. --
+ ------------------------------------------------------------------------------
+
+--- $Id: zlib.ads,v 1.17 2003/08/12 13:19:07 vagul Exp $
++-- $Id: zlib.ads 3484 2005-07-15 14:26:03Z rpedersen $
+
+ with Ada.Streams;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib-streams.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-streams.adb
+--- gcc-4.0.2/zlib/contrib/ada/zlib-streams.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-streams.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: zlib-streams.adb,v 1.9 2003/08/12 13:15:31 vagul Exp $
++-- $Id: zlib-streams.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ with Ada.Unchecked_Deallocation;
+
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib-streams.ads gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-streams.ads
+--- gcc-4.0.2/zlib/contrib/ada/zlib-streams.ads 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-streams.ads 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: zlib-streams.ads,v 1.11 2003/08/12 13:15:31 vagul Exp $
++-- $Id: zlib-streams.ads 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package ZLib.Streams is
+
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib-thin.adb gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-thin.adb
+--- gcc-4.0.2/zlib/contrib/ada/zlib-thin.adb 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-thin.adb 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: zlib-thin.adb,v 1.6 2003/01/21 15:26:37 vagul Exp $
++-- $Id: zlib-thin.adb 3484 2005-07-15 14:26:03Z rpedersen $
+
+ package body ZLib.Thin is
+
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/contrib/ada/zlib-thin.ads gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-thin.ads
+--- gcc-4.0.2/zlib/contrib/ada/zlib-thin.ads 2004-10-11 19:44:23.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/contrib/ada/zlib-thin.ads 2005-07-15 16:26:03.000000000 +0200
+@@ -6,7 +6,7 @@
+ -- Open source license information is in the zlib.ads file. --
+ ----------------------------------------------------------------
+
+--- $Id: zlib-thin.ads,v 1.8 2003/08/12 13:16:51 vagul Exp $
++-- $Id: zlib-thin.ads 3484 2005-07-15 14:26:03Z rpedersen $
+
+ with Interfaces.C.Strings;
+ with System.Address_To_Access_Conversions;
+diff -Nrup --ignore-space-change gcc-4.0.2/zlib/zconf.in.h gcc-4.0.2-atmel.0.99.2/zlib/zconf.in.h
+--- gcc-4.0.2/zlib/zconf.in.h 2004-10-11 19:44:14.000000000 +0200
++++ gcc-4.0.2-atmel.0.99.2/zlib/zconf.in.h 2005-07-15 16:26:03.000000000 +0200
+@@ -3,7 +3,7 @@
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+-/* @(#) $Id$ */
++/* @(#) $Id: zconf.in.h 3484 2005-07-15 14:26:03Z rpedersen $ */
+
+ #ifndef ZCONF_H
+ #define ZCONF_H
diff --git a/packages/gcc/gcc-4.1.2/cache-amnesia.patch b/packages/gcc/gcc-4.1.2/cache-amnesia.patch
new file mode 100644
index 0000000000..ef7cd111c5
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/cache-amnesia.patch
@@ -0,0 +1,13 @@
+diff --git a/gcc/configure b/gcc/configure
+index 44620ab..6e1830c 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12272,7 +12272,7 @@ else
+ esac
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+- ${realsrcdir}/configure \
++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
+ CFLAGS="${saved_CFLAGS}"
diff --git a/packages/gcc/gcc-4.2-20060513/armeb-fix.patch b/packages/gcc/gcc-4.2-20060513/armeb-fix.patch
deleted file mode 100644
index 42bb4ea9ab..0000000000
--- a/packages/gcc/gcc-4.2-20060513/armeb-fix.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- gcc-4.0-20050305/gcc/config/arm/linux-elf.h.orig 2005-03-23 18:44:54.822707377 +0100
-+++ gcc-4.0-20050305/gcc/config/arm/linux-elf.h 2005-03-23 18:46:18.228560206 +0100
-@@ -31,19 +31,33 @@
- /* Do not assume anything about header files. */
- #define NO_IMPLICIT_EXTERN_C
-
-+/*
-+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for
-+ * arm*b-*-linux* (big endian) configurations.
-+ */
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
-+#define TARGET_ENDIAN_OPTION "mbig-endian"
-+#define TARGET_LINKER_EMULATION "armelfb_linux"
-+#else
-+#define TARGET_ENDIAN_DEFAULT 0
-+#define TARGET_ENDIAN_OPTION "mlittle-endian"
-+#define TARGET_LINKER_EMULATION "armelf_linux"
-+#endif
-+
- #undef TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
-
- #undef TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
-
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
-
--#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
-+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
-
- #undef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
-- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
-+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
-
- /* The GNU C++ standard library requires that these macros be defined. */
- #undef CPLUSPLUS_CPP_SPEC
-@@ -90,7 +104,7 @@
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
- -X \
-- %{mbig-endian:-EB}" \
-+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
- SUBTARGET_EXTRA_LINK_SPEC
-
- #define TARGET_OS_CPP_BUILTINS() \
---- gcc-4.0-20050305/gcc/config.gcc.orig 2005-03-23 18:46:23.318105335 +0100
-+++ gcc-4.0-20050305/gcc/config.gcc 2005-03-23 18:47:41.592546386 +0100
-@@ -650,6 +650,11 @@
- ;;
- arm*-*-linux*) # ARM GNU/Linux with ELF
- tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+ case $target in
-+ arm*b-*-linux*)
-+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
-+ ;;
-+ esac
- tmake_file="${tmake_file} arm/t-arm arm/t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- gnu_ld=yes
diff --git a/packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty b/packages/gcc/gcc-4.2.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty
+++ b/packages/gcc/gcc-4.2.0/.mtn2git_empty
diff --git a/packages/gcc/gcc-4.2.0/100-uclibc-conf.patch b/packages/gcc/gcc-4.2.0/100-uclibc-conf.patch
new file mode 100644
index 0000000000..4243ff7b91
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/100-uclibc-conf.patch
@@ -0,0 +1,200 @@
+--- gcc/libgomp/configure
++++ gcc/libgomp/configure
+@@ -3771,7 +3771,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/gcc/config/cris/linux.h
++++ gcc/gcc/config/cris/linux.h
+@@ -74,7 +74,11 @@
+ #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+
+ #undef CRIS_SUBTARGET_VERSION
+-#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
++#if UCLIBC_DEFAULT
++# define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
++#else
++# define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
++#endif
+
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+--- gcc/libstdc++-v3/configure
++++ gcc/libstdc++-v3/configure
+@@ -4276,7 +4276,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/zlib/configure
++++ gcc/zlib/configure
+@@ -3422,7 +3422,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libobjc/configure
++++ gcc/libobjc/configure
+@@ -3309,7 +3309,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libgfortran/configure
++++ gcc/libgfortran/configure
+@@ -3695,7 +3695,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libmudflap/configure
++++ gcc/libmudflap/configure
+@@ -5378,7 +5378,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/boehm-gc/configure
++++ gcc/boehm-gc/configure
+@@ -4316,7 +4316,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libffi/configure
++++ gcc/libffi/configure
+@@ -3453,7 +3453,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libssp/configure
++++ gcc/libssp/configure
+@@ -4409,7 +4409,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/contrib/regression/objs-gcc.sh
++++ gcc/contrib/regression/objs-gcc.sh
+@@ -105,6 +105,10 @@
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
++ then
++ make all-gdb all-dejagnu all-ld || exit 1
++ make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+ make bootstrap || exit 1
+ make install || exit 1
+--- gcc/libjava/classpath/ltconfig
++++ gcc/libjava/classpath/ltconfig
+@@ -603,7 +603,7 @@
+
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
+-linux-gnu*) ;;
++linux-gnu*|linux-uclibc*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+
+@@ -1251,7 +1251,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+--- gcc/libjava/classpath/configure
++++ gcc/libjava/classpath/configure
+@@ -4665,7 +4665,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libjava/configure
++++ gcc/libjava/configure
+@@ -5212,7 +5212,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/libtool.m4
++++ gcc/libtool.m4
+@@ -739,7 +739,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- gcc/ltconfig
++++ gcc/ltconfig
+@@ -603,7 +603,7 @@
+
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
+-linux-gnu*) ;;
++linux-gnu*|linux-uclibc*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+
+@@ -1251,7 +1251,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
diff --git a/packages/gcc/gcc-4.2.0/110-arm-eabi.patch b/packages/gcc/gcc-4.2.0/110-arm-eabi.patch
new file mode 100644
index 0000000000..acebe5308f
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/110-arm-eabi.patch
@@ -0,0 +1,27 @@
+--- gcc-2005q3-1.orig/gcc/config.gcc 2005-10-31 19:02:54.000000000 +0300
++++ gcc-2005q3-1/gcc/config.gcc 2006-01-27 01:09:09.000000000 +0300
+@@ -674,7 +674,7 @@
+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+ tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm"
+ case ${target} in
+- arm*-*-linux-gnueabi)
++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
+ tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
+ # The BPABI long long divmod functions return a 128-bit value in
+
+diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h
+--- gcc-2005q3-2/gcc/config/arm/linux-eabi.h 2005-12-07 23:14:16.000000000 +0300
++++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h 2006-03-29 19:02:34.000000000 +0400
+@@ -53,7 +53,11 @@
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
+ #undef LINUX_TARGET_INTERPRETER
++#ifdef USE_UCLIBC
++#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
++#else
+ #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
++#endif
+
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
diff --git a/packages/gcc/gcc-4.2.0/200-uclibc-locale.patch b/packages/gcc/gcc-4.2.0/200-uclibc-locale.patch
new file mode 100644
index 0000000000..c933d1c446
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/200-uclibc-locale.patch
@@ -0,0 +1,2790 @@
+--- gcc/libstdc++-v3/acinclude.m4
++++ gcc/libstdc++-v3/acinclude.m4
+@@ -1369,7 +1369,7 @@
+ AC_MSG_CHECKING([for C locale to use])
+ GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
+ [use MODEL for target locale package],
+- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
++ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
+
+ # If they didn't use this option switch, or if they specified --enable
+ # with no specific model, we'll have to look for one. If they
+@@ -1385,6 +1385,9 @@
+ # Default to "generic".
+ if test $enable_clocale_flag = auto; then
+ case ${target_os} in
++ *-uclibc*)
++ enable_clocale_flag=uclibc
++ ;;
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ AC_EGREP_CPP([_GLIBCXX_ok], [
+ #include <features.h>
+@@ -1528,6 +1531,40 @@
+ CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+ ;;
++ uclibc)
++ AC_MSG_RESULT(uclibc)
++
++ # Declare intention to use gettext, and add support for specific
++ # languages.
++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++ ALL_LINGUAS="de fr"
++
++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++ USE_NLS=yes
++ fi
++ # Export the build objects.
++ for ling in $ALL_LINGUAS; do \
++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++ done
++ AC_SUBST(glibcxx_MOFILES)
++ AC_SUBST(glibcxx_POFILES)
++
++ CLOCALE_H=config/locale/uclibc/c_locale.h
++ CLOCALE_CC=config/locale/uclibc/c_locale.cc
++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++ CMESSAGES_H=config/locale/uclibc/messages_members.h
++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++ CMONEY_CC=config/locale/uclibc/monetary_members.cc
++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++ CTIME_H=config/locale/uclibc/time_members.h
++ CTIME_CC=config/locale/uclibc/time_members.cc
++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++ ;;
+ esac
+
+ # This is where the testsuite looks for locale catalogs, using the
+--- gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
++++ gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+@@ -0,0 +1,63 @@
++// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
++
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++// Written by Jakub Jelinek <jakub@redhat.com>
++
++#include <bits/c++config.h>
++#include <clocale>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning clean this up
++#endif
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++
++extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
++extern "C" __typeof(strcoll_l) __strcoll_l;
++extern "C" __typeof(strftime_l) __strftime_l;
++extern "C" __typeof(strtod_l) __strtod_l;
++extern "C" __typeof(strtof_l) __strtof_l;
++extern "C" __typeof(strtold_l) __strtold_l;
++extern "C" __typeof(strxfrm_l) __strxfrm_l;
++extern "C" __typeof(newlocale) __newlocale;
++extern "C" __typeof(freelocale) __freelocale;
++extern "C" __typeof(duplocale) __duplocale;
++extern "C" __typeof(uselocale) __uselocale;
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++extern "C" __typeof(iswctype_l) __iswctype_l;
++extern "C" __typeof(towlower_l) __towlower_l;
++extern "C" __typeof(towupper_l) __towupper_l;
++extern "C" __typeof(wcscoll_l) __wcscoll_l;
++extern "C" __typeof(wcsftime_l) __wcsftime_l;
++extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
++extern "C" __typeof(wctype_l) __wctype_l;
++#endif
++
++#endif // GLIBC 2.3 and later
+--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc
+@@ -0,0 +1,160 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8 Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <cerrno> // For errno
++#include <locale>
++#include <stdexcept>
++#include <langinfo.h>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strtol_l(S, E, B, L) strtol((S), (E), (B))
++#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B))
++#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B))
++#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B))
++#define __strtof_l(S, E, L) strtof((S), (E))
++#define __strtod_l(S, E, L) strtod((S), (E))
++#define __strtold_l(S, E, L) strtold((S), (E))
++#warning should dummy __newlocale check for C|POSIX ?
++#define __newlocale(a, b, c) NULL
++#define __freelocale(a) ((void)0)
++#define __duplocale(a) __c_locale()
++#endif
++
++namespace std
++{
++ template<>
++ void
++ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ if (!(__err & ios_base::failbit))
++ {
++ char* __sanity;
++ errno = 0;
++ float __f = __strtof_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __f;
++ else
++ __err |= ios_base::failbit;
++ }
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ if (!(__err & ios_base::failbit))
++ {
++ char* __sanity;
++ errno = 0;
++ double __d = __strtod_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __d;
++ else
++ __err |= ios_base::failbit;
++ }
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ if (!(__err & ios_base::failbit))
++ {
++ char* __sanity;
++ errno = 0;
++ long double __ld = __strtold_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __ld;
++ else
++ __err |= ios_base::failbit;
++ }
++ }
++
++ void
++ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
++ __c_locale __old)
++ {
++ __cloc = __newlocale(1 << LC_ALL, __s, __old);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ if (!__cloc)
++ {
++ // This named locale is not supported by the underlying OS.
++ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
++ "name not valid"));
++ }
++#endif
++ }
++
++ void
++ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
++ {
++ if (_S_get_c_locale() != __cloc)
++ __freelocale(__cloc);
++ }
++
++ __c_locale
++ locale::facet::_S_clone_c_locale(__c_locale& __cloc)
++ { return __duplocale(__cloc); }
++} // namespace std
++
++namespace __gnu_cxx
++{
++ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
++ {
++ "LC_CTYPE",
++ "LC_NUMERIC",
++ "LC_TIME",
++ "LC_COLLATE",
++ "LC_MONETARY",
++ "LC_MESSAGES",
++#if _GLIBCXX_NUM_CATEGORIES != 0
++ "LC_PAPER",
++ "LC_NAME",
++ "LC_ADDRESS",
++ "LC_TELEPHONE",
++ "LC_MEASUREMENT",
++ "LC_IDENTIFICATION"
++#endif
++ };
++}
++
++namespace std
++{
++ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
++} // namespace std
+--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.h
++++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.h
+@@ -0,0 +1,117 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8 Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifndef _C_LOCALE_H
++#define _C_LOCALE_H 1
++
++#pragma GCC system_header
++
++#include <cstring> // get std::strlen
++#include <cstdio> // get std::snprintf or std::sprintf
++#include <clocale>
++#include <langinfo.h> // For codecvt
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this
++#endif
++#ifdef __UCLIBC_HAS_LOCALE__
++#include <iconv.h> // For codecvt using iconv, iconv_t
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++#include <libintl.h> // For messages
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning what is _GLIBCXX_C_LOCALE_GNU for
++#endif
++#define _GLIBCXX_C_LOCALE_GNU 1
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix categories
++#endif
++// #define _GLIBCXX_NUM_CATEGORIES 6
++#define _GLIBCXX_NUM_CATEGORIES 0
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++namespace __gnu_cxx
++{
++ extern "C" __typeof(uselocale) __uselocale;
++}
++#endif
++
++namespace std
++{
++#ifdef __UCLIBC_HAS_XLOCALE__
++ typedef __locale_t __c_locale;
++#else
++ typedef int* __c_locale;
++#endif
++
++ // Convert numeric value of type _Tv to string and return length of
++ // string. If snprintf is available use it, otherwise fall back to
++ // the unsafe sprintf which, in general, can be dangerous and should
++ // be avoided.
++ template<typename _Tv>
++ int
++ __convert_from_v(char* __out,
++ const int __size __attribute__ ((__unused__)),
++ const char* __fmt,
++#ifdef __UCLIBC_HAS_XCLOCALE__
++ _Tv __v, const __c_locale& __cloc, int __prec)
++ {
++ __c_locale __old = __gnu_cxx::__uselocale(__cloc);
++#else
++ _Tv __v, const __c_locale&, int __prec)
++ {
++# ifdef __UCLIBC_HAS_LOCALE__
++ char* __old = std::setlocale(LC_ALL, NULL);
++ char* __sav = new char[std::strlen(__old) + 1];
++ std::strcpy(__sav, __old);
++ std::setlocale(LC_ALL, "C");
++# endif
++#endif
++
++ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
++
++#ifdef __UCLIBC_HAS_XCLOCALE__
++ __gnu_cxx::__uselocale(__old);
++#elif defined __UCLIBC_HAS_LOCALE__
++ std::setlocale(LC_ALL, __sav);
++ delete [] __sav;
++#endif
++ return __ret;
++ }
++}
++
++#endif
+--- gcc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
+@@ -0,0 +1,306 @@
++// std::codecvt implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.5 - Template class codecvt
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++namespace std
++{
++ // Specializations.
++#ifdef _GLIBCXX_USE_WCHAR_T
++ codecvt_base::result
++ codecvt<wchar_t, char, mbstate_t>::
++ do_out(state_type& __state, const intern_type* __from,
++ const intern_type* __from_end, const intern_type*& __from_next,
++ extern_type* __to, extern_type* __to_end,
++ extern_type*& __to_next) const
++ {
++ result __ret = ok;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // wcsnrtombs is *very* fast but stops if encounters NUL characters:
++ // in case we fall back to wcrtomb and then continue, in a loop.
++ // NB: wcsnrtombs is a GNU extension
++ for (__from_next = __from, __to_next = __to;
++ __from_next < __from_end && __to_next < __to_end
++ && __ret == ok;)
++ {
++ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
++ __from_end - __from_next);
++ if (!__from_chunk_end)
++ __from_chunk_end = __from_end;
++
++ __from = __from_next;
++ const size_t __conv = wcsnrtombs(__to_next, &__from_next,
++ __from_chunk_end - __from_next,
++ __to_end - __to_next, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // wcrtomb.
++ for (; __from < __from_next; ++__from)
++ __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
++ __state = __tmp_state;
++ __ret = error;
++ }
++ else if (__from_next && __from_next < __from_chunk_end)
++ {
++ __to_next += __conv;
++ __ret = partial;
++ }
++ else
++ {
++ __from_next = __from_chunk_end;
++ __to_next += __conv;
++ }
++
++ if (__from_next < __from_end && __ret == ok)
++ {
++ extern_type __buf[MB_LEN_MAX];
++ __tmp_state = __state;
++ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
++ if (__conv > static_cast<size_t>(__to_end - __to_next))
++ __ret = partial;
++ else
++ {
++ memcpy(__to_next, __buf, __conv);
++ __state = __tmp_state;
++ __to_next += __conv;
++ ++__from_next;
++ }
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++
++ codecvt_base::result
++ codecvt<wchar_t, char, mbstate_t>::
++ do_in(state_type& __state, const extern_type* __from,
++ const extern_type* __from_end, const extern_type*& __from_next,
++ intern_type* __to, intern_type* __to_end,
++ intern_type*& __to_next) const
++ {
++ result __ret = ok;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++ // in case we store a L'\0' and then continue, in a loop.
++ // NB: mbsnrtowcs is a GNU extension
++ for (__from_next = __from, __to_next = __to;
++ __from_next < __from_end && __to_next < __to_end
++ && __ret == ok;)
++ {
++ const extern_type* __from_chunk_end;
++ __from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
++ __from_end
++ - __from_next));
++ if (!__from_chunk_end)
++ __from_chunk_end = __from_end;
++
++ __from = __from_next;
++ size_t __conv = mbsnrtowcs(__to_next, &__from_next,
++ __from_chunk_end - __from_next,
++ __to_end - __to_next, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // mbrtowc.
++ for (;; ++__to_next, __from += __conv)
++ {
++ __conv = mbrtowc(__to_next, __from, __from_end - __from,
++ &__tmp_state);
++ if (__conv == static_cast<size_t>(-1)
++ || __conv == static_cast<size_t>(-2))
++ break;
++ }
++ __from_next = __from;
++ __state = __tmp_state;
++ __ret = error;
++ }
++ else if (__from_next && __from_next < __from_chunk_end)
++ {
++ // It is unclear what to return in this case (see DR 382).
++ __to_next += __conv;
++ __ret = partial;
++ }
++ else
++ {
++ __from_next = __from_chunk_end;
++ __to_next += __conv;
++ }
++
++ if (__from_next < __from_end && __ret == ok)
++ {
++ if (__to_next < __to_end)
++ {
++ // XXX Probably wrong for stateful encodings
++ __tmp_state = __state;
++ ++__from_next;
++ *__to_next++ = L'\0';
++ }
++ else
++ __ret = partial;
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_encoding() const throw()
++ {
++ // XXX This implementation assumes that the encoding is
++ // stateless and is either single-byte or variable-width.
++ int __ret = 0;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++ if (MB_CUR_MAX == 1)
++ __ret = 1;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_max_length() const throw()
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++ // XXX Probably wrong for stateful encodings.
++ int __ret = MB_CUR_MAX;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_length(state_type& __state, const extern_type* __from,
++ const extern_type* __end, size_t __max) const
++ {
++ int __ret = 0;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++ // in case we advance past it and then continue, in a loop.
++ // NB: mbsnrtowcs is a GNU extension
++
++ // A dummy internal buffer is needed in order for mbsnrtocws to consider
++ // its fourth parameter (it wouldn't with NULL as first parameter).
++ wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
++ * __max));
++ while (__from < __end && __max)
++ {
++ const extern_type* __from_chunk_end;
++ __from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
++ __end
++ - __from));
++ if (!__from_chunk_end)
++ __from_chunk_end = __end;
++
++ const extern_type* __tmp_from = __from;
++ size_t __conv = mbsnrtowcs(__to, &__from,
++ __from_chunk_end - __from,
++ __max, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // mbrtowc.
++ for (__from = __tmp_from;; __from += __conv)
++ {
++ __conv = mbrtowc(NULL, __from, __end - __from,
++ &__tmp_state);
++ if (__conv == static_cast<size_t>(-1)
++ || __conv == static_cast<size_t>(-2))
++ break;
++ }
++ __state = __tmp_state;
++ __ret += __from - __tmp_from;
++ break;
++ }
++ if (!__from)
++ __from = __from_chunk_end;
++
++ __ret += __from - __tmp_from;
++ __max -= __conv;
++
++ if (__from < __end && __max)
++ {
++ // XXX Probably wrong for stateful encodings
++ __tmp_state = __state;
++ ++__from;
++ ++__ret;
++ --__max;
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++#endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc
+@@ -0,0 +1,80 @@
++// std::collate implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.4.1.2 collate virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
++#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
++#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
++#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
++#endif
++
++namespace std
++{
++ // These are basically extensions to char_traits, and perhaps should
++ // be put there instead of here.
++ template<>
++ int
++ collate<char>::_M_compare(const char* __one, const char* __two) const
++ {
++ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++ }
++
++ template<>
++ size_t
++ collate<char>::_M_transform(char* __to, const char* __from,
++ size_t __n) const
++ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ int
++ collate<wchar_t>::_M_compare(const wchar_t* __one,
++ const wchar_t* __two) const
++ {
++ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++ }
++
++ template<>
++ size_t
++ collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
++ size_t __n) const
++ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++#endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+@@ -0,0 +1,300 @@
++// std::ctype implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __wctype_l(S, L) wctype((S))
++#define __towupper_l(C, L) towupper((C))
++#define __towlower_l(C, L) towlower((C))
++#define __iswctype_l(C, M, L) iswctype((C), (M))
++#endif
++
++namespace std
++{
++ // NB: The other ctype<char> specializations are in src/locale.cc and
++ // various /config/os/* files.
++ template<>
++ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
++ : ctype<char>(0, false, __refs)
++ {
++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++ {
++ this->_S_destroy_c_locale(this->_M_c_locale_ctype);
++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
++ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
++ this->_M_table = this->_M_c_locale_ctype->__ctype_b;
++#endif
++ }
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ ctype<wchar_t>::__wmask_type
++ ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
++ {
++ __wmask_type __ret;
++ switch (__m)
++ {
++ case space:
++ __ret = __wctype_l("space", _M_c_locale_ctype);
++ break;
++ case print:
++ __ret = __wctype_l("print", _M_c_locale_ctype);
++ break;
++ case cntrl:
++ __ret = __wctype_l("cntrl", _M_c_locale_ctype);
++ break;
++ case upper:
++ __ret = __wctype_l("upper", _M_c_locale_ctype);
++ break;
++ case lower:
++ __ret = __wctype_l("lower", _M_c_locale_ctype);
++ break;
++ case alpha:
++ __ret = __wctype_l("alpha", _M_c_locale_ctype);
++ break;
++ case digit:
++ __ret = __wctype_l("digit", _M_c_locale_ctype);
++ break;
++ case punct:
++ __ret = __wctype_l("punct", _M_c_locale_ctype);
++ break;
++ case xdigit:
++ __ret = __wctype_l("xdigit", _M_c_locale_ctype);
++ break;
++ case alnum:
++ __ret = __wctype_l("alnum", _M_c_locale_ctype);
++ break;
++ case graph:
++ __ret = __wctype_l("graph", _M_c_locale_ctype);
++ break;
++ default:
++ __ret = __wmask_type();
++ }
++ return __ret;
++ }
++
++ wchar_t
++ ctype<wchar_t>::do_toupper(wchar_t __c) const
++ { return __towupper_l(__c, _M_c_locale_ctype); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ wchar_t
++ ctype<wchar_t>::do_tolower(wchar_t __c) const
++ { return __towlower_l(__c, _M_c_locale_ctype); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ bool
++ ctype<wchar_t>::
++ do_is(mask __m, wchar_t __c) const
++ {
++ // Highest bitmask in ctype_base == 10, but extra in "C"
++ // library for blank.
++ bool __ret = false;
++ const size_t __bitmasksize = 11;
++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++ if (__m & _M_bit[__bitcur]
++ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
++ {
++ __ret = true;
++ break;
++ }
++ return __ret;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
++ {
++ for (; __lo < __hi; ++__vec, ++__lo)
++ {
++ // Highest bitmask in ctype_base == 10, but extra in "C"
++ // library for blank.
++ const size_t __bitmasksize = 11;
++ mask __m = 0;
++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
++ __m |= _M_bit[__bitcur];
++ *__vec = __m;
++ }
++ return __hi;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi && !this->do_is(__m, *__lo))
++ ++__lo;
++ return __lo;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
++ {
++ while (__lo < __hi && this->do_is(__m, *__lo) != 0)
++ ++__lo;
++ return __lo;
++ }
++
++ wchar_t
++ ctype<wchar_t>::
++ do_widen(char __c) const
++ { return _M_widen[static_cast<unsigned char>(__c)]; }
++
++ const char*
++ ctype<wchar_t>::
++ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
++ {
++ while (__lo < __hi)
++ {
++ *__dest = _M_widen[static_cast<unsigned char>(*__lo)];
++ ++__lo;
++ ++__dest;
++ }
++ return __hi;
++ }
++
++ char
++ ctype<wchar_t>::
++ do_narrow(wchar_t __wc, char __dfault) const
++ {
++ if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
++ return _M_narrow[__wc];
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ const int __c = wctob(__wc);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
++ char* __dest) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ if (_M_narrow_ok)
++ while (__lo < __hi)
++ {
++ if (*__lo >= 0 && *__lo < 128)
++ *__dest = _M_narrow[*__lo];
++ else
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++ ++__lo;
++ ++__dest;
++ }
++ else
++ while (__lo < __hi)
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ ++__lo;
++ ++__dest;
++ }
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __hi;
++ }
++
++ void
++ ctype<wchar_t>::_M_initialize_ctype()
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ wint_t __i;
++ for (__i = 0; __i < 128; ++__i)
++ {
++ const int __c = wctob(__i);
++ if (__c == EOF)
++ break;
++ else
++ _M_narrow[__i] = static_cast<char>(__c);
++ }
++ if (__i == 128)
++ _M_narrow_ok = true;
++ else
++ _M_narrow_ok = false;
++ for (size_t __j = 0;
++ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
++ _M_widen[__j] = btowc(__j);
++
++ for (size_t __k = 0; __k <= 11; ++__k)
++ {
++ _M_bit[__k] = static_cast<mask>(_ISbit(__k));
++ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
++ }
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ }
++#endif // _GLIBCXX_USE_WCHAR_T
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc
+@@ -0,0 +1,100 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix gettext stuff
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__dcgettext(const char *domainname,
++ const char *msgid, int category);
++#undef gettext
++#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
++#else
++#undef gettext
++#define gettext(msgid) (msgid)
++#endif
++
++namespace std
++{
++ // Specializations.
++ template<>
++ string
++ messages<char>::do_get(catalog, int, int, const string& __dfault) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_messages);
++ const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
++ __uselocale(__old);
++ return string(__msg);
++#elif defined __UCLIBC_HAS_LOCALE__
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_messages);
++ const char* __msg = gettext(__dfault.c_str());
++ setlocale(LC_ALL, __old);
++ free(__old);
++ return string(__msg);
++#else
++ const char* __msg = gettext(__dfault.c_str());
++ return string(__msg);
++#endif
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ wstring
++ messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
++ {
++# ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_messages);
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ __uselocale(__old);
++ return _M_convert_from_char(__msg);
++# elif defined __UCLIBC_HAS_LOCALE__
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_messages);
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ setlocale(LC_ALL, __old);
++ free(__old);
++ return _M_convert_from_char(__msg);
++# else
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ return _M_convert_from_char(__msg);
++# endif
++ }
++#endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.h
++++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.h
+@@ -0,0 +1,118 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2 messages functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix prototypes for *textdomain funcs
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__textdomain(const char *domainname);
++extern "C" char *__bindtextdomain(const char *domainname,
++ const char *dirname);
++#else
++#undef __textdomain
++#undef __bindtextdomain
++#define __textdomain(D) ((void)0)
++#define __bindtextdomain(D,P) ((void)0)
++#endif
++
++ // Non-virtual member functions.
++ template<typename _CharT>
++ messages<_CharT>::messages(size_t __refs)
++ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
++ _M_name_messages(_S_get_c_name())
++ { }
++
++ template<typename _CharT>
++ messages<_CharT>::messages(__c_locale __cloc, const char* __s,
++ size_t __refs)
++ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
++ _M_name_messages(__s)
++ {
++ char* __tmp = new char[std::strlen(__s) + 1];
++ std::strcpy(__tmp, __s);
++ _M_name_messages = __tmp;
++ }
++
++ template<typename _CharT>
++ typename messages<_CharT>::catalog
++ messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
++ const char* __dir) const
++ {
++ __bindtextdomain(__s.c_str(), __dir);
++ return this->do_open(__s, __loc);
++ }
++
++ // Virtual member functions.
++ template<typename _CharT>
++ messages<_CharT>::~messages()
++ {
++ if (_M_name_messages != _S_get_c_name())
++ delete [] _M_name_messages;
++ _S_destroy_c_locale(_M_c_locale_messages);
++ }
++
++ template<typename _CharT>
++ typename messages<_CharT>::catalog
++ messages<_CharT>::do_open(const basic_string<char>& __s,
++ const locale&) const
++ {
++ // No error checking is done, assume the catalog exists and can
++ // be used.
++ __textdomain(__s.c_str());
++ return 0;
++ }
++
++ template<typename _CharT>
++ void
++ messages<_CharT>::do_close(catalog) const
++ { }
++
++ // messages_byname
++ template<typename _CharT>
++ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
++ : messages<_CharT>(__refs)
++ {
++ if (this->_M_name_messages != locale::facet::_S_get_c_name())
++ delete [] this->_M_name_messages;
++ char* __tmp = new char[std::strlen(__s) + 1];
++ std::strcpy(__tmp, __s);
++ this->_M_name_messages = __tmp;
++
++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++ {
++ this->_S_destroy_c_locale(this->_M_c_locale_messages);
++ this->_S_create_c_locale(this->_M_c_locale_messages, __s);
++ }
++ }
+--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+@@ -0,0 +1,692 @@
++// std::moneypunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning optimize this for uclibc
++#warning tailor for stub locale support
++#endif
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ // Construct and return valid pattern consisting of some combination of:
++ // space none symbol sign value
++ money_base::pattern
++ money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
++ {
++ pattern __ret;
++
++ // This insanely complicated routine attempts to construct a valid
++ // pattern for use with monyepunct. A couple of invariants:
++
++ // if (__precedes) symbol -> value
++ // else value -> symbol
++
++ // if (__space) space
++ // else none
++
++ // none == never first
++ // space never first or last
++
++ // Any elegant implementations of this are welcome.
++ switch (__posn)
++ {
++ case 0:
++ case 1:
++ // 1 The sign precedes the value and symbol.
++ __ret.field[0] = sign;
++ if (__space)
++ {
++ // Pattern starts with sign.
++ if (__precedes)
++ {
++ __ret.field[1] = symbol;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[1] = value;
++ __ret.field[3] = symbol;
++ }
++ __ret.field[2] = space;
++ }
++ else
++ {
++ // Pattern starts with sign and ends with none.
++ if (__precedes)
++ {
++ __ret.field[1] = symbol;
++ __ret.field[2] = value;
++ }
++ else
++ {
++ __ret.field[1] = value;
++ __ret.field[2] = symbol;
++ }
++ __ret.field[3] = none;
++ }
++ break;
++ case 2:
++ // 2 The sign follows the value and symbol.
++ if (__space)
++ {
++ // Pattern either ends with sign.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[2] = value;
++ }
++ else
++ {
++ __ret.field[0] = value;
++ __ret.field[2] = symbol;
++ }
++ __ret.field[1] = space;
++ __ret.field[3] = sign;
++ }
++ else
++ {
++ // Pattern ends with sign then none.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[1] = value;
++ }
++ else
++ {
++ __ret.field[0] = value;
++ __ret.field[1] = symbol;
++ }
++ __ret.field[2] = sign;
++ __ret.field[3] = none;
++ }
++ break;
++ case 3:
++ // 3 The sign immediately precedes the symbol.
++ if (__precedes)
++ {
++ __ret.field[0] = sign;
++ __ret.field[1] = symbol;
++ if (__space)
++ {
++ __ret.field[2] = space;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[2] = value;
++ __ret.field[3] = none;
++ }
++ }
++ else
++ {
++ __ret.field[0] = value;
++ if (__space)
++ {
++ __ret.field[1] = space;
++ __ret.field[2] = sign;
++ __ret.field[3] = symbol;
++ }
++ else
++ {
++ __ret.field[1] = sign;
++ __ret.field[2] = symbol;
++ __ret.field[3] = none;
++ }
++ }
++ break;
++ case 4:
++ // 4 The sign immediately follows the symbol.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[1] = sign;
++ if (__space)
++ {
++ __ret.field[2] = space;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[2] = value;
++ __ret.field[3] = none;
++ }
++ }
++ else
++ {
++ __ret.field[0] = value;
++ if (__space)
++ {
++ __ret.field[1] = space;
++ __ret.field[2] = symbol;
++ __ret.field[3] = sign;
++ }
++ else
++ {
++ __ret.field[1] = symbol;
++ __ret.field[2] = sign;
++ __ret.field[3] = none;
++ }
++ }
++ break;
++ default:
++ ;
++ }
++ return __ret;
++ }
++
++ template<>
++ void
++ moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc,
++ const char*)
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<char, true>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = "";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = "";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = "";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++ __cloc));
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++ if (!__nposn)
++ _M_data->_M_negative_sign = "()";
++ else
++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++ __cloc);
++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++ // _Intl == true
++ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++ __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++ }
++ }
++
++ template<>
++ void
++ moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc,
++ const char*)
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<char, false>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = "";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = "";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = "";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++ __cloc));
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++ if (!__nposn)
++ _M_data->_M_negative_sign = "()";
++ else
++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++ __cloc);
++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++ // _Intl == false
++ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++ }
++ }
++
++ template<>
++ moneypunct<char, true>::~moneypunct()
++ { delete _M_data; }
++
++ template<>
++ moneypunct<char, false>::~moneypunct()
++ { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const char*)
++#else
++ const char* __name)
++#endif
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<wchar_t, true>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] =
++ static_cast<wchar_t>(money_base::_S_atoms[__i]);
++ }
++ else
++ {
++ // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(__cloc);
++#else
++ // Switch to named locale so that mbsrtowcs will work.
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++#endif
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++
++ wchar_t* __wcs_ps = 0;
++ wchar_t* __wcs_ns = 0;
++ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++ try
++ {
++ mbstate_t __state;
++ size_t __len = strlen(__cpossign);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ps = new wchar_t[__len];
++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++ _M_data->_M_positive_sign = __wcs_ps;
++ }
++ else
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++ __len = strlen(__cnegsign);
++ if (!__nposn)
++ _M_data->_M_negative_sign = L"()";
++ else if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ns = new wchar_t[__len];
++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++ _M_data->_M_negative_sign = __wcs_ns;
++ }
++ else
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++ // _Intl == true.
++ __len = strlen(__ccurr);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ wchar_t* __wcs = new wchar_t[__len];
++ mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++ _M_data->_M_curr_symbol = __wcs;
++ }
++ else
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++ }
++ catch (...)
++ {
++ delete _M_data;
++ _M_data = 0;
++ delete __wcs_ps;
++ delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ __throw_exception_again;
++ }
++
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++ __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ }
++ }
++
++ template<>
++ void
++ moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const char*)
++#else
++ const char* __name)
++#endif
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<wchar_t, false>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] =
++ static_cast<wchar_t>(money_base::_S_atoms[__i]);
++ }
++ else
++ {
++ // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(__cloc);
++#else
++ // Switch to named locale so that mbsrtowcs will work.
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++#endif
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++
++ wchar_t* __wcs_ps = 0;
++ wchar_t* __wcs_ns = 0;
++ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++ try
++ {
++ mbstate_t __state;
++ size_t __len;
++ __len = strlen(__cpossign);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ps = new wchar_t[__len];
++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++ _M_data->_M_positive_sign = __wcs_ps;
++ }
++ else
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++ __len = strlen(__cnegsign);
++ if (!__nposn)
++ _M_data->_M_negative_sign = L"()";
++ else if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ns = new wchar_t[__len];
++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++ _M_data->_M_negative_sign = __wcs_ns;
++ }
++ else
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++ // _Intl == true.
++ __len = strlen(__ccurr);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ wchar_t* __wcs = new wchar_t[__len];
++ mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++ _M_data->_M_curr_symbol = __wcs;
++ }
++ else
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++ }
++ catch (...)
++ {
++ delete _M_data;
++ _M_data = 0;
++ delete __wcs_ps;
++ delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ __throw_exception_again;
++ }
++
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ }
++ }
++
++ template<>
++ moneypunct<wchar_t, true>::~moneypunct()
++ {
++ if (_M_data->_M_positive_sign_size)
++ delete [] _M_data->_M_positive_sign;
++ if (_M_data->_M_negative_sign_size
++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++ delete [] _M_data->_M_negative_sign;
++ if (_M_data->_M_curr_symbol_size)
++ delete [] _M_data->_M_curr_symbol;
++ delete _M_data;
++ }
++
++ template<>
++ moneypunct<wchar_t, false>::~moneypunct()
++ {
++ if (_M_data->_M_positive_sign_size)
++ delete [] _M_data->_M_positive_sign;
++ if (_M_data->_M_negative_sign_size
++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++ delete [] _M_data->_M_negative_sign;
++ if (_M_data->_M_curr_symbol_size)
++ delete [] _M_data->_M_curr_symbol;
++ delete _M_data;
++ }
++#endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+@@ -0,0 +1,160 @@
++// std::numpunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ template<>
++ void
++ numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __numpunct_cache<char>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_use_grouping = false;
++
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++
++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
++
++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
++ __cloc));
++
++ // Check for NULL, which implies no grouping.
++ if (_M_data->_M_thousands_sep == '\0')
++ _M_data->_M_grouping = "";
++ else
++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ }
++
++ // NB: There is no way to extact this info from posix locales.
++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++ _M_data->_M_truename = "true";
++ _M_data->_M_truename_size = 4;
++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++ _M_data->_M_falsename = "false";
++ _M_data->_M_falsename_size = 5;
++ }
++
++ template<>
++ numpunct<char>::~numpunct()
++ { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __numpunct_cache<wchar_t>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_use_grouping = false;
++
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++ _M_data->_M_atoms_out[__i] =
++ static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
++
++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++ _M_data->_M_atoms_in[__j] =
++ static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
++ }
++ else
++ {
++ // Named locale.
++ // NB: In the GNU model wchar_t is always 32 bit wide.
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++
++ if (_M_data->_M_thousands_sep == L'\0')
++ _M_data->_M_grouping = "";
++ else
++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ }
++
++ // NB: There is no way to extact this info from posix locales.
++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++ _M_data->_M_truename = L"true";
++ _M_data->_M_truename_size = 4;
++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++ _M_data->_M_falsename = L"false";
++ _M_data->_M_falsename_size = 5;
++ }
++
++ template<>
++ numpunct<wchar_t>::~numpunct()
++ { delete _M_data; }
++ #endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/time_members.cc
++++ gcc/libstdc++-v3/config/locale/uclibc/time_members.cc
+@@ -0,0 +1,406 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ template<>
++ void
++ __timepunct<char>::
++ _M_put(char* __s, size_t __maxlen, const char* __format,
++ const tm* __tm) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
++ _M_c_locale_timepunct);
++#else
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_timepunct);
++ const size_t __len = strftime(__s, __maxlen, __format, __tm);
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ // Make sure __s is null terminated.
++ if (__len == 0)
++ __s[0] = '\0';
++ }
++
++ template<>
++ void
++ __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __timepunct_cache<char>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_c_locale_timepunct = _S_get_c_locale();
++
++ _M_data->_M_date_format = "%m/%d/%y";
++ _M_data->_M_date_era_format = "%m/%d/%y";
++ _M_data->_M_time_format = "%H:%M:%S";
++ _M_data->_M_time_era_format = "%H:%M:%S";
++ _M_data->_M_date_time_format = "";
++ _M_data->_M_date_time_era_format = "";
++ _M_data->_M_am = "AM";
++ _M_data->_M_pm = "PM";
++ _M_data->_M_am_pm_format = "";
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = "Sunday";
++ _M_data->_M_day2 = "Monday";
++ _M_data->_M_day3 = "Tuesday";
++ _M_data->_M_day4 = "Wednesday";
++ _M_data->_M_day5 = "Thursday";
++ _M_data->_M_day6 = "Friday";
++ _M_data->_M_day7 = "Saturday";
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = "Sun";
++ _M_data->_M_aday2 = "Mon";
++ _M_data->_M_aday3 = "Tue";
++ _M_data->_M_aday4 = "Wed";
++ _M_data->_M_aday5 = "Thu";
++ _M_data->_M_aday6 = "Fri";
++ _M_data->_M_aday7 = "Sat";
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = "January";
++ _M_data->_M_month02 = "February";
++ _M_data->_M_month03 = "March";
++ _M_data->_M_month04 = "April";
++ _M_data->_M_month05 = "May";
++ _M_data->_M_month06 = "June";
++ _M_data->_M_month07 = "July";
++ _M_data->_M_month08 = "August";
++ _M_data->_M_month09 = "September";
++ _M_data->_M_month10 = "October";
++ _M_data->_M_month11 = "November";
++ _M_data->_M_month12 = "December";
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = "Jan";
++ _M_data->_M_amonth02 = "Feb";
++ _M_data->_M_amonth03 = "Mar";
++ _M_data->_M_amonth04 = "Apr";
++ _M_data->_M_amonth05 = "May";
++ _M_data->_M_amonth06 = "Jun";
++ _M_data->_M_amonth07 = "Jul";
++ _M_data->_M_amonth08 = "Aug";
++ _M_data->_M_amonth09 = "Sep";
++ _M_data->_M_amonth10 = "Oct";
++ _M_data->_M_amonth11 = "Nov";
++ _M_data->_M_amonth12 = "Dec";
++ }
++ else
++ {
++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
++ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
++ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
++ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
++ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
++ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
++ __cloc);
++ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
++ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
++ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
++ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
++ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
++ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
++ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
++ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
++ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
++ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
++ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
++ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
++ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
++ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
++ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
++ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
++ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
++ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
++ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
++ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
++ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
++ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
++ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
++ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
++ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
++ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
++ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
++ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
++ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
++ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
++ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
++ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
++ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
++ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
++ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
++ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
++ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
++ }
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ __timepunct<wchar_t>::
++ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
++ const tm* __tm) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
++ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
++ _M_c_locale_timepunct);
++#else
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_timepunct);
++ const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ // Make sure __s is null terminated.
++ if (__len == 0)
++ __s[0] = L'\0';
++ }
++
++ template<>
++ void
++ __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __timepunct_cache<wchar_t>;
++
++#warning wide time stuff
++// if (!__cloc)
++ {
++ // "C" locale
++ _M_c_locale_timepunct = _S_get_c_locale();
++
++ _M_data->_M_date_format = L"%m/%d/%y";
++ _M_data->_M_date_era_format = L"%m/%d/%y";
++ _M_data->_M_time_format = L"%H:%M:%S";
++ _M_data->_M_time_era_format = L"%H:%M:%S";
++ _M_data->_M_date_time_format = L"";
++ _M_data->_M_date_time_era_format = L"";
++ _M_data->_M_am = L"AM";
++ _M_data->_M_pm = L"PM";
++ _M_data->_M_am_pm_format = L"";
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = L"Sunday";
++ _M_data->_M_day2 = L"Monday";
++ _M_data->_M_day3 = L"Tuesday";
++ _M_data->_M_day4 = L"Wednesday";
++ _M_data->_M_day5 = L"Thursday";
++ _M_data->_M_day6 = L"Friday";
++ _M_data->_M_day7 = L"Saturday";
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = L"Sun";
++ _M_data->_M_aday2 = L"Mon";
++ _M_data->_M_aday3 = L"Tue";
++ _M_data->_M_aday4 = L"Wed";
++ _M_data->_M_aday5 = L"Thu";
++ _M_data->_M_aday6 = L"Fri";
++ _M_data->_M_aday7 = L"Sat";
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = L"January";
++ _M_data->_M_month02 = L"February";
++ _M_data->_M_month03 = L"March";
++ _M_data->_M_month04 = L"April";
++ _M_data->_M_month05 = L"May";
++ _M_data->_M_month06 = L"June";
++ _M_data->_M_month07 = L"July";
++ _M_data->_M_month08 = L"August";
++ _M_data->_M_month09 = L"September";
++ _M_data->_M_month10 = L"October";
++ _M_data->_M_month11 = L"November";
++ _M_data->_M_month12 = L"December";
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = L"Jan";
++ _M_data->_M_amonth02 = L"Feb";
++ _M_data->_M_amonth03 = L"Mar";
++ _M_data->_M_amonth04 = L"Apr";
++ _M_data->_M_amonth05 = L"May";
++ _M_data->_M_amonth06 = L"Jun";
++ _M_data->_M_amonth07 = L"Jul";
++ _M_data->_M_amonth08 = L"Aug";
++ _M_data->_M_amonth09 = L"Sep";
++ _M_data->_M_amonth10 = L"Oct";
++ _M_data->_M_amonth11 = L"Nov";
++ _M_data->_M_amonth12 = L"Dec";
++ }
++#if 0
++ else
++ {
++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++ union { char *__s; wchar_t *__w; } __u;
++
++ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
++ _M_data->_M_date_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
++ _M_data->_M_date_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
++ _M_data->_M_time_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
++ _M_data->_M_time_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
++ _M_data->_M_date_time_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
++ _M_data->_M_date_time_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
++ _M_data->_M_am = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
++ _M_data->_M_pm = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
++ _M_data->_M_am_pm_format = __u.__w;
++
++ // Day names, starting with "C"'s Sunday.
++ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
++ _M_data->_M_day1 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
++ _M_data->_M_day2 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
++ _M_data->_M_day3 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
++ _M_data->_M_day4 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
++ _M_data->_M_day5 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
++ _M_data->_M_day6 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
++ _M_data->_M_day7 = __u.__w;
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
++ _M_data->_M_aday1 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
++ _M_data->_M_aday2 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
++ _M_data->_M_aday3 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
++ _M_data->_M_aday4 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
++ _M_data->_M_aday5 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
++ _M_data->_M_aday6 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
++ _M_data->_M_aday7 = __u.__w;
++
++ // Month names, starting with "C"'s January.
++ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
++ _M_data->_M_month01 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
++ _M_data->_M_month02 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
++ _M_data->_M_month03 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
++ _M_data->_M_month04 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
++ _M_data->_M_month05 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
++ _M_data->_M_month06 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
++ _M_data->_M_month07 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
++ _M_data->_M_month08 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
++ _M_data->_M_month09 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
++ _M_data->_M_month10 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
++ _M_data->_M_month11 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
++ _M_data->_M_month12 = __u.__w;
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
++ _M_data->_M_amonth01 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
++ _M_data->_M_amonth02 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
++ _M_data->_M_amonth03 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
++ _M_data->_M_amonth04 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
++ _M_data->_M_amonth05 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
++ _M_data->_M_amonth06 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
++ _M_data->_M_amonth07 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
++ _M_data->_M_amonth08 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
++ _M_data->_M_amonth09 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
++ _M_data->_M_amonth10 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
++ _M_data->_M_amonth11 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
++ _M_data->_M_amonth12 = __u.__w;
++ }
++#endif // 0
++ }
++#endif
++}
+--- gcc/libstdc++-v3/config/locale/uclibc/time_members.h
++++ gcc/libstdc++-v3/config/locale/uclibc/time_members.h
+@@ -0,0 +1,68 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(size_t __refs)
++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(_S_get_c_name())
++ { _M_initialize_timepunct(); }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
++ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(_S_get_c_name())
++ { _M_initialize_timepunct(); }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
++ size_t __refs)
++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(__s)
++ {
++ char* __tmp = new char[std::strlen(__s) + 1];
++ std::strcpy(__tmp, __s);
++ _M_name_timepunct = __tmp;
++ _M_initialize_timepunct(__cloc);
++ }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::~__timepunct()
++ {
++ if (_M_name_timepunct != _S_get_c_name())
++ delete [] _M_name_timepunct;
++ delete _M_data;
++ _S_destroy_c_locale(_M_c_locale_timepunct);
++ }
+--- gcc/libstdc++-v3/configure
++++ gcc/libstdc++-v3/configure
+@@ -5764,7 +5764,7 @@
+ enableval="$enable_clocale"
+
+ case "$enableval" in
+- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
++ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
+ *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
+ echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
+ { (exit 1); exit 1; }; } ;;
+@@ -5789,6 +5789,9 @@
+ # Default to "generic".
+ if test $enable_clocale_flag = auto; then
+ case ${target_os} in
++ linux-uclibc*)
++ enable_clocale_flag=uclibc
++ ;;
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -6019,6 +6022,76 @@
+ CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+ ;;
++ uclibc)
++ echo "$as_me:$LINENO: result: uclibc" >&5
++echo "${ECHO_T}uclibc" >&6
++
++ # Declare intention to use gettext, and add support for specific
++ # languages.
++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++ ALL_LINGUAS="de fr"
++
++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++ # Extract the first word of "msgfmt", so it can be a program name with args.
++set dummy msgfmt; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_check_msgfmt+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$check_msgfmt"; then
++ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_check_msgfmt="yes"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
++fi
++fi
++check_msgfmt=$ac_cv_prog_check_msgfmt
++if test -n "$check_msgfmt"; then
++ echo "$as_me:$LINENO: result: $check_msgfmt" >&5
++echo "${ECHO_T}$check_msgfmt" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++ USE_NLS=yes
++ fi
++ # Export the build objects.
++ for ling in $ALL_LINGUAS; do \
++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++ done
++
++
++
++ CLOCALE_H=config/locale/uclibc/c_locale.h
++ CLOCALE_CC=config/locale/uclibc/c_locale.cc
++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++ CMESSAGES_H=config/locale/uclibc/messages_members.h
++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++ CMONEY_CC=config/locale/uclibc/monetary_members.cc
++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++ CTIME_H=config/locale/uclibc/time_members.h
++ CTIME_CC=config/locale/uclibc/time_members.cc
++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++ ;;
+ esac
+
+ # This is where the testsuite looks for locale catalogs, using the
+--- gcc/libstdc++-v3/include/c_compatibility/wchar.h
++++ gcc/libstdc++-v3/include/c_compatibility/wchar.h
+@@ -101,7 +101,9 @@
+ using std::wmemcpy;
+ using std::wmemmove;
+ using std::wmemset;
++#if _GLIBCXX_HAVE_WCSFTIME
+ using std::wcsftime;
++#endif
+
+ #if _GLIBCXX_USE_C99
+ using std::wcstold;
+--- gcc/libstdc++-v3/include/c_std/std_cwchar.h
++++ gcc/libstdc++-v3/include/c_std/std_cwchar.h
+@@ -182,7 +182,9 @@
+ using ::wcscoll;
+ using ::wcscpy;
+ using ::wcscspn;
++#if _GLIBCXX_HAVE_WCSFTIME
+ using ::wcsftime;
++#endif
+ using ::wcslen;
+ using ::wcsncat;
+ using ::wcsncmp;
diff --git a/packages/gcc/gcc-4.2.0/300-libstdc++-pic.patch b/packages/gcc/gcc-4.2.0/300-libstdc++-pic.patch
new file mode 100644
index 0000000000..89d03a85e5
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/300-libstdc++-pic.patch
@@ -0,0 +1,46 @@
+# DP: Build and install libstdc++_pic.a library.
+
+--- gcc-4.1.0/libstdc++-v3/src/Makefile.am 2004-11-15 17:33:05.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.am 2005-04-25 20:05:59.186930896 -0500
+@@ -214,6 +214,10 @@
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
+
+
++install-exec-local:
++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Added bits to build debug library.
+ if GLIBCXX_BUILD_DEBUG
+ all-local: build_debug
+--- gcc-4.1.0/libstdc++-v3/src/Makefile.in 2005-04-11 19:13:08.000000000 -0500
++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.in 2005-04-25 20:12:33.284316275 -0500
+@@ -627,7 +627,7 @@
+
+ install-data-am: install-data-local
+
+-install-exec-am: install-toolexeclibLTLIBRARIES
++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
+
+ install-info: install-info-am
+
+@@ -660,6 +660,7 @@
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
++ install-exec-local \
+ install-exec-am install-info install-info-am install-man \
+ install-strip install-toolexeclibLTLIBRARIES installcheck \
+ installcheck-am installdirs maintainer-clean \
+@@ -745,6 +746,11 @@
+ install_debug:
+ (cd ${debugdir} && $(MAKE) \
+ toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
++
++install-exec-local:
++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/packages/gcc/gcc-4.2.0/301-missing-execinfo_h.patch b/packages/gcc/gcc-4.2.0/301-missing-execinfo_h.patch
new file mode 100644
index 0000000000..0e2092f3fb
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/301-missing-execinfo_h.patch
@@ -0,0 +1,11 @@
+--- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500
++++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500
+@@ -500,7 +500,7 @@
+ #ifdef __linux__
+ # include <features.h>
+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
+- && !defined(__ia64__)
++ && !defined(__ia64__) && !defined(__UCLIBC__)
+ # ifndef GC_HAVE_BUILTIN_BACKTRACE
+ # define GC_HAVE_BUILTIN_BACKTRACE
+ # endif
diff --git a/packages/gcc/gcc-4.2.0/302-c99-snprintf.patch b/packages/gcc/gcc-4.2.0/302-c99-snprintf.patch
new file mode 100644
index 0000000000..dfb22d681b
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/302-c99-snprintf.patch
@@ -0,0 +1,11 @@
+--- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig 2005-04-29 00:08:41.000000000 -0500
++++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h 2005-04-29 00:08:45.000000000 -0500
+@@ -142,7 +142,7 @@
+ using ::vsprintf;
+ }
+
+-#if _GLIBCXX_USE_C99
++#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
+
+ #undef snprintf
+ #undef vfscanf
diff --git a/packages/gcc/gcc-4.2.0/303-c99-complex-ugly-hack.patch b/packages/gcc/gcc-4.2.0/303-c99-complex-ugly-hack.patch
new file mode 100644
index 0000000000..2ccc80d9bb
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/303-c99-complex-ugly-hack.patch
@@ -0,0 +1,12 @@
+--- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500
++++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500
+@@ -7194,6 +7194,9 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <complex.h>
++#ifdef __UCLIBC__
++#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
++#endif
+ int
+ main ()
+ {
diff --git a/packages/gcc/gcc-4.2.0/304-index_macro.patch b/packages/gcc/gcc-4.2.0/304-index_macro.patch
new file mode 100644
index 0000000000..d8e476555d
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/304-index_macro.patch
@@ -0,0 +1,24 @@
+--- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100
++++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100
+@@ -59,6 +59,9 @@
+ #include <bits/allocator.h>
+ #include <ext/hash_fun.h>
+
++/* cope w/ index defined as macro, SuSv3 proposal */
++#undef index
++
+ # ifdef __GC
+ # define __GC_CONST const
+ # else
+--- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100
++++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100
+@@ -53,6 +53,9 @@
+ #include <ext/memory> // For uninitialized_copy_n
+ #include <ext/numeric> // For power
+
++/* cope w/ index defined as macro, SuSv3 proposal */
++#undef index
++
+ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
+
+ using std::size_t;
diff --git a/packages/gcc/gcc-4.2.0/602-sdk-libstdc++-includes.patch b/packages/gcc/gcc-4.2.0/602-sdk-libstdc++-includes.patch
new file mode 100644
index 0000000000..23fce7544d
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/602-sdk-libstdc++-includes.patch
@@ -0,0 +1,20 @@
+--- gcc-4.1.0/libstdc++-v3/fragment.am 2005-03-21 11:40:14.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/fragment.am 2005-04-25 20:14:39.856251785 -0500
+@@ -21,5 +21,5 @@
+ $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+ # -I/-D flags to pass when compiling.
+-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
+
+--- gcc-4.1.0/libstdc++-v3/libmath/Makefile.am 2005-03-21 11:40:18.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/libmath/Makefile.am 2005-04-25 20:14:39.682280735 -0500
+@@ -35,7 +35,7 @@
+
+ libmath_la_SOURCES = stubs.c
+
+-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
++AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
+
+ # Only compiling "C" sources in this directory.
+ LIBTOOL = @LIBTOOL@ --tag CC
diff --git a/packages/gcc/gcc-4.2.0/740-sh-pr24836.patch b/packages/gcc/gcc-4.2.0/740-sh-pr24836.patch
new file mode 100644
index 0000000000..7992282cff
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/740-sh-pr24836.patch
@@ -0,0 +1,25 @@
+http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
+
+--- gcc/gcc/configure.ac (revision 106699)
++++ gcc/gcc/configure.ac (working copy)
+@@ -2446,7 +2446,7 @@
+ tls_first_minor=14
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
+ ;;
+- sh-*-* | sh[34]-*-*)
++ sh-*-* | sh[34]*-*-*)
+ conftest_s='
+ .section ".tdata","awT",@progbits
+ foo: .long 25
+--- gcc/gcc/configure
++++ gcc/gcc/configure
+@@ -14846,7 +14846,7 @@
+ tls_first_minor=14
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
+ ;;
+- sh-*-* | sh[34]-*-*)
++ sh-*-* | sh[34]*-*-*)
+ conftest_s='
+ .section ".tdata","awT",@progbits
+ foo: .long 25
diff --git a/packages/gcc/gcc-4.2.0/800-arm-bigendian.patch b/packages/gcc/gcc-4.2.0/800-arm-bigendian.patch
new file mode 100644
index 0000000000..07c6093379
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/800-arm-bigendian.patch
@@ -0,0 +1,67 @@
+By Lennert Buytenhek <buytenh@wantstofly.org>
+Adds support for arm*b-linux* big-endian ARM targets
+
+See http://gcc.gnu.org/PR16350
+
+--- gcc-4.2.0/gcc/config/arm/linux-elf.h
++++ gcc-4.2.0/gcc/config/arm/linux-elf.h
+@@ -28,19 +28,33 @@
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
++#define TARGET_ENDIAN_OPTION "mbig-endian"
++#define TARGET_LINKER_EMULATION "armelfb_linux"
++#else
++#define TARGET_ENDIAN_DEFAULT 0
++#define TARGET_ENDIAN_OPTION "mlittle-endian"
++#define TARGET_LINKER_EMULATION "armelf_linux"
++#endif
++
+ #undef TARGET_DEFAULT_FLOAT_ABI
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
+
+ #undef TARGET_DEFAULT
+-#define TARGET_DEFAULT (0)
++#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
+
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
+
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
+
+ #undef MULTILIB_DEFAULTS
+ #define MULTILIB_DEFAULTS \
+- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
++ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
+
+ /* Now we define the strings used to build the spec file. */
+ #undef LIB_SPEC
+@@ -61,7 +75,7 @@
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \
+ -X \
+- %{mbig-endian:-EB}" \
++ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+ SUBTARGET_EXTRA_LINK_SPEC
+
+ #undef LINK_SPEC
+--- gcc-4.2.0/gcc/config.gcc.orig 2006-09-22 14:53:41.000000000 +0200
++++ gcc-4.2.0/gcc/config.gcc 2006-09-25 10:45:21.000000000 +0200
+@@ -696,6 +696,11 @@
+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+ tmake_file="${tmake_file} t-linux arm/t-arm"
+ case ${target} in
++ arm*b-*)
++ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
++ ;;
++ esac
++ case ${target} in
+ arm*-*-linux-*eabi)
+ tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
diff --git a/packages/gcc/gcc-4.2.0/801-arm-bigendian-eabi.patch b/packages/gcc/gcc-4.2.0/801-arm-bigendian-eabi.patch
new file mode 100644
index 0000000000..54490fc24f
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/801-arm-bigendian-eabi.patch
@@ -0,0 +1,14 @@
+Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h 2007-02-20 14:51:33.416193250 +0100
++++ gcc-4.1.1/gcc/config/arm/linux-eabi.h 2007-02-20 14:52:11.622581000 +0100
+@@ -48,7 +48,8 @@
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
++#define SUBTARGET_EXTRA_LINK_SPEC \
++ " %{mbig-endian:-m armelfb_linux_eabi} %{mlittle-endian:-m armelf_linux_eabi} "
+
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
diff --git a/packages/gcc/gcc-4.2.0/README b/packages/gcc/gcc-4.2.0/README
new file mode 100644
index 0000000000..b85840dc20
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/README
@@ -0,0 +1,4 @@
+The numbered patches come from
+http://www.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/toolchain/gcc/4.1.1/
+Other patches are locally added to fix things (mostly inherited and reapplied
+from gcc 3.4.4 where applicable)
diff --git a/packages/gcc/gcc-4.2-20060513/arm-nolibfloat.patch b/packages/gcc/gcc-4.2.0/arm-nolibfloat.patch
index c4897c0330..c4897c0330 100644
--- a/packages/gcc/gcc-4.2-20060513/arm-nolibfloat.patch
+++ b/packages/gcc/gcc-4.2.0/arm-nolibfloat.patch
diff --git a/packages/gcc/gcc-4.2-20060513/arm-softfloat.patch b/packages/gcc/gcc-4.2.0/arm-softfloat.patch
index c86c83ed15..c86c83ed15 100644
--- a/packages/gcc/gcc-4.2-20060513/arm-softfloat.patch
+++ b/packages/gcc/gcc-4.2.0/arm-softfloat.patch
diff --git a/packages/gcc/gcc-4.2.0/arm-thumb-cache.patch b/packages/gcc/gcc-4.2.0/arm-thumb-cache.patch
new file mode 100644
index 0000000000..fa63846c8c
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/arm-thumb-cache.patch
@@ -0,0 +1,29 @@
+--- gcc-4.1.1/gcc/config/arm/linux-gas.h- 2005-06-25 03:22:41.000000000 +0200
++++ gcc-4.1.1/gcc/config/arm/linux-gas.h 2006-06-18 10:23:46.000000000 +0200
+@@ -44,6 +44,7 @@
+
+ /* Clear the instruction cache from `beg' to `end'. This makes an
+ inline system call to SYS_cacheflush. */
++#if !defined(__thumb__)
+ #define CLEAR_INSN_CACHE(BEG, END) \
+ { \
+ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+@@ -53,3 +54,18 @@
+ : "=r" (_beg) \
+ : "0" (_beg), "r" (_end), "r" (_flg)); \
+ }
++#else
++#define CLEAR_INSN_CACHE(BEG, END) \
++{ \
++ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
++ register unsigned long _end __asm ("a2") = (unsigned long) (END); \
++ register unsigned long _flg __asm ("a3") = 0; \
++ register unsigned long _swi __asm ("a4") = 0xf0002; \
++ __asm __volatile ("push {r7}\n" \
++ " mov r7,a4\n" \
++ " swi 0 @ sys_cacheflush\n" \
++ " pop {r7}\n" \
++ : "=r" (_beg) \
++ : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi)); \
++}
++#endif
diff --git a/packages/gcc/gcc-4.2.0/arm-thumb.patch b/packages/gcc/gcc-4.2.0/arm-thumb.patch
new file mode 100644
index 0000000000..69e2f68cf2
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/arm-thumb.patch
@@ -0,0 +1,64 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gcc-4.1.1/gcc/config/arm/lib1funcs.asm~gcc
++++ gcc-4.1.1/gcc/config/arm/lib1funcs.asm
+@@ -995,10 +995,24 @@
+ .code 32
+ FUNC_START div0
+
++#if ! defined __thumb__
+ stmfd sp!, {r1, lr}
+ mov r0, #SIGFPE
+ bl SYM(raise) __PLT__
+ RETLDM r1
++#else
++ push {r1, lr}
++ mov r0, #SIGFPE
++ bl SYM(raise) __PLT__
++#if __ARM_ARCH__ > 4
++ pop {r1, pc}
++#else
++ @ on 4T that won't work
++ pop {r1}
++ pop {r3}
++ bx r3
++#endif
++#endif
+
+ FUNC_END div0
+
+@@ -1141,11 +1155,12 @@
+ code here switches to the correct mode before executing the function. */
+
+ .text
+- .align 0
++ .align 1
+ .force_thumb
+
+ .macro call_via register
+ THUMB_FUNC_START _call_via_\register
++ .hidden SYM (_call_via_\register)
+
+ bx \register
+ nop
+@@ -1242,6 +1257,7 @@
+ .code 16
+
+ THUMB_FUNC_START _interwork_call_via_\register
++ .hidden SYM (_interwork_call_via_\register)
+
+ bx pc
+ nop
+--- gcc-4.1.1/gcc/config/arm/t-linux~gcc
++++ gcc-4.1.1/gcc/config/arm/t-linux
+@@ -7,6 +7,7 @@
+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
++ _call_via_rX \
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf
+
+ # MULTILIB_OPTIONS = mhard-float/msoft-float
diff --git a/packages/gcc/gcc-4.2.0/cache-amnesia.patch b/packages/gcc/gcc-4.2.0/cache-amnesia.patch
new file mode 100644
index 0000000000..ef7cd111c5
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/cache-amnesia.patch
@@ -0,0 +1,13 @@
+diff --git a/gcc/configure b/gcc/configure
+index 44620ab..6e1830c 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12272,7 +12272,7 @@ else
+ esac
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+- ${realsrcdir}/configure \
++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
+ CFLAGS="${saved_CFLAGS}"
diff --git a/packages/gcc/gcc-4.2.0/fix-ICE-in-arm_unwind_emit_set.diff b/packages/gcc/gcc-4.2.0/fix-ICE-in-arm_unwind_emit_set.diff
new file mode 100644
index 0000000000..568e15abff
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/fix-ICE-in-arm_unwind_emit_set.diff
@@ -0,0 +1,18 @@
+--- trunk/gcc/config/arm/arm.c 2006/09/19 13:18:27 117055
++++ trunk/gcc/config/arm/arm.c 2006/09/19 13:19:24 117056
+@@ -15415,6 +15415,15 @@
+ /* Move from sp to reg. */
+ asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0));
+ }
++ else if (GET_CODE (e1) == PLUS
++ && GET_CODE (XEXP (e1, 0)) == REG
++ && REGNO (XEXP (e1, 0)) == SP_REGNUM
++ && GET_CODE (XEXP (e1, 1)) == CONST_INT)
++ {
++ /* Set reg to offset from sp. */
++ asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n",
++ REGNO (e0), (int)INTVAL(XEXP (e1, 1)));
++ }
+ else
+ abort ();
+ break;
diff --git a/packages/gcc/gcc-4.2.0/gcc41-configure.in.patch b/packages/gcc/gcc-4.2.0/gcc41-configure.in.patch
new file mode 100644
index 0000000000..3d33bcb978
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/gcc41-configure.in.patch
@@ -0,0 +1,22 @@
+--- gcc-3.4.4/configure.in.orig 2005-08-09 19:57:51.504323183 -0700
++++ gcc-3.4.4/configure.in 2005-08-09 20:00:12.073168623 -0700
+@@ -1907,7 +1907,7 @@
+ *) gxx_include_dir=${with_gxx_include_dir} ;;
+ esac
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+--- gcc-3.4.4/configure.orig 2005-08-09 21:02:29.668360660 -0700
++++ gcc-3.4.4/configure 2005-08-09 21:02:50.157649970 -0700
+@@ -2669,7 +2669,7 @@
+ *) gxx_include_dir=${with_gxx_include_dir} ;;
+ esac
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
diff --git a/packages/gcc/gcc-4.2-20060513/ldflags.patch b/packages/gcc/gcc-4.2.0/ldflags.patch
index 9576f60778..9576f60778 100644
--- a/packages/gcc/gcc-4.2-20060513/ldflags.patch
+++ b/packages/gcc/gcc-4.2.0/ldflags.patch
diff --git a/packages/gcc/gcc-4.2.0/sdk-libstdc++-includes.patch b/packages/gcc/gcc-4.2.0/sdk-libstdc++-includes.patch
new file mode 100644
index 0000000000..4377c2143b
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/sdk-libstdc++-includes.patch
@@ -0,0 +1,22 @@
+--- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~ 2003-08-27 22:29:42.000000000 +0100
++++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am 2004-07-22 16:41:45.152130128 +0100
+@@ -32,7 +32,7 @@
+
+ libmath_la_SOURCES = stubs.c
+
+-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
++AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
+
+ # Only compiling "C" sources in this directory.
+ LIBTOOL = @LIBTOOL@ --tag CC
+--- gcc-3.4.1/libstdc++-v3/fragment.am.old 2004-07-22 18:24:58.024083656 +0100
++++ gcc-3.4.1/libstdc++-v3/fragment.am 2004-07-22 18:24:59.019932264 +0100
+@@ -18,7 +18,7 @@
+ $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+ # -I/-D flags to pass when compiling.
+-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
+
+
+
diff --git a/packages/gcc/gcc-4.2.0/sh3-installfix-fixheaders.patch b/packages/gcc/gcc-4.2.0/sh3-installfix-fixheaders.patch
new file mode 100644
index 0000000000..a06cd2e075
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/sh3-installfix-fixheaders.patch
@@ -0,0 +1,11 @@
+--- gcc-4.1.1/gcc/Makefile.in_orig 2007-01-31 21:24:23.000000000 +0000
++++ gcc-4.1.1/gcc/Makefile.in 2007-01-31 21:24:43.000000000 +0000
+@@ -3772,8 +3772,6 @@
+ $(INSTALL_SCRIPT) $(mkinstalldirs) \
+ $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
+ $(INSTALL_SCRIPT) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
+- $(INSTALL_PROGRAM) build/fix-header$(build_exeext) \
+- $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
+ else :; fi
+ echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
+ > $(DESTDIR)$(itoolsdatadir)/mkheaders.conf
diff --git a/packages/gcc/gcc-4.2.0/unbreak-armv4t.patch b/packages/gcc/gcc-4.2.0/unbreak-armv4t.patch
new file mode 100644
index 0000000000..b3399abfdb
--- /dev/null
+++ b/packages/gcc/gcc-4.2.0/unbreak-armv4t.patch
@@ -0,0 +1,12 @@
+diff -urN gcc-4.1.1/gcc/config/arm/linux-eabi.h gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h
+--- gcc-4.1.1/gcc/config/arm/linux-eabi.h 2006-10-22 11:11:49.000000000 -0700
++++ gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h 2006-10-24 21:34:01.000000000 -0700
+@@ -45,7 +45,7 @@
+ The ARM10TDMI core is the default for armv5t, so set
+ SUBTARGET_CPU_DEFAULT to achieve this. */
+ #undef SUBTARGET_CPU_DEFAULT
+-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+ #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
diff --git a/packages/gcc/gcc-4.2-20060513/zecke-no-host-includes.patch b/packages/gcc/gcc-4.2.0/zecke-no-host-includes.patch
index 6afb10d6ef..6afb10d6ef 100644
--- a/packages/gcc/gcc-4.2-20060513/zecke-no-host-includes.patch
+++ b/packages/gcc/gcc-4.2.0/zecke-no-host-includes.patch
diff --git a/packages/gcc/gcc-4.2-20060513/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.2.0/zecke-xgcc-cpp.patch
index ba7d7257d9..42ec190600 100644
--- a/packages/gcc/gcc-4.2-20060513/zecke-xgcc-cpp.patch
+++ b/packages/gcc/gcc-4.2.0/zecke-xgcc-cpp.patch
@@ -1,9 +1,9 @@
-Index: gcc-4.0.2/Makefile.in
+Index: gcc-4.1.1/Makefile.in
===================================================================
---- gcc-4.0.2.orig/Makefile.in 2006-08-06 13:17:09.000000000 +0200
-+++ gcc-4.0.2/Makefile.in 2006-08-06 13:18:35.000000000 +0200
-@@ -197,6 +197,7 @@
- AS="$(AS_FOR_TARGET)"; export AS; \
+--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
++++ gcc-4.1.1/Makefile.in 2006-08-06 13:32:46.000000000 +0200
+@@ -194,6 +194,7 @@
+ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CPP="$(CC_FOR_TARGET) -E"; export CCP; \
diff --git a/packages/gcc/gcc-cross-initial_4.1.2.bb b/packages/gcc/gcc-cross-initial_4.1.2.bb
new file mode 100644
index 0000000000..1e23ef9330
--- /dev/null
+++ b/packages/gcc/gcc-cross-initial_4.1.2.bb
@@ -0,0 +1,30 @@
+require gcc-cross_${PV}.bb
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils"
+DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}"
+PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
+PACKAGES = ""
+
+# This is intended to be a -very- basic config
+EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \
+ --with-newlib \
+ --disable-shared \
+ --disable-threads \
+ --disable-multilib \
+ --disable-__cxa_atexit \
+ --disable-libmudflap \
+ --disable-libssp \
+ --enable-languages=c \
+ --enable-target-optspace \
+ --program-prefix=${TARGET_PREFIX} \
+ ${@get_gcc_fpu_setting(bb, d)}"
+
+do_stage_prepend () {
+ mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}
+ ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a
+}
+
+# Override the method from gcc-cross so we don't try to install libgcc
+do_install () {
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/packages/gcc/gcc-cross-sdk_4.2.0.bb b/packages/gcc/gcc-cross-sdk_4.2.0.bb
new file mode 100644
index 0000000000..71c2cd08a2
--- /dev/null
+++ b/packages/gcc/gcc-cross-sdk_4.2.0.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "The GNU cc and gcc C compilers."
+HOMEPAGE = "http://www.gnu.org/software/gcc/"
+SECTION = "devel"
+LICENSE = "GPL"
+PR = "r0"
+
+inherit sdk
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
+PACKAGES = "${PN}"
+
+require gcc_${PV}.bb
+require gcc4-build-sdk.inc
+require gcc-package-sdk.inc
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://740-sh-pr24836.patch;patch=1 \
+ file://800-arm-bigendian.patch;patch=1 \
+ file://arm-nolibfloat.patch;patch=1 \
+ file://arm-softfloat.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://arm-thumb.patch;patch=1 \
+ file://arm-thumb-cache.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://unbreak-armv4t.patch;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ "
+
+SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+
diff --git a/packages/gcc/gcc-cross_4.0.2.bb b/packages/gcc/gcc-cross_4.0.2.bb
index d2dc240126..59da2080e8 100644
--- a/packages/gcc/gcc-cross_4.0.2.bb
+++ b/packages/gcc/gcc-cross_4.0.2.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r1"
+PR = "r7"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.2-20060513.bb b/packages/gcc/gcc-cross_4.2.0.bb
index 4e380c5f66..9025a98f3c 100644
--- a/packages/gcc/gcc-cross_4.2-20060513.bb
+++ b/packages/gcc/gcc-cross_4.2.0.bb
@@ -15,4 +15,6 @@ require gcc3-build-cross.inc
# cross packaging
require gcc-package-cross.inc
-EXTRA_OECONF += "--with-mpfr=${STAGING_DIR}/${BUILD_SYS}"
+SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR}/${BUILD_SYS}"
diff --git a/packages/gcc/gcc_4.0.2.bb b/packages/gcc/gcc_4.0.2.bb
index f812897786..0541ddfe96 100644
--- a/packages/gcc/gcc_4.0.2.bb
+++ b/packages/gcc/gcc_4.0.2.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
DEPENDS = "mpfr gmp"
-PR = "r3"
+PR = "r5"
inherit autotools gettext
@@ -23,7 +23,9 @@ SRC_URI_append = " file://100-uclibc-conf.patch;patch=1 \
file://302-c99-snprintf.patch;patch=1 \
file://303-c99-complex-ugly-hack.patch;patch=1 \
file://800-arm-bigendian.patch;patch=1 \
- file://zecke-host-cpp-ac-hack.patch;patch=1 "
+ file://zecke-host-cpp-ac-hack.patch;patch=1 \
+ file://gcc-4.0.2-atmel.0.99.2.patch;patch=1 \
+ "
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
index 417909eb1b..2557a2694e 100644
--- a/packages/gcc/gcc_4.1.2.bb
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -29,6 +29,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
file://zecke-xgcc-cpp.patch;patch=1 \
file://unbreak-armv4t.patch;patch=1 \
file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
"
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
@@ -45,6 +46,7 @@ JAVA = ""
LANGUAGES = "c,c++${FORTRAN}${JAVA}"
require gcc3-build.inc
+ARCH_FLAGS_FOR_TARGET=-isystem${STAGING_INCDIR}
EXTRA_OECONF += " --disable-libssp "
diff --git a/packages/gcc/gcc_4.2-20060513.bb b/packages/gcc/gcc_4.2-20060513.bb
deleted file mode 100644
index 85fe468bc0..0000000000
--- a/packages/gcc/gcc_4.2-20060513.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-PR = "r0"
-DESCRIPTION = "The GNU cc and gcc C compilers."
-HOMEPAGE = "http://www.gnu.org/software/gcc/"
-SECTION = "devel"
-LICENSE = "GPL"
-DEFAULT_PREFERENCE = "-1"
-
-inherit autotools gettext
-
-require gcc-package.inc
-
-SRC_URI = "http://ftp.nluug.nl/languages/gcc/snapshots/${PV}/gcc-${PV}.tar.bz2 \
- file://arm-nolibfloat.patch;patch=1 \
- file://arm-softfloat.patch;patch=1 \
- file://zecke-xgcc-cpp.patch;patch=1 \
- file://ldflags.patch;patch=1"
-
-SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
-
-require gcc4-build.inc
-EXTRA_OECONF += "--disable-libssp"
-
-FORTRAN = ""
-HAS_GFORTRAN = ""
-HAS_G2C = "no"
-
-
diff --git a/packages/gcc/gcc_4.2.0.bb b/packages/gcc/gcc_4.2.0.bb
new file mode 100644
index 0000000000..b5c4b3c936
--- /dev/null
+++ b/packages/gcc/gcc_4.2.0.bb
@@ -0,0 +1,52 @@
+PR = "r0"
+DESCRIPTION = "The GNU cc and gcc C compilers."
+HOMEPAGE = "http://www.gnu.org/software/gcc/"
+SECTION = "devel"
+LICENSE = "GPL"
+
+inherit autotools gettext
+
+require gcc-package.inc
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://740-sh-pr24836.patch;patch=1 \
+ file://800-arm-bigendian.patch;patch=1 \
+ file://arm-nolibfloat.patch;patch=1 \
+ file://arm-softfloat.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://arm-thumb.patch;patch=1 \
+ file://arm-thumb-cache.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://zecke-xgcc-cpp.patch;patch=1 \
+ file://unbreak-armv4t.patch;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
+ "
+
+SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+
+#Set the fortran bits
+# 'fortran' or '', not 'f77' like gcc3 had
+FORTRAN = ""
+HAS_GFORTRAN = "no"
+HAS_G2C = "no"
+
+#Set the java bits
+JAVA_arm = ""
+JAVA = ""
+
+LANGUAGES = "c,c++${FORTRAN}${JAVA}"
+require gcc3-build.inc
+ARCH_FLAGS_FOR_TARGET=-isystem${STAGING_INCDIR}
+
+
+EXTRA_OECONF += " --disable-libssp --disable-bootstrap "
+
diff --git a/packages/gdb/gdb_6.6.bb b/packages/gdb/gdb_6.6.bb
index 2c0f2c67d9..3650b927da 100644
--- a/packages/gdb/gdb_6.6.bb
+++ b/packages/gdb/gdb_6.6.bb
@@ -1,6 +1,7 @@
require gdb.inc
-PR = "r1"
+PR = "r2"
-#only append it for glib, not for uclibcc
+#only append it for glib, not for uclibc
RRECOMMENDS_gdb_append_linux = " glibc-thread-db "
+RRECOMMENDS_gdb_append_linux-gnueabi = " glibc-thread-db "
diff --git a/packages/gizmod/gizmod_2.3.bb b/packages/gizmod/gizmod_2.3.bb
index ff9ae25640..bc70aa0414 100644
--- a/packages/gizmod/gizmod_2.3.bb
+++ b/packages/gizmod/gizmod_2.3.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "Gizmo Daemon"
HOMEPAGE = "http://gizmod.sourceforge.net"
LICENSE = "GPLv2"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
SECTION = "console/multimedia"
DEPENDS = "python virtual/libx11 xf86vidmodeproto alsa-lib"
SRC_URI = "${SOURCEFORGE_MIRROR}/gizmod/gizmod-${PV}.tar.bz2 \
diff --git a/packages/glibc/glibc-initial_2.6.bb b/packages/glibc/glibc-initial_2.6.bb
new file mode 100644
index 0000000000..0d4a79f2a4
--- /dev/null
+++ b/packages/glibc/glibc-initial_2.6.bb
@@ -0,0 +1,46 @@
+require glibc_${PV}.bb
+
+DEPENDS = "linux-libc-headers"
+PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
+FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+
+PACKAGES = ""
+
+do_configure () {
+ sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
+ chmod +x ${S}/configure
+ unset CFLAGS
+ CC="${BUILD_CC}" CPP="${BUILD_CPP}" LD="${BUILD_LD}" ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
+ --without-cvs --disable-sanity-checks \
+ --with-headers=${CROSS_DIR}/${TARGET_SYS}/include \
+ --enable-hacker-mode
+ if grep -q GLIBC_2.3 ${S}/ChangeLog; then
+ # glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c, which fails without a real cross-compiler.
+ # Fortunately, we don't need errlist-compat.c, since we just need .h files,
+ # so work around this by creating a fake errlist-compat.c and satisfying its dependencies.
+ # Another workaround might be to tell configure to not use any cross options to $(CC).
+ # The real fix would be to get install-headers to not generate errlist-compat.c.
+ make sysdeps/gnu/errlist.c
+ mkdir -p stdio-common
+ touch stdio-common/errlist-compat.c
+ fi
+}
+
+do_compile () {
+ :
+}
+
+do_stage () {
+ oe_runmake cross-compiling=yes install_root=${CROSS_DIR}/${TARGET_SYS} prefix="" install-headers
+
+ # Two headers -- stubs.h and features.h -- aren't installed by install-headers,
+ # so do them by hand. We can tolerate an empty stubs.h for the moment.
+ # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
+ mkdir -p ${CROSS_DIR}/${TARGET_SYS}/include/gnu
+ touch ${CROSS_DIR}/${TARGET_SYS}/include/gnu/stubs.h
+ cp ${S}/include/features.h ${CROSS_DIR}/${TARGET_SYS}/include/features.h
+}
+
+do_install () {
+ :
+}
diff --git a/packages/glibc/glibc-intermediate_2.6.bb b/packages/glibc/glibc-intermediate_2.6.bb
new file mode 100644
index 0000000000..7f34af2b0d
--- /dev/null
+++ b/packages/glibc/glibc-intermediate_2.6.bb
@@ -0,0 +1,18 @@
+require glibc_${PV}.bb
+
+do_install () {
+ :
+}
+
+# gcc uses -Werror which break on a "you have no thumb interwork" _warning_
+do_configure_prepend() {
+ sed -i s:-Werror:: ${S}/configure
+}
+
+
+
+PACKAGES = ""
+PROVIDES = "virtual/${TARGET_PREFIX}libc-for-gcc"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial linux-libc-headers"
+GLIBC_ADDONS = "nptl,ports"
+GLIBC_EXTRA_OECONF = ""
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
index 4bd4223657..ae6a085e74 100644
--- a/packages/glibc/glibc-package.bbclass
+++ b/packages/glibc/glibc-package.bbclass
@@ -175,10 +175,10 @@ python package_do_split_gconvs () {
bb.error("datadir not defined")
return
- gconv_libdir = os.path.join(libdir, "gconv")
- charmap_dir = os.path.join(datadir, "i18n", "charmaps")
- locales_dir = os.path.join(datadir, "i18n", "locales")
- binary_locales_dir = os.path.join(libdir, "locale")
+ gconv_libdir = base_path_join(libdir, "gconv")
+ charmap_dir = base_path_join(datadir, "i18n", "charmaps")
+ locales_dir = base_path_join(datadir, "i18n", "locales")
+ binary_locales_dir = base_path_join(libdir, "locale")
do_split_packages(d, gconv_libdir, file_regex='^(.*)\.so$', output_pattern='glibc-gconv-%s', description='gconv module for character set %s', extra_depends='glibc-gconv')
@@ -204,7 +204,7 @@ python package_do_split_gconvs () {
supported = bb.data.getVar('GLIBC_GENERATE_LOCALES', d, 1)
if not supported or supported == "all":
- f = open(os.path.join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
+ f = open(base_path_join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
supported = f.readlines()
f.close()
else:
@@ -257,9 +257,9 @@ python package_do_split_gconvs () {
bb.data.setVar('ALLOW_EMPTY_%s' % pkgname, '1', d)
bb.data.setVar('PACKAGES', '%s %s' % (pkgname, bb.data.getVar('PACKAGES', d, 1)), d)
- treedir = os.path.join(bb.data.getVar("WORKDIR", d, 1), "locale-tree")
+ treedir = base_path_join(bb.data.getVar("WORKDIR", d, 1), "locale-tree")
path = bb.data.getVar("PATH", d, 1)
- i18npath = os.path.join(treedir, datadir, "i18n")
+ i18npath = base_path_join(treedir, datadir, "i18n")
localedef_opts = "--force --old-style --no-archive --prefix=%s --inputfile=%s/i18n/locales/%s --charmap=%s %s" % (treedir, datadir, locale, encoding, name)
cmd = "PATH=\"%s\" I18NPATH=\"%s\" %s -L %s %s/bin/localedef %s" % (path, i18npath, qemu, treedir, treedir, localedef_opts)
diff --git a/packages/glibc/glibc_2.2.5.bb b/packages/glibc/glibc_2.2.5.bb
index adb8a45283..82ab193073 100644
--- a/packages/glibc/glibc_2.2.5.bb
+++ b/packages/glibc/glibc_2.2.5.bb
@@ -23,7 +23,7 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-PROVIDES_unslung = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
+PROVIDES_unslung = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc libc6-unslung"
libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
diff --git a/packages/glibc/glibc_2.6.bb b/packages/glibc/glibc_2.6.bb
new file mode 100644
index 0000000000..d4803fa5cc
--- /dev/null
+++ b/packages/glibc/glibc_2.6.bb
@@ -0,0 +1,204 @@
+require glibc.inc
+
+ARM_INSTRUCTION_SET = "arm"
+
+PACKAGES_DYNAMIC = "libc6*"
+RPROVIDES_${PN}-dev = "libc6-dev"
+
+PR = "r0"
+
+# the -isystem in bitbake.conf screws up glibc do_stage
+BUILD_CPPFLAGS = "-I${STAGING_DIR}/${BUILD_SYS}/include"
+TARGET_CPPFLAGS = "-I${STAGING_DIR}/${TARGET_SYS}/include"
+
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
+
+GLIBC_ADDONS ?= "ports,nptl,libidn"
+
+GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
+
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import bb, re
+ uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_os:
+ raise bb.parse.SkipPackage("incompatible with target %s" %
+ bb.data.getVar('TARGET_OS', d, 1))
+}
+
+RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
+
+# file://noinfo.patch;patch=1
+# file://ldconfig.patch;patch=1;pnum=0
+# file://arm-machine-gmon.patch;patch=1;pnum=0 \
+# \
+# file://arm-ioperm.patch;patch=1;pnum=0 \
+# file://ldd.patch;patch=1;pnum=0 \
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
+ file://arm-memcpy.patch;patch=1 \
+ file://arm-longlong.patch;patch=1 \
+ file://fhs-linux-paths.patch;patch=1 \
+ file://dl-cache-libcmp.patch;patch=1 \
+ file://ldsocache-varrun.patch;patch=1 \
+ file://nptl-crosscompile.patch;patch=1 \
+ file://glibc-check_pf.patch;patch=1;pnum=0 \
+# file://glibc-2.4-compile.patch;patch=1 \
+# file://glibc-2.4-openat-3.patch;patch=1 \
+# file://fixup-aeabi-syscalls.patch;patch=1 \
+ file://zecke-sane-readelf.patch;patch=1 \
+ file://ldd-unbash.patch;patch=1 \
+ file://generic-bits_select.h \
+ file://generic-bits_types.h \
+ file://generic-bits_typesizes.h \
+ file://generic-bits_time.h \
+ file://etc/ld.so.conf \
+ file://generate-supported.mk"
+
+
+# Build fails on sh3 and sh4 without additional patches
+SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
+SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
+
+#powerpc patches to add support for soft-float
+SRC_URI_append_powerpc= " file://ppc-sfp-machine.patch;patch=1 \
+ file://ppc-soft-fp-20070115.patch;patch=1 \
+ file://ppc-ld-nofpu-20070104.patch;patch=1 \
+ file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
+ file://powerpc-sqrt-hack.diff;patch=1""
+
+S = "${WORKDIR}/glibc-${PV}"
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
+ --without-cvs --disable-profile --disable-debug --without-gd \
+ --enable-clocale=gnu \
+ --enable-add-ons=${GLIBC_ADDONS} \
+ --with-headers=${STAGING_INCDIR} \
+ --without-selinux \
+ ${GLIBC_EXTRA_OECONF}"
+
+EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
+
+do_munge() {
+ # Integrate ports and libidn into tree
+ mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
+ mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
+
+ # Ports isn't really working... Fix it
+ # Some of this is rather dirty, but it seems to be the only
+ # quick way to get this cruft to compile
+ rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
+ ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
+ cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
+ cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
+ cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
+ cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
+ # Copy in generic stuff for not yet implemented headers
+ for i in ${S}/bits/*.h; do
+ F=`basename $i`
+ [ "$F" = "local_lim.h" ] && continue
+ [ "$F" = "errno.h" ] && continue
+ test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ done
+ # This is harmful; we need to get the one from nptl/sysdeps/pthreads
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
+ # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
+ # Obsoleted by sysdeps/gnu/bits/utmp.h
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
+}
+
+addtask munge before do_patch after do_unpack
+
+
+do_configure () {
+# override this function to avoid the autoconf/automake/aclocal/autoheader
+# calls for now
+# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
+# version check and doesn't really help with anything
+ if [ -z "`which rpcgen`" ]; then
+ echo "rpcgen not found. Install glibc-devel."
+ exit 1
+ fi
+ (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
+ CPPFLAGS="" oe_runconf
+}
+
+rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
+ yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
+ rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
+
+do_compile () {
+ # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
+ unset LDFLAGS
+ base_do_compile
+ (
+ cd ${S}/sunrpc/rpcsvc
+ for r in ${rpcsvc}; do
+ h=`echo $r|sed -e's,\.x$,.h,'`
+ rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
+ done
+ )
+}
+
+do_stage() {
+ rm -f ${STAGING_LIBDIR}/libc.so.6
+ oe_runmake 'install_root=${STAGING_DIR}/${HOST_SYS}' \
+ 'includedir=/include' 'libdir=/lib' 'slibdir=/lib' \
+ '${STAGING_LIBDIR}/libc.so.6' \
+ install-headers install-lib
+
+ install -d ${STAGING_INCDIR}/gnu \
+ ${STAGING_INCDIR}/bits \
+ ${STAGING_INCDIR}/rpcsvc
+ install -m 0644 ${S}/include/gnu/stubs.h ${STAGING_INCDIR}/gnu/
+ install -m 0644 ${B}/bits/stdio_lim.h ${STAGING_INCDIR}/bits/
+ install -m 0644 misc/syscall-list.h ${STAGING_INCDIR}/bits/syscall.h
+ for r in ${rpcsvc}; do
+ h=`echo $r|sed -e's,\.x$,.h,'`
+ install -m 0644 ${S}/sunrpc/rpcsvc/$h ${STAGING_INCDIR}/rpcsvc/
+ done
+ for i in libc.a libc_pic.a libc_nonshared.a; do
+ install -m 0644 ${B}/$i ${STAGING_LIBDIR}/ || die "failed to install $i"
+ done
+ echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${STAGING_LIBDIR}/libpthread.so
+ echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${STAGING_LIBDIR}/libc.so
+
+ rm -f ${CROSS_DIR}/${TARGET_SYS}/lib/libc.so.6
+ oe_runmake 'install_root=${CROSS_DIR}/${TARGET_SYS}' \
+ 'includedir=/include' 'libdir=/lib' 'slibdir=/lib' \
+ '${CROSS_DIR}/${TARGET_SYS}/lib/libc.so.6' \
+ install-headers install-lib
+
+ install -d ${CROSS_DIR}/${TARGET_SYS}/include/gnu \
+ ${CROSS_DIR}/${TARGET_SYS}/include/bits \
+ ${CROSS_DIR}/${TARGET_SYS}/include/rpcsvc
+ install -m 0644 ${S}/include/gnu/stubs.h ${CROSS_DIR}/${TARGET_SYS}/include/gnu/
+ install -m 0644 ${B}/bits/stdio_lim.h ${CROSS_DIR}/${TARGET_SYS}/include/bits/
+ install -m 0644 misc/syscall-list.h ${CROSS_DIR}/${TARGET_SYS}/include/bits/syscall.h
+ for r in ${rpcsvc}; do
+ h=`echo $r|sed -e's,\.x$,.h,'`
+ install -m 0644 ${S}/sunrpc/rpcsvc/$h ${CROSS_DIR}/${TARGET_SYS}/include/rpcsvc/
+ done
+
+ for i in libc.a libc_pic.a libc_nonshared.a; do
+ install -m 0644 ${B}/$i ${CROSS_DIR}/${TARGET_SYS}/lib/ || die "failed to install $i"
+ done
+ echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${CROSS_DIR}/${TARGET_SYS}/lib/libpthread.so
+ echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${CROSS_DIR}/${TARGET_SYS}/lib/libc.so
+}
+
+require glibc-package.bbclass
diff --git a/packages/glibmm/glibmm_2.8.4.bb b/packages/glibmm/glibmm_2.8.4.bb
index a1235ae563..1819114cb1 100644
--- a/packages/glibmm/glibmm_2.8.4.bb
+++ b/packages/glibmm/glibmm_2.8.4.bb
@@ -3,8 +3,8 @@ HOMEPAGE = "http://www.gtkmm.org/"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "gtk+ libsigc++-2.0"
-PR = "r1"
+DEPENDS = "glib-2.0 libsigc++-2.0"
+PR = "r2"
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.8/glibmm-${PV}.tar.bz2"
diff --git a/packages/gnome/gnome-desktop/no-desktop-docs.patch b/packages/gnome/gnome-desktop/no-desktop-docs.patch
new file mode 100644
index 0000000000..c132341728
--- /dev/null
+++ b/packages/gnome/gnome-desktop/no-desktop-docs.patch
@@ -0,0 +1,10 @@
+--- Makefile.am~ 2007-05-22 16:50:35.000000000 +0200
++++ Makefile.am 2007-05-22 16:50:35.000000000 +0200
+@@ -3,7 +3,6 @@
+ libgnome-desktop \
+ gnome-about \
+ pixmaps \
+- desktop-docs \
+ docs \
+ man
+
diff --git a/packages/gnome/gnome-desktop_2.16.1.bb b/packages/gnome/gnome-desktop_2.16.1.bb
index 1e3e814d17..4d4b80efbc 100644
--- a/packages/gnome/gnome-desktop_2.16.1.bb
+++ b/packages/gnome/gnome-desktop_2.16.1.bb
@@ -1,14 +1,16 @@
LICENSE = "GPL"
SECTION = "x11/gnome"
-PR = "r1"
+PR = "r2"
DESCRIPTION = "GNOME library for reading .desktop files"
inherit gnome pkgconfig
DEPENDS = "gnome-common gnome-doc-utils libgnomeui"
-SRC_URI += "file://scrollkeeper.patch;patch=1"
+SRC_URI += "file://scrollkeeper.patch;patch=1 \
+ file://no-desktop-docs.patch;patch=1;pnum=0"
EXTRA_OECONF = "--disable-scrollkeeper"
+
EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
do_configure_prepend () {
diff --git a/packages/gnu-config/gnu-config/avr32.patch b/packages/gnu-config/gnu-config/avr32.patch
new file mode 100644
index 0000000000..43efcd8a2e
--- /dev/null
+++ b/packages/gnu-config/gnu-config/avr32.patch
@@ -0,0 +1,20 @@
+--- /tmp/config.sub 2007-06-01 15:29:41.000000000 +0200
++++ config/config.sub 2007-06-01 15:58:50.005251000 +0200
+@@ -231,7 +231,7 @@
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+@@ -305,7 +305,7 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* \
++ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
diff --git a/packages/gnu-config/gnu-config_20050701.bb b/packages/gnu-config/gnu-config_20050701.bb
index 2066014adf..2f1b6eb785 100644
--- a/packages/gnu-config/gnu-config_20050701.bb
+++ b/packages/gnu-config/gnu-config_20050701.bb
@@ -6,10 +6,11 @@ INHIBIT_DEFAULT_DEPS = "1"
FIXEDSRCDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}"
PV = "0.1+cvs${FIXEDSRCDATE}"
-PR = "r4"
+PR = "r5"
SRC_URI = "cvs://anonymous@cvs.sv.gnu.org/cvsroot/config;module=config;method=pserver;date=${FIXEDSRCDATE} \
file://config-guess-uclibc.patch;patch=1 \
+ file://avr32.patch;patch=1 \
file://gnu-configize.in"
S = "${WORKDIR}/config"
diff --git a/packages/ipsec-tools/ipsec-tools-0.6.6/.mtn2git_empty b/packages/gnuchess/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ipsec-tools/ipsec-tools-0.6.6/.mtn2git_empty
+++ b/packages/gnuchess/.mtn2git_empty
diff --git a/packages/gnuchess/gnuchess_5.05.bb b/packages/gnuchess/gnuchess_5.05.bb
new file mode 100644
index 0000000000..d0536c3f84
--- /dev/null
+++ b/packages/gnuchess/gnuchess_5.05.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Gnuchess is a chess playing engine."
+HOMEPAGE = "http://www.gnu.org/software/chess/"
+SECTION = "console"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "${GNU_MIRROR}/chess/${PN}-${PV}.tar.gz"
+S = "${WORKDIR}/chess"
+
+inherit autotools
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.55.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.55.bb
new file mode 100644
index 0000000000..e6ff0d6624
--- /dev/null
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.55.bb
@@ -0,0 +1,4 @@
+require gpe-bluetooth.inc
+
+PR = "r0"
+
diff --git a/packages/gpe-calendar/gpe-calendar_0.90.bb b/packages/gpe-calendar/gpe-calendar_0.90.bb
new file mode 100644
index 0000000000..5b7c321fa9
--- /dev/null
+++ b/packages/gpe-calendar/gpe-calendar_0.90.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "GPE calendar is the calendar application of the GPE PIM suite."
+SECTION = "gpe"
+LICENSE = "GPL"
+
+DEPENDS = "libhandoff libsoup libeventdb libschedule libxsettings libxsettings-client libgpepimc libdisplaymigration libgpevtype"
+RDEPENDS = "gpe-icons"
+
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit autotools gpe
+
+do_configure () {
+ autotools_do_configure
+}
+
+
diff --git a/packages/gpe-contacts/gpe-contacts_0.47.bb b/packages/gpe-contacts/gpe-contacts_0.47.bb
new file mode 100644
index 0000000000..dadb085f06
--- /dev/null
+++ b/packages/gpe-contacts/gpe-contacts_0.47.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "GPE contacts manager"
+LICENSE = "GPL"
+SECTION = "gpe"
+
+DEPENDS = "libcontactsdb libgpewidget libgpepimc libdisplaymigration libgpevtype dbus-glib"
+RDEPENDS = "gpe-icons"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools
+
+FILES_${PN} += " ${datadir}/gpe ${datadir}/gpe-contacts"
+
diff --git a/packages/gpe-login/files/brightness-adjust-keyluanchrc.patch b/packages/gpe-login/files/brightness-adjust-keyluanchrc.patch
new file mode 100644
index 0000000000..cfc73f4d56
--- /dev/null
+++ b/packages/gpe-login/files/brightness-adjust-keyluanchrc.patch
@@ -0,0 +1,10 @@
+--- gpe-login-0.88/gpe-login.keylaunchrc.orig 2007-06-05 00:50:27.000000000 +0000
++++ gpe-login-0.88/gpe-login.keylaunchrc 2007-06-05 00:52:03.000000000 +0000
+@@ -7,3 +7,7 @@
+ key=...*Right:-:~chvt 3
+ key=...*Escape:-:~/etc/init.d/gpe-dm stop
+
++# Brightness control
++key=...*3:-:~display-brightness.sh down
++key=...*4:-:~display-brightness.sh up
++
diff --git a/packages/kismet/kismet-2006-04-R1/.mtn2git_empty b/packages/gpe-login/gpe-login-0.90/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/kismet/kismet-2006-04-R1/.mtn2git_empty
+++ b/packages/gpe-login/gpe-login-0.90/.mtn2git_empty
diff --git a/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch b/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch
new file mode 100644
index 0000000000..798c059ccc
--- /dev/null
+++ b/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch
@@ -0,0 +1,12 @@
+--- /tmp/gpe-login.keylaunchrc 2006-05-29 23:46:42.806081576 +0200
++++ gpe-login-0.87/gpe-login.keylaunchrc 2006-05-29 23:48:18.476537456 +0200
+@@ -1,3 +1,9 @@
+ key=????XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
+ key=????XF86PowerDown:-:/usr/bin/apm --suspend
+ key=????Held XF86PowerDown:-:bl toggle
++
++# VT changing
++key=...*Left:-:~chvt 1
++key=...*Right:-:~chvt 3
++key=...*Escape:-:~/etc/init.d/gpe-dm stop
++
diff --git a/packages/gpe-login/gpe-login_0.88.bb b/packages/gpe-login/gpe-login_0.88.bb
index f42aa4c6a3..6780add5c8 100644
--- a/packages/gpe-login/gpe-login_0.88.bb
+++ b/packages/gpe-login/gpe-login_0.88.bb
@@ -5,11 +5,18 @@ LICENSE = "GPL"
DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
RDEPENDS = "xkbd"
RPROVIDES = "gpe-session-starter"
-PR = "r1"
+PR = "r2"
+
+PACKAGE_ARCH_${PN} = "${MACHINE}"
inherit gpe
+
SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
SRC_URI += " file://use-xtscal.patch;patch=1 "
+SRC_URI_append_spitz = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_akita = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_c7x0 = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+
diff --git a/packages/gpe-login/gpe-login_0.90.bb b/packages/gpe-login/gpe-login_0.90.bb
new file mode 100644
index 0000000000..609255e54e
--- /dev/null
+++ b/packages/gpe-login/gpe-login_0.90.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "GPE user login screen"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
+RDEPENDS = "xkbd"
+RPROVIDES = "gpe-session-starter"
+PR = "r0"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+
+SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
+SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
+
+SRC_URI_append_spitz = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_akita = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_c7x0 = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+
diff --git a/packages/gpe-timesheet/gpe-timesheet.inc b/packages/gpe-timesheet/gpe-timesheet.inc
new file mode 100644
index 0000000000..11c1327752
--- /dev/null
+++ b/packages/gpe-timesheet/gpe-timesheet.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "GPE time tracker"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget gtk+ sqlite libtododb"
+RDEPENDS = "gpe-icons"
+
+inherit autotools gpe
+
+GPE_TARBALL_SUFFIX = "bz2"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.30.bb b/packages/gpe-timesheet/gpe-timesheet_0.30.bb
index 1e995c2d81..c642bfacb5 100644
--- a/packages/gpe-timesheet/gpe-timesheet_0.30.bb
+++ b/packages/gpe-timesheet/gpe-timesheet_0.30.bb
@@ -1,9 +1,3 @@
-LICENSE = "GPL"
-inherit autotools gpe
+require gpe-timesheet.inc
-DESCRIPTION = "GPE time tracker"
-GPE_TARBALL_SUFFIX = "bz2"
-DEPENDS = "libgpewidget gtk+ sqlite libtododb"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
PR = "r1"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.31.bb b/packages/gpe-timesheet/gpe-timesheet_0.31.bb
index 1e995c2d81..c642bfacb5 100644
--- a/packages/gpe-timesheet/gpe-timesheet_0.31.bb
+++ b/packages/gpe-timesheet/gpe-timesheet_0.31.bb
@@ -1,9 +1,3 @@
-LICENSE = "GPL"
-inherit autotools gpe
+require gpe-timesheet.inc
-DESCRIPTION = "GPE time tracker"
-GPE_TARBALL_SUFFIX = "bz2"
-DEPENDS = "libgpewidget gtk+ sqlite libtododb"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
PR = "r1"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.32.bb b/packages/gpe-timesheet/gpe-timesheet_0.32.bb
new file mode 100644
index 0000000000..9a3b61106c
--- /dev/null
+++ b/packages/gpe-timesheet/gpe-timesheet_0.32.bb
@@ -0,0 +1,3 @@
+require gpe-timesheet.inc
+
+PR = "r0"
diff --git a/packages/gpe-timesheet/gpe-timesheet_svn.bb b/packages/gpe-timesheet/gpe-timesheet_svn.bb
index 0eae00b1ca..28eb65d31b 100644
--- a/packages/gpe-timesheet/gpe-timesheet_svn.bb
+++ b/packages/gpe-timesheet/gpe-timesheet_svn.bb
@@ -1,13 +1,8 @@
-DESCRIPTION = "GPE time tracker"
-SECTION = "gpe"
-LICENSE = "GPL"
-DEPENDS = "libgpewidget gtk+ sqlite libtododb"
-RDEPENDS = "gpe-icons"
+require gpe-timesheet.inc
+
PR = "r1"
PV = "0.31+svn-${SRCDATE}"
-inherit autotools
-
SRC_URI = "${GPE_SVN}"
S = "${WORKDIR}/${PN}"
diff --git a/packages/gpe-what/gpe-what.inc b/packages/gpe-what/gpe-what.inc
new file mode 100644
index 0000000000..fd4307631e
--- /dev/null
+++ b/packages/gpe-what/gpe-what.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "GPE modal help"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 gtk+"
+
+inherit autotools gpe
+
+GPE_TARBALL_SUFFIX= "bz2"
diff --git a/packages/gpe-what/gpe-what_0.30.bb b/packages/gpe-what/gpe-what_0.30.bb
index 9c711a624d..165ea4cc3b 100644
--- a/packages/gpe-what/gpe-what_0.30.bb
+++ b/packages/gpe-what/gpe-what_0.30.bb
@@ -1,9 +1,4 @@
-LICENSE = "GPL"
-SECTION = "gpe"
-inherit gpe
-
-DESCRIPTION = "GPE modal help"
-DEPENDS = "virtual/libx11"
+require gpe-what.inc
do_compile_prepend() {
rm *.d
diff --git a/packages/gpe-what/gpe-what_0.31.bb b/packages/gpe-what/gpe-what_0.31.bb
index 362e573538..50a614bdd2 100644
--- a/packages/gpe-what/gpe-what_0.31.bb
+++ b/packages/gpe-what/gpe-what_0.31.bb
@@ -1,6 +1,3 @@
-LICENSE = "GPL"
-SECTION = "gpe"
-inherit gpe
+require gpe-what.inc
-DESCRIPTION = "GPE modal help"
DEPENDS = "virtual/libx11 libxpm libmatchbox"
diff --git a/packages/gpe-what/gpe-what_0.33.bb b/packages/gpe-what/gpe-what_0.33.bb
index ed7c7577ec..71ae7dac95 100644
--- a/packages/gpe-what/gpe-what_0.33.bb
+++ b/packages/gpe-what/gpe-what_0.33.bb
@@ -1,8 +1,5 @@
-LICENSE = "GPL"
-SECTION = "gpe"
-inherit gpe
+require gpe-what.inc
SRC_URI += "file://makefile-fix.patch;patch=1"
-DESCRIPTION = "GPE modal help"
DEPENDS = "virtual/libx11 libxpm libmatchbox"
diff --git a/packages/gpe-what/gpe-what_0.41.bb b/packages/gpe-what/gpe-what_0.41.bb
index 2cc0dc9c2f..853abec8aa 100644
--- a/packages/gpe-what/gpe-what_0.41.bb
+++ b/packages/gpe-what/gpe-what_0.41.bb
@@ -1,8 +1 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE modal help"
-DEPENDS = "virtual/libx11 gtk+"
-
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit autotools gpe
-
+require gpe-what.inc
diff --git a/packages/gpe-what/gpe-what_0.42.bb b/packages/gpe-what/gpe-what_0.42.bb
index 2cc0dc9c2f..853abec8aa 100644
--- a/packages/gpe-what/gpe-what_0.42.bb
+++ b/packages/gpe-what/gpe-what_0.42.bb
@@ -1,8 +1 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE modal help"
-DEPENDS = "virtual/libx11 gtk+"
-
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit autotools gpe
-
+require gpe-what.inc
diff --git a/packages/gpe-what/gpe-what_0.43.bb b/packages/gpe-what/gpe-what_0.43.bb
index b82da4ff7f..624f2e365e 100644
--- a/packages/gpe-what/gpe-what_0.43.bb
+++ b/packages/gpe-what/gpe-what_0.43.bb
@@ -1,9 +1,5 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE modal help"
-DEPENDS = "virtual/libx11 gtk+"
-PR = "r1"
+require gpe-what.inc
-GPE_TARBALL_SUFFIX= "bz2"
-inherit autotools gpe
+PR = "r1"
SRC_URI += " file://set-wm-hint.patch;patch=1;pnum=0"
diff --git a/packages/gpe-what/gpe-what_svn.bb b/packages/gpe-what/gpe-what_svn.bb
index 7ecaf20a2f..c448751096 100644
--- a/packages/gpe-what/gpe-what_svn.bb
+++ b/packages/gpe-what/gpe-what_svn.bb
@@ -1,9 +1,6 @@
-DESCRIPTION = "GPE modal help"
-LICENSE = "GPL"
-DEPENDS = "virtual/libx11 gtk+"
-PV = "0.41+svn${SRCDATE}"
+require gpe-what.inc
-inherit autotools
+PV = "0.41+svn${SRCDATE}"
SRC_URI = "${GPE_SVN}"
diff --git a/packages/gpephone/connect_0.1.bb b/packages/gpephone/connect_0.1.bb
index c5ce0a0d54..a3171eef97 100644
--- a/packages/gpephone/connect_0.1.bb
+++ b/packages/gpephone/connect_0.1.bb
@@ -17,6 +17,6 @@ do_compile() {
do_install() {
install -d ${D}/${prefix}/bin
- install -m755 connect ${D}/${prefix}/bin
- install -m755 disconnect ${D}/${prefix}/bin
+ install -m 755 connect ${D}/${prefix}/bin
+ install -m 755 disconnect ${D}/${prefix}/bin
}
diff --git a/packages/gpephone/gpe-session-scripts-phone_0.67.bb b/packages/gpephone/gpe-session-scripts-phone_0.67.bb
index 24d4a27e80..00031ac546 100644
--- a/packages/gpephone/gpe-session-scripts-phone_0.67.bb
+++ b/packages/gpephone/gpe-session-scripts-phone_0.67.bb
@@ -34,7 +34,7 @@ do_install_append() {
mv ${D}/usr/bin/gpe-logout ${D}/usr/bin/gpe-logout.matchbox
install -d ${D}${sysconfdir}/X11
- install -m755 ${WORKDIR}/phonesession ${D}${sysconfdir}/X11/phonesession
+ install -m 755 ${WORKDIR}/phonesession ${D}${sysconfdir}/X11/phonesession
}
do_install_append_x86() {
diff --git a/packages/gpesyncd/gpe-synctool_0.2.bb b/packages/gpesyncd/gpe-synctool_0.2.bb
new file mode 100644
index 0000000000..5db87ad995
--- /dev/null
+++ b/packages/gpesyncd/gpe-synctool_0.2.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Sync daemon for GPE and OpenSync"
+LICENSE = "GPL"
+DEPENDS = "gtk+ glib-2.0 libgpewidget"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools
+
diff --git a/packages/gpesyncd/gpe-synctool_svn.bb b/packages/gpesyncd/gpe-synctool_svn.bb
index 2fdc4c7e56..e85013c117 100644
--- a/packages/gpesyncd/gpe-synctool_svn.bb
+++ b/packages/gpesyncd/gpe-synctool_svn.bb
@@ -2,7 +2,9 @@ DESCRIPTION = "Sync daemon for GPE and OpenSync"
LICENSE = "GPL"
DEPENDS = "gtk+ glib-2.0 libgpewidget"
-PV = "0.0+svn${SRCDATE}"
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.2+svn${SRCDATE}"
PR = "r0"
SRC_URI = "${GPE_SVN}"
diff --git a/packages/gpsd/files/gpsd b/packages/gpsd/files/gpsd
index 289896fb47..2cf26c5f3a 100755
--- a/packages/gpsd/files/gpsd
+++ b/packages/gpsd/files/gpsd
@@ -16,6 +16,8 @@ GPS_DEV="/dev/ttyS3"
RETVAL=0
prog="gpsd"
+test -f /etc/default/$prog && . /etc/default/$prog
+
start() {
# Start daemons.
echo -n "Starting $prog: "
diff --git a/packages/gpsd/gpsd.inc b/packages/gpsd/gpsd.inc
index f7c1de2362..6e35227f41 100644
--- a/packages/gpsd/gpsd.inc
+++ b/packages/gpsd/gpsd.inc
@@ -10,6 +10,7 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--disable-python "
SRC_URI = "http://download.berlios.de/gpsd/gpsd-${PV}.tar.gz \
+ file://gpsd-default \
file://gpsd"
inherit autotools update-rc.d
@@ -40,9 +41,12 @@ do_install_append() {
install -d ${D}/${sysconfdir}/init.d
install -d ${D}/dev
install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
+ install -d ${D}/${sysconfdir}/default
+ install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd
}
PACKAGES =+ "libgps"
FILES_${PN} += "${sysconfdir}"
FILES_libgps = "${libdir}/*.so*"
+CONFFILES_${PN} = "${sysconfdir}/default/gpsd"
diff --git a/packages/gpsd/gpsd_2.28.bb b/packages/gpsd/gpsd_2.28.bb
index 1a5e608aa8..d51d088807 100644
--- a/packages/gpsd/gpsd_2.28.bb
+++ b/packages/gpsd/gpsd_2.28.bb
@@ -1,2 +1,2 @@
require gpsd.inc
-PR = "r1"
+PR = "r3"
diff --git a/packages/gpsd/gpsd_2.32.bb b/packages/gpsd/gpsd_2.32.bb
index 4d07974d6e..12ef7f47a3 100644
--- a/packages/gpsd/gpsd_2.32.bb
+++ b/packages/gpsd/gpsd_2.32.bb
@@ -1,2 +1,2 @@
require gpsd.inc
-PR = "r0"
+PR = "r2"
diff --git a/packages/gpsd/gpsd_2.33.bb b/packages/gpsd/gpsd_2.33.bb
index f61c613eb8..a3b5b0bc25 100644
--- a/packages/gpsd/gpsd_2.33.bb
+++ b/packages/gpsd/gpsd_2.33.bb
@@ -2,4 +2,4 @@ require gpsd.inc
DEPENDS = "ncurses"
-PR = "r0"
+PR = "r2"
diff --git a/packages/gpsd/gpsd_2.34.bb b/packages/gpsd/gpsd_2.34.bb
index 58e9ebeee2..726ba42481 100644
--- a/packages/gpsd/gpsd_2.34.bb
+++ b/packages/gpsd/gpsd_2.34.bb
@@ -1,3 +1,3 @@
require gpsd.inc
-PR = "r0"
+PR = "r2"
diff --git a/packages/gsm/files/alive-start-if-interpreter-ready.patch b/packages/gsm/files/alive-start-if-interpreter-ready.patch
new file mode 100644
index 0000000000..20104d2e3f
--- /dev/null
+++ b/packages/gsm/files/alive-start-if-interpreter-ready.patch
@@ -0,0 +1,39 @@
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c 2007-06-03 13:24:44.000000000 +0200
++++ gsm/src/gsmd/atcmd.c 2007-06-03 13:24:46.000000000 +0200
+@@ -185,6 +185,7 @@
+ !strcmp(buf, "AT-Command Interpreter ready")) {
+ g->interpreter_ready = 1;
+ gsmd_initsettings(g);
++ gmsd_alive_start(g);
+ return 0;
+ }
+
+Index: gsm/src/gsmd/gsmd.c
+===================================================================
+--- gsm.orig/src/gsmd/gsmd.c 2007-06-03 13:22:02.000000000 +0200
++++ gsm/src/gsmd/gsmd.c 2007-06-03 13:22:56.000000000 +0200
+@@ -128,7 +128,7 @@
+ gsmd_timer_register(tmr);
+ }
+
+-static int gmsd_alive_start(struct gsmd *gsmd)
++int gmsd_alive_start(struct gsmd *gsmd)
+ {
+ struct timeval tv;
+
+@@ -478,10 +478,11 @@
+ /* select a vendor plugin */
+ gsmd_vendor_plugin_find(&g);
+
+- if (g.interpreter_ready)
++ if (g.interpreter_ready) {
+ gsmd_initsettings(&g);
+
+- gmsd_alive_start(&g);
++ gmsd_alive_start(&g);
++ }
+
+ gsmd_opname_init(&g);
+
diff --git a/packages/gsm/files/extreplychars.patch b/packages/gsm/files/extreplychars.patch
new file mode 100644
index 0000000000..8ebc343e27
--- /dev/null
+++ b/packages/gsm/files/extreplychars.patch
@@ -0,0 +1,70 @@
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c 2007-06-03 10:46:19.000000000 +0200
++++ gsm/src/gsmd/atcmd.c 2007-06-03 15:54:53.000000000 +0200
+@@ -208,7 +208,7 @@
+ * TBD
+ */
+
+- if (buf[0] == '+' || buf[0] == '%') {
++ if (buf[0] == '+' || strchr(g->vendorpl->ext_chars, buf[0])) {
+ /* an extended response */
+ const char *colon = strchr(buf, ':');
+ if (!colon) {
+@@ -255,7 +255,7 @@
+ }
+
+ if (cmd) {
+- if (cmd->buf[2] != '+' && cmd->buf[2] != '%') {
++ if (cmd->buf[2] != '+' && strchr(g->vendorpl->ext_chars, cmd->buf[2]) == NULL) {
+ gsmd_log(GSMD_ERROR, "extd reply to non-extd command?\n");
+ return -EINVAL;
+ }
+Index: gsm/src/gsmd/vendor_qc.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor_qc.c 2007-06-03 10:46:19.000000000 +0200
++++ gsm/src/gsmd/vendor_qc.c 2007-06-03 11:45:58.000000000 +0200
+@@ -97,6 +97,7 @@
+
+ struct gsmd_vendor_plugin gsmd_vendor_plugin = {
+ .name = "Qualcomm msm6250",
++ .ext_chars = "@",
+ .num_unsolicit = ARRAY_SIZE(qc_unsolicit),
+ .unsolicit = qc_unsolicit,
+ .detect = &qc_detect,
+Index: gsm/src/gsmd/vendor_ti.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor_ti.c 2007-06-03 10:46:19.000000000 +0200
++++ gsm/src/gsmd/vendor_ti.c 2007-06-03 11:45:58.000000000 +0200
+@@ -303,6 +303,7 @@
+
+ struct gsmd_vendor_plugin gsmd_vendor_plugin = {
+ .name = "TI Calypso",
++ .ext_chars = "%@",
+ .num_unsolicit = ARRAY_SIZE(ticalypso_unsolicit),
+ .unsolicit = ticalypso_unsolicit,
+ .detect = &ticalypso_detect,
+Index: gsm/include/gsmd/vendorplugin.h
+===================================================================
+--- gsm.orig/include/gsmd/vendorplugin.h 2007-02-16 15:12:40.000000000 +0100
++++ gsm/include/gsmd/vendorplugin.h 2007-06-03 11:45:58.000000000 +0200
+@@ -12,6 +12,7 @@
+ struct gsmd_vendor_plugin {
+ struct llist_head list;
+ unsigned char *name;
++ unsigned char *ext_chars;
+ unsigned int num_unsolicit;
+ const struct gsmd_unsolicit *unsolicit;
+ int (*detect)(struct gsmd *g);
+Index: gsm/src/gsmd/vendor_tihtc.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor_tihtc.c 2007-06-03 15:55:31.000000000 +0200
++++ gsm/src/gsmd/vendor_tihtc.c 2007-06-03 15:55:43.000000000 +0200
+@@ -298,6 +298,7 @@
+
+ struct gsmd_vendor_plugin gsmd_vendor_plugin = {
+ .name = "TI Calypso / HTC firmware",
++ .ext_chars = "%",
+ .num_unsolicit = ARRAY_SIZE(tihtc_unsolicit),
+ .unsolicit = tihtc_unsolicit,
+ .detect = &tihtc_detect,
diff --git a/packages/gsm/files/getopt-wait-interpreter-ready.patch b/packages/gsm/files/getopt-wait-interpreter-ready.patch
new file mode 100644
index 0000000000..52b0da1183
--- /dev/null
+++ b/packages/gsm/files/getopt-wait-interpreter-ready.patch
@@ -0,0 +1,57 @@
+Index: gsm/src/gsmd/gsmd.c
+===================================================================
+--- gsm.orig/src/gsmd/gsmd.c 2007-06-03 11:57:43.000000000 +0200
++++ gsm/src/gsmd/gsmd.c 2007-06-03 11:57:45.000000000 +0200
+@@ -311,6 +311,7 @@
+ { "leak-report", 0, NULL, 'L' },
+ { "vendor", 1, NULL, 'v' },
+ { "machine", 1, NULL, 'm' },
++ { "wait", 1, NULL, 'w' },
+ { 0, 0, 0, 0 }
+ };
+
+@@ -333,6 +334,7 @@
+ "\t-l file\t--logfile file\tSpecify a logfile to log to\n"
+ "\t-v\t--vendor v\tSpecify GSM modem vendor plugin\n"
+ "\t-m\t--machine m\tSpecify GSM modem machine plugin\n"
++ "\t-w\t--wait m\tWait for the AT Interpreter Ready message\n"
+ );
+ }
+
+@@ -362,6 +364,7 @@
+ char *logfile = "syslog";
+ char *vendor_name = NULL;
+ char *machine_name = NULL;
++ int wait = -1;
+
+ signal(SIGTERM, sig_handler);
+ signal(SIGINT, sig_handler);
+@@ -374,7 +377,7 @@
+ print_header();
+
+ /*FIXME: parse commandline, set daemonize, device, ... */
+- while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:v:m:", opts, NULL)) != -1) {
++ while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:v:m:w:", opts, NULL)) != -1) {
+ switch (argch) {
+ case 'V':
+ /* FIXME */
+@@ -411,6 +414,9 @@
+ case 'm':
+ machine_name = optarg;
+ break;
++ case 'w':
++ wait = atoi(optarg);
++ break;
+ }
+ }
+
+@@ -455,6 +461,9 @@
+ exit(1);
+ }
+
++ if (wait >= 0)
++ g.interpreter_ready = !wait;
++
+ if (atcmd_init(&g, fd) < 0) {
+ fprintf(stderr, "can't initialize UART device\n");
+ exit(1);
diff --git a/packages/gsm/files/plugin.patch b/packages/gsm/files/plugin.patch
deleted file mode 100644
index 7f455ce718..0000000000
--- a/packages/gsm/files/plugin.patch
+++ /dev/null
@@ -1,935 +0,0 @@
-Index: gsm/include/gsmd/gsmd.h
-===================================================================
---- gsm.orig/include/gsmd/gsmd.h 2007-04-02 09:58:55.000000000 +0200
-+++ gsm/include/gsmd/gsmd.h 2007-04-02 11:03:41.000000000 +0200
-@@ -7,6 +7,7 @@
-
- #include <common/linux_list.h>
-
-+#include <gsmd/machineplugin.h>
- #include <gsmd/vendorplugin.h>
- #include <gsmd/select.h>
- #include <gsmd/state.h>
-@@ -58,12 +59,14 @@
-
- struct gsmd {
- unsigned int flags;
-+ int interpreter_ready;
- struct gsmd_fd gfd_uart;
- struct gsmd_fd gfd_sock;
- struct llparser llp;
- struct llist_head users;
- struct llist_head pending_atcmds; /* our busy gsmd_atcmds */
- struct llist_head busy_atcmds; /* our busy gsmd_atcmds */
-+ struct gsmd_machine_plugin *machinepl;
- struct gsmd_vendor_plugin *vendorpl;
- struct gsmd_device_state dev_state;
-
-Index: gsm/include/gsmd/machineplugin.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/include/gsmd/machineplugin.h 2007-04-02 11:03:41.000000000 +0200
-@@ -0,0 +1,24 @@
-+#ifndef _GSMD_MACHINEPLUG_H
-+#define _GSMD_MACHINEPLUG_H
-+
-+#ifdef __GSMD__
-+
-+#include <common/linux_list.h>
-+#include <gsmd/gsmd.h>
-+
-+struct gsmd;
-+
-+struct gsmd_machine_plugin {
-+ struct llist_head list;
-+ unsigned char *name;
-+ int (*detect)(struct gsmd *g);
-+ int (*init)(struct gsmd *g, int fd);
-+};
-+
-+extern int gsmd_machine_plugin_register(struct gsmd_machine_plugin *pl);
-+extern void gsmd_machine_plugin_unregister(struct gsmd_machine_plugin *pl);
-+extern int gsmd_machine_plugin_find(struct gsmd *g);
-+
-+#endif /* __GSMD__ */
-+
-+#endif
-Index: gsm/src/gsmd/machine_tihtc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/src/gsmd/machine_tihtc.c 2007-04-02 11:03:41.000000000 +0200
-@@ -0,0 +1,71 @@
-+/* TI [Calypso] with HTC firmware machine plugin
-+ *
-+ * Written by Philipp Zabel <philipp.zabel@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <errno.h>
-+#include <sys/ioctl.h>
-+
-+#include "gsmd.h"
-+
-+#include <gsmd/gsmd.h>
-+#include <gsmd/usock.h>
-+#include <gsmd/event.h>
-+#include <gsmd/talloc.h>
-+#include <gsmd/extrsp.h>
-+#include <gsmd/machineplugin.h>
-+
-+#define N_TIHTC 17
-+
-+static int tihtc_detect(struct gsmd *g)
-+{
-+ /* FIXME: do actual detection of machine if we have multiple machines */
-+ return 1;
-+}
-+
-+static int tihtc_init(struct gsmd *g, int fd)
-+{
-+ int ldisc = N_TIHTC;
-+ int rc;
-+
-+ /*
-+ * Himalaya, Blueangel, Alpine and Magican
-+ * power up their GSM chipsets when the
-+ * tty is opened. Wait for the "AT-Command
-+ * Interpreter ready" message before trying
-+ * to send commands.
-+ */
-+ g->interpreter_ready = 0;
-+
-+ /* Set the line discipline to N_TIHTC */
-+ rc = ioctl(fd, TIOCSETD, &ldisc);
-+ if (rc < 0)
-+ fprintf(stderr, "can't set line discipline\n");
-+
-+ return rc;
-+}
-+
-+struct gsmd_machine_plugin gsmd_machine_plugin = {
-+ .name = "TI Calypso / HTC firmware",
-+ .detect = &tihtc_detect,
-+ .init = &tihtc_init,
-+};
-Index: gsm/src/gsmd/machine_generic.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/src/gsmd/machine_generic.c 2007-04-02 11:03:41.000000000 +0200
-@@ -0,0 +1,61 @@
-+/* generic machine plugin
-+ *
-+ * Written by Philipp Zabel <philipp.zabel@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <errno.h>
-+
-+#include "gsmd.h"
-+
-+#include <gsmd/gsmd.h>
-+#include <gsmd/usock.h>
-+#include <gsmd/event.h>
-+#include <gsmd/talloc.h>
-+#include <gsmd/extrsp.h>
-+#include <gsmd/machineplugin.h>
-+
-+static int generic_detect(struct gsmd *g)
-+{
-+ /* FIXME: do actual detection of machine if we have multiple machines */
-+ return 1;
-+}
-+
-+static int generic_init(struct gsmd *g, int fd)
-+{
-+ int rc;
-+
-+ /*
-+ * We assume that the GSM chipset can take
-+ * input immediately, so we don't have to
-+ * wait for the "AT-Command Interpreter ready"
-+ * message before trying to send commands.
-+ */
-+ g->interpreter_ready = 1;
-+
-+ return 0;
-+}
-+
-+struct gsmd_machine_plugin gsmd_machine_plugin = {
-+ .name = "generic",
-+ .detect = &generic_detect,
-+ .init = &generic_init,
-+};
-Index: gsm/src/gsmd/machine.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/src/gsmd/machine.c 2007-04-02 13:43:04.000000000 +0200
-@@ -0,0 +1,140 @@
-+/* gsmd machine plugin core
-+ *
-+ * Written by Philipp Zabel <philipp.zabel@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ */
-+
-+#include <dlfcn.h>
-+#include <errno.h>
-+#include <stdio.h>
-+#include <string.h>
-+
-+#include <common/linux_list.h>
-+
-+#include "gsmd.h"
-+
-+#include <gsmd/gsmd.h>
-+#include <gsmd/machineplugin.h>
-+
-+static LLIST_HEAD(machinepl_list);
-+
-+int gsmd_machine_plugin_register(struct gsmd_machine_plugin *pl)
-+{
-+ llist_add(&pl->list, &machinepl_list);
-+
-+ return 0;
-+}
-+
-+void gsmd_machine_plugin_unregister(struct gsmd_machine_plugin *pl)
-+{
-+ llist_del(&pl->list);
-+}
-+
-+int gsmd_machine_plugin_find(struct gsmd *g)
-+{
-+ struct gsmd_machine_plugin *pl;
-+
-+ if (g->machinepl)
-+ return -EEXIST;
-+
-+ llist_for_each_entry(pl, &machinepl_list, list) {
-+ if (pl->detect(g) == 1) {
-+ DEBUGP("selecting machine plugin \"%s\"\n", pl->name);
-+ g->machinepl = pl;
-+ return 1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+int gsmd_machine_plugin_load(char *name)
-+{
-+ int rc = -1;
-+ void *plugin;
-+ struct gsmd_machine_plugin *pl;
-+ char buf[128];
-+
-+ DEBUGP("loading machine plugin \"%s\"\n", name);
-+
-+ snprintf(buf, sizeof(buf), PLUGINDIR"/libgsmd-machine_%s.so", name);
-+
-+ plugin = dlopen(buf, RTLD_LAZY);
-+ if (!plugin) {
-+ fprintf(stderr, "gsmd_machine_plugin_load: %s\n", dlerror());
-+ return -1;
-+ }
-+
-+ pl = dlsym(plugin, "gsmd_machine_plugin");
-+ if (pl)
-+ rc = gsmd_machine_plugin_register(pl);
-+ else
-+ dlclose(plugin);
-+
-+ return rc;
-+}
-+
-+/* maybe /etc/gsmd/cpuinfo */
-+struct machines {
-+ char *cpuinfo;
-+ char *machine;
-+ char *vendor;
-+} machines[] = {
-+ { "GTA01", "generic", "ti" },
-+ { "HTC Blueangel", "tihtc", "tihtc" },
-+ { "HTC Himalaya", "tihtc", "tihtc" },
-+ { "HTC Magician", "tihtc", "tihtc" },
-+ { "HTC Universal", "generic", "qc" },
-+ { NULL, NULL, NULL },
-+};
-+
-+int gsmd_machine_plugin_init(struct gsmd *g, int fd)
-+{
-+ FILE *cpuinfo;
-+ char buf[1024];
-+ char *line, *machine = NULL;
-+ int i, rc;
-+
-+ cpuinfo = fopen("/proc/cpuinfo", "r");
-+ fread(buf, sizeof(buf), 1, cpuinfo);
-+ fclose(cpuinfo);
-+
-+ line = strtok(buf, "\n");
-+ while (line = strtok(NULL, "\n")) {
-+ if (strncmp(line, "Hardware\t: ", 11) == 0) {
-+ machine = line+11;
-+ break;
-+ }
-+ }
-+ /* FIXME: do this dynamically */
-+ if (machine) {
-+ for (i = 0; machines[i].cpuinfo; i++) {
-+ if (strcmp(machine, machines[i].cpuinfo) == 0) {
-+ DEBUGP("detected %s\n", machine);
-+ rc = gsmd_machine_plugin_load(machines[i].machine);
-+ rc |= gsmd_vendor_plugin_load(machines[i].vendor);
-+ return rc;
-+ }
-+ }
-+ }
-+ /* load generic machine and all vendor plugins */
-+ rc = gsmd_machine_plugin_load("generic");
-+ gsmd_vendor_plugin_load("ti");
-+ gsmd_vendor_plugin_load("tihtc");
-+ gsmd_vendor_plugin_load("qc");
-+ return rc;
-+}
-Index: gsm/src/gsmd/vendor_qc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/src/gsmd/vendor_qc.c 2007-04-02 11:03:41.000000000 +0200
-@@ -0,0 +1,104 @@
-+/* Qualcomm [msm6250] gsmd plugin
-+ *
-+ * Written by Philipp Zabel <philipp.zabel@gmail.com>
-+ * based on vendor_ti.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <errno.h>
-+
-+#include "gsmd.h"
-+
-+#include <gsmd/gsmd.h>
-+#include <gsmd/usock.h>
-+#include <gsmd/event.h>
-+#include <gsmd/talloc.h>
-+#include <gsmd/extrsp.h>
-+#include <gsmd/atcmd.h>
-+#include <gsmd/vendorplugin.h>
-+#include <gsmd/unsolicited.h>
-+
-+static int htccsq_parse(char *buf, int len, const char *param,
-+ struct gsmd *gsmd)
-+{
-+ char *tok;
-+ struct gsmd_evt_auxdata *aux;
-+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
-+ sizeof(*aux));
-+ static int rssi_table[] = { 0,5,10,15,20,25,99 }; /* FIXME */
-+ unsigned int i;
-+
-+ DEBUGP("entering htccsq_parse param=`%s'\n", param);
-+ if (!ucmd)
-+ return -EINVAL;
-+
-+
-+ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
-+
-+ i = atoi(buf);
-+ if (i > 6)
-+ i = 6;
-+ aux->u.signal.sigq.rssi = rssi_table[atoi(buf)];
-+ aux->u.signal.sigq.ber = 99;
-+
-+ DEBUGP("sending EVT_SIGNAL\n");
-+ usock_evt_send(gsmd, ucmd, GSMD_EVT_SIGNAL);
-+
-+ return 0;
-+
-+out_free_io:
-+ free(ucmd);
-+ return -EIO;
-+}
-+
-+static const struct gsmd_unsolicit qc_unsolicit[] = {
-+ { "@HTCCSQ", &htccsq_parse }, /* Signal Quality */
-+
-+ /* FIXME: parse the below and generate the respective events */
-+
-+ /* %CGREG: reports extended information about GPRS registration state */
-+};
-+
-+static int qc_detect(struct gsmd *g)
-+{
-+ /* FIXME: do actual detection of vendor if we have multiple vendors */
-+ /* open /proc/cpuinfo and check for HTC Universal? */
-+ return 1;
-+}
-+
-+static int qc_initsettings(struct gsmd *g)
-+{
-+ int rc;
-+ struct gsmd_atcmd *cmd;
-+
-+ /* enable @HTCCSQ: signal quality reports */
-+ rc |= gsmd_simplecmd(g, "AT@HTCCSQ=1");
-+
-+ return rc;
-+}
-+
-+struct gsmd_vendor_plugin gsmd_vendor_plugin = {
-+ .name = "Qualcomm msm6250",
-+ .num_unsolicit = ARRAY_SIZE(qc_unsolicit),
-+ .unsolicit = qc_unsolicit,
-+ .detect = &qc_detect,
-+ .initsettings = &qc_initsettings,
-+};
-Index: gsm/src/gsmd/Makefile.am
-===================================================================
---- gsm.orig/src/gsmd/Makefile.am 2007-04-02 09:58:55.000000000 +0200
-+++ gsm/src/gsmd/Makefile.am 2007-04-02 13:33:11.000000000 +0200
-@@ -1,11 +1,26 @@
- INCLUDES = $(all_includes) -I$(top_srcdir)/include
- AM_CFLAGS = -std=gnu99
-+plugindir = $(libdir)/gsmd
-
- sbin_PROGRAMS = gsmd
-
--gsmd_SOURCES = gsmd.c atcmd.c select.c vendor.c usock.c unsolicited.c log.c \
-- vendor_ti.c talloc.c operator_cache.c ext_response.c
--#gsmd_LDADD = ../libgsmd/libgsmd.la
--#gsmd_LDFLAGS = -dynamic
-+gsmd_CFLAGS = -D PLUGINDIR=\"$(plugindir)\"
-+gsmd_SOURCES = gsmd.c atcmd.c select.c machine.c vendor.c unsolicited.c log.c \
-+ usock.c talloc.c operator_cache.c ext_response.c
-+gsmd_LDADD = -ldl
-+gsmd_LDFLAGS = -Wl,--export-dynamic
-+
-+plugin_LTLIBRARIES = libgsmd-machine_generic.la \
-+ libgsmd-machine_tihtc.la \
-+ libgsmd-vendor_ti.la \
-+ libgsmd-vendor_tihtc.la \
-+ libgsmd-vendor_qc.la
-+
-+libgsmd_machine_generic_la_SOURCES = machine_generic.c
-+libgsmd_machine_tihtc_la_SOURCES = machine_tihtc.c
-+
-+libgsmd_vendor_ti_la_SOURCES = vendor_ti.c
-+libgsmd_vendor_tihtc_la_SOURCES = vendor_tihtc.c
-+libgsmd_vendor_qc_la_SOURCES = vendor_qc.c
-
- noinst_HEADERS = gsmd.h
-Index: gsm/src/gsmd/atcmd.c
-===================================================================
---- gsm.orig/src/gsmd/atcmd.c 2007-04-02 11:03:40.000000000 +0200
-+++ gsm/src/gsmd/atcmd.c 2007-04-02 11:03:41.000000000 +0200
-@@ -183,6 +183,7 @@
- * an empty string or that 'ready' string, we need to init the modem */
- if (strlen(buf) == 0 ||
- !strcmp(buf, "AT-Command Interpreter ready")) {
-+ g->interpreter_ready = 1;
- gsmd_initsettings(g);
- return 0;
- }
-@@ -370,7 +371,7 @@
- }
-
- /* write pending commands to UART */
-- if (what & GSMD_FD_WRITE) {
-+ if ((what & GSMD_FD_WRITE) && g->interpreter_ready) {
- struct gsmd_atcmd *pos, *pos2;
- llist_for_each_entry_safe(pos, pos2, &g->pending_atcmds, list) {
- len = strlen(pos->buf);
-Index: gsm/src/gsmd/vendor_tihtc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gsm/src/gsmd/vendor_tihtc.c 2007-04-02 13:16:45.000000000 +0200
-@@ -0,0 +1,305 @@
-+/* TI [Calypso] with HTC firmware gsmd plugin
-+ *
-+ * Written by Philipp Zabel <philipp.zabel@gmail.com>
-+ * based on vendor_ti.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <errno.h>
-+
-+#include "gsmd.h"
-+
-+#include <gsmd/gsmd.h>
-+#include <gsmd/usock.h>
-+#include <gsmd/event.h>
-+#include <gsmd/talloc.h>
-+#include <gsmd/extrsp.h>
-+#include <gsmd/atcmd.h>
-+#include <gsmd/vendorplugin.h>
-+#include <gsmd/unsolicited.h>
-+
-+static int gsmd_test_atcb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
-+{
-+ printf("`%s' returned `%s'\n", cmd->buf, resp);
-+ return 0;
-+}
-+
-+int gsmd_simplecmd(struct gsmd *gsmd, char *cmdtxt)
-+{
-+ struct gsmd_atcmd *cmd;
-+ cmd = atcmd_fill(cmdtxt, strlen(cmdtxt)+1, &gsmd_test_atcb, NULL, 0);
-+ if (!cmd)
-+ return -ENOMEM;
-+
-+ return atcmd_submit(gsmd, cmd);
-+}
-+
-+
-+#if 0
-+#include "vendorplugin.h"
-+
-+static int
-+ti_getopt(struct gsmd *gh, int optname, void *optval, int *optlen)
-+{
-+ switch (optname) {
-+ case GSMD_OPT_CIPHER_IND:
-+ /* FIXME: send AT%CPRI=? */
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+static int
-+ti_setopt(struct gsmd *gh, int optname, const void *optval, int optlen)
-+{
-+ switch (optname) {
-+ case GSMD_OPT_CIPHER_IND:
-+ /* FIXME: send AT%CPRI= */
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+#endif
-+
-+
-+static int htccsq_parse(char *buf, int len, const char *param,
-+ struct gsmd *gsmd)
-+{
-+ char *tok;
-+ struct gsmd_evt_auxdata *aux;
-+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
-+ sizeof(*aux));
-+
-+ DEBUGP("entering htccsq_parse param=`%s'\n", param);
-+ if (!ucmd)
-+ return -EINVAL;
-+
-+
-+ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
-+
-+ /* FIXME: contains values 1-5, should be mapped to 0-31 somehow? */
-+ /* 2 --> 11 */
-+ aux->u.signal.sigq.rssi = atoi(buf);
-+ aux->u.signal.sigq.ber = 99;
-+
-+ DEBUGP("sending EVT_SIGNAL\n");
-+ usock_evt_send(gsmd, ucmd, GSMD_EVT_SIGNAL);
-+
-+ return 0;
-+
-+out_free_io:
-+ free(ucmd);
-+ return -EIO;
-+}
-+
-+static int cpri_parse(char *buf, int len, const char *param, struct gsmd *gsmd)
-+{
-+ char *tok1, *tok2;
-+
-+ tok1 = strtok(buf, ",");
-+ if (!tok1)
-+ return -EIO;
-+
-+ tok2 = strtok(NULL, ",");
-+ if (!tok2) {
-+ switch (atoi(tok1)) {
-+ case 0:
-+ gsmd->dev_state.ciph_ind.flags &= ~GSMD_CIPHIND_ACTIVE;
-+ break;
-+ case 1:
-+ gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_ACTIVE;
-+ break;
-+ case 2:
-+ gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_DISABLED_SIM;
-+ break;
-+ }
-+ } else {
-+ struct gsmd_evt_auxdata *aux;
-+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
-+ GSMD_EVT_CIPHER,
-+ sizeof(*aux));
-+ if (!ucmd)
-+ return -ENOMEM;
-+
-+ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
-+
-+ aux->u.cipher.net_state_gsm = atoi(tok1);
-+ aux->u.cipher.net_state_gsm = atoi(tok2);
-+
-+ usock_evt_send(gsmd, ucmd, GSMD_EVT_CIPHER);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Call Progress Information */
-+static int cpi_parse(char *buf, int len, const char *param, struct gsmd *gsmd)
-+{
-+ char *tok;
-+ struct gsmd_evt_auxdata *aux;
-+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
-+ GSMD_EVT_OUT_STATUS,
-+ sizeof(*aux));
-+
-+ DEBUGP("entering cpi_parse param=`%s'\n", param);
-+ if (!ucmd)
-+ return -EINVAL;
-+
-+ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
-+
-+ /* Format: cId, msgType, ibt, tch, dir,[mode],[number],[type],[alpha],[cause],line */
-+
-+ /* call ID */
-+ tok = strtok(buf, ",");
-+ if (!tok)
-+ goto out_free_io;
-+
-+ /* message type (layer 3) */
-+ tok = strtok(NULL, ",");
-+ if (!tok)
-+ goto out_free_io;
-+ aux->u.call_status.prog = atoi(tok);
-+
-+ /* in-band tones */
-+ tok = strtok(NULL, ",");
-+ if (!tok)
-+ goto out_free_io;
-+
-+ if (*tok == '1')
-+ aux->u.call_status.ibt = 1;
-+ else
-+ aux->u.call_status.ibt = 0;
-+
-+ /* TCH allocated */
-+ tok = strtok(NULL, ",");
-+ if (!tok)
-+ goto out_free_io;
-+
-+ if (*tok == '1')
-+ aux->u.call_status.tch = 1;
-+ else
-+ aux->u.call_status.tch = 0;
-+
-+ /* direction */
-+ tok = strtok(NULL, ",");
-+ if (!tok)
-+ goto out_send;
-+
-+ switch (*tok) {
-+ case '0':
-+ case '1':
-+ case '2':
-+ case '3':
-+ aux->u.call_status.dir = (*tok - '0');
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ /* mode */
-+ tok = strtok(NULL, ",");
-+ if (!tok)
-+ goto out_send;
-+
-+out_send:
-+ usock_evt_send(gsmd, ucmd, GSMD_EVT_OUT_STATUS);
-+
-+ return 0;
-+
-+out_free_io:
-+ talloc_free(ucmd);
-+ return -EIO;
-+}
-+
-+static const struct gsmd_unsolicit tihtc_unsolicit[] = {
-+ { "%HTCCSQ", &htccsq_parse }, /* Signal Quality */
-+ { "%CPRI", &cpri_parse }, /* Ciphering Indication */
-+ { "%CPI", &cpi_parse }, /* Call Progress Information */
-+
-+ /* FIXME: parse the below and generate the respective events */
-+
-+ /* %CGREG: reports extended information about GPRS registration state */
-+};
-+
-+static int cpi_detect_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
-+{
-+ struct gsmd *g = ctx;
-+ struct gsm_extrsp *er;
-+
-+ if (strncmp(resp, "%CPI: ", 6))
-+ return -EINVAL;
-+ resp += 6;
-+
-+ er = extrsp_parse(cmd, resp);
-+ if (!er)
-+ return -EINVAL;
-+
-+ if (extrsp_supports(er, 0, 3))
-+ return gsmd_simplecmd(g, "AT%CPI=3");
-+ else if (extrsp_supports(er, 0, 2))
-+ return gsmd_simplecmd(g, "AT%CPI=2");
-+ else
-+ DEBUGP("Call Progress Indication mode 2 or 3 not supported!!\n");
-+
-+ talloc_free(er);
-+ return 0;
-+}
-+
-+static int tihtc_detect(struct gsmd *g)
-+{
-+ /* FIXME: do actual detection of vendor if we have multiple vendors */
-+ /* open /proc/cpuinfo and check for HTC Magician or HTC Blueangel? */
-+ /* check for N_TIHTC ldisc? or set it ourselves? */
-+ return 1;
-+}
-+
-+static int tihtc_initsettings(struct gsmd *g)
-+{
-+ int rc;
-+ struct gsmd_atcmd *cmd;
-+
-+ /* use %CGREG */
-+ //rc |= gsmd_simplecmd(g, "AT%CGREG=3");
-+ /* enable %CPRI: ciphering indications */
-+ rc |= gsmd_simplecmd(g, "AT%CPRI=1");
-+ /* enable %HTCCSQ: signal quality reports */
-+ rc |= gsmd_simplecmd(g, "AT%HTCCSQ=1");
-+ /* send unsolicited commands at any time */
-+ rc |= gsmd_simplecmd(g, "AT%CUNS=0");
-+
-+ /* enable %CPI: call progress indication */
-+ cmd = atcmd_fill("AT%CPI=?", 9, &cpi_detect_cb, g, 0);
-+ if (cmd)
-+ atcmd_submit(g, cmd);
-+
-+ return rc;
-+}
-+
-+struct gsmd_vendor_plugin gsmd_vendor_plugin = {
-+ .name = "TI Calypso / HTC firmware",
-+ .num_unsolicit = ARRAY_SIZE(tihtc_unsolicit),
-+ .unsolicit = tihtc_unsolicit,
-+ .detect = &tihtc_detect,
-+ .initsettings = &tihtc_initsettings,
-+};
-Index: gsm/src/gsmd/vendor_ti.c
-===================================================================
---- gsm.orig/src/gsmd/vendor_ti.c 2007-04-02 09:58:55.000000000 +0200
-+++ gsm/src/gsmd/vendor_ti.c 2007-04-02 11:03:41.000000000 +0200
-@@ -301,16 +301,10 @@
- return rc;
- }
-
--static struct gsmd_vendor_plugin plugin_ticalypso = {
-+struct gsmd_vendor_plugin gsmd_vendor_plugin = {
- .name = "TI Calypso",
- .num_unsolicit = ARRAY_SIZE(ticalypso_unsolicit),
- .unsolicit = ticalypso_unsolicit,
- .detect = &ticalypso_detect,
- .initsettings = &ticalypso_initsettings,
- };
--
--/* FIXME: this will be _init() when we make this a plugin */
--int ticalypso_init(void)
--{
-- return gsmd_vendor_plugin_register(&plugin_ticalypso);
--}
-Index: gsm/src/gsmd/gsmd.c
-===================================================================
---- gsm.orig/src/gsmd/gsmd.c 2007-04-02 09:58:55.000000000 +0200
-+++ gsm/src/gsmd/gsmd.c 2007-04-02 13:39:40.000000000 +0200
-@@ -254,6 +254,21 @@
- exit(1);
- }
-
-+ if (gsmd_machine_plugin_init(&g) < 0) {
-+ fprintf(stderr, "no machine plugins found\n");
-+ exit(1);
-+ }
-+
-+ /* select a machine plugin and load possible vendor plugins */
-+ gsmd_machine_plugin_find(&g);
-+
-+ /* initialize the machine plugin */
-+ if (g.machinepl->init)
-+ if (g.machinepl->init(&g, fd) < 0) {
-+ fprintf(stderr, "couldn't initialize machine plugin\n");
-+ exit(1);
-+ }
-+
- if (atcmd_init(&g, fd) < 0) {
- fprintf(stderr, "can't initialize UART device\n");
- exit(1);
-@@ -275,12 +290,11 @@
- setsid();
- }
-
-- /* FIXME: do this dynamically */
-- ticalypso_init();
--
-+ /* select a vendor plugin */
- gsmd_vendor_plugin_find(&g);
-
-- gsmd_initsettings(&g);
-+ if (g.interpreter_ready)
-+ gsmd_initsettings(&g);
-
- gsmd_opname_init(&g);
-
-Index: gsm/src/gsmd/vendor.c
-===================================================================
---- gsm.orig/src/gsmd/vendor.c 2007-04-02 09:58:55.000000000 +0200
-+++ gsm/src/gsmd/vendor.c 2007-04-02 13:38:38.000000000 +0200
-@@ -20,7 +20,10 @@
- *
- */
-
-+#include <dlfcn.h>
- #include <errno.h>
-+#include <stdio.h>
-+#include <string.h>
-
- #include <common/linux_list.h>
-
-@@ -52,6 +55,7 @@
-
- llist_for_each_entry(pl, &vendorpl_list, list) {
- if (pl->detect(g) == 1) {
-+ DEBUGP("selecting vendor plugin \"%s\"\n", pl->name);
- g->vendorpl = pl;
- return 1;
- }
-@@ -59,3 +63,29 @@
-
- return 0;
- }
-+
-+int gsmd_vendor_plugin_load(char *name)
-+{
-+ int rc = -1;
-+ void *lib;
-+ struct gsmd_vendor_plugin *pl;
-+ char buf[128];
-+
-+ DEBUGP("loading vendor plugin \"%s\"\n", name);
-+
-+ snprintf(buf, sizeof(buf), PLUGINDIR"/libgsmd-vendor_%s.so", name);
-+
-+ lib = dlopen(buf, RTLD_LAZY);
-+ if (!lib) {
-+ fprintf(stderr, "gsmd_vendor_plugin_load: %s\n", dlerror());
-+ return -1;
-+ }
-+
-+ pl = dlsym(lib, "gsmd_vendor_plugin");
-+ if (pl)
-+ rc = gsmd_vendor_plugin_register(pl);
-+ else
-+ dlclose(lib);
-+
-+ return rc;
-+}
diff --git a/packages/gsm/files/qualcomm-extreply.patch b/packages/gsm/files/qualcomm-extreply.patch
deleted file mode 100644
index 010a8c9f31..0000000000
--- a/packages/gsm/files/qualcomm-extreply.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: gsm/src/gsmd/atcmd.c
-===================================================================
---- gsm.orig/src/gsmd/atcmd.c 2007-04-02 09:59:16.000000000 +0200
-+++ gsm/src/gsmd/atcmd.c 2007-04-02 10:10:54.000000000 +0200
-@@ -207,7 +207,7 @@
- * TBD
- */
-
-- if (buf[0] == '+' || buf[0] == '%') {
-+ if (buf[0] == '+' || buf[0] == '%' || buf[0] == '@') {
- /* an extended response */
- const char *colon = strchr(buf, ':');
- if (!colon) {
diff --git a/packages/gsm/files/tihtc-csq-fix.patch b/packages/gsm/files/tihtc-csq-fix.patch
new file mode 100644
index 0000000000..3346d85809
--- /dev/null
+++ b/packages/gsm/files/tihtc-csq-fix.patch
@@ -0,0 +1,27 @@
+Index: gsm/src/gsmd/vendor_tihtc.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor_tihtc.c 2007-06-03 16:26:39.000000000 +0200
++++ gsm/src/gsmd/vendor_tihtc.c 2007-06-03 16:26:41.000000000 +0200
+@@ -90,6 +90,8 @@
+ struct gsmd_evt_auxdata *aux;
+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
+ sizeof(*aux));
++ static int rssi_table[] = { 0,5,10,15,20,25,99 };
++ unsigned int i;
+
+ DEBUGP("entering htccsq_parse param=`%s'\n", param);
+ if (!ucmd)
+@@ -98,9 +100,10 @@
+
+ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
+
+- /* FIXME: contains values 1-5, should be mapped to 0-31 somehow? */
+- /* 2 --> 11 */
+- aux->u.signal.sigq.rssi = atoi(buf);
++ i = atoi(buf);
++ if (i > 6)
++ i = 6;
++ aux->u.signal.sigq.rssi = rssi_table[atoi(buf)];
+ aux->u.signal.sigq.ber = 99;
+
+ DEBUGP("sending EVT_SIGNAL\n");
diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb
index 0215bb92b9..230d4d6fe5 100644
--- a/packages/gsm/libgsmd_svn.bb
+++ b/packages/gsm/libgsmd_svn.bb
@@ -4,16 +4,17 @@ LICENSE = "GPL"
SECTION = "libs/gsm"
PROVIDES += "gsmd"
PV = "0.0+svn${SRCDATE}"
-PR = "r10"
+PR = "r13"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://gsmd \
- file://default"
-S = "${WORKDIR}/gsm"
+ file://default \
+ file://extreplychars.patch;patch=1 \
+ file://getopt-wait-interpreter-ready.patch;patch=1 \
+ file://alive-start-if-interpreter-ready.patch;patch=1 \
+ file://tihtc-csq-fix.patch;patch=1"
-SRC_URI_append_magician = " file://plugin.patch;patch=1"
-SRC_URI_append_htcuniversal = " file://plugin.patch;patch=1 \
- file://qualcomm-extreply.patch;patch=1"
+S = "${WORKDIR}/gsm"
inherit autotools pkgconfig update-rc.d
diff --git a/packages/gsoap/gsoap_2.7.7.bb b/packages/gsoap/gsoap_2.7.7.bb
index 170c251aaf..799c4a13f3 100644
--- a/packages/gsoap/gsoap_2.7.7.bb
+++ b/packages/gsoap/gsoap_2.7.7.bb
@@ -22,5 +22,4 @@ do_install_append() {
done
}
-PACKAGES = "gsoap-dev"
FILES_gsoap-dev = "${bindir}/wsdl2h ${bindir}/soapcpp2 ${libdir}"
diff --git a/packages/libmpeg2/.mtn2git_empty b/packages/gspcav1/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libmpeg2/.mtn2git_empty
+++ b/packages/gspcav1/files/.mtn2git_empty
diff --git a/packages/gspcav1/gspcav1-20070110/MS.patch b/packages/gspcav1/files/MS.patch
index 588a4bc3da..588a4bc3da 100644
--- a/packages/gspcav1/gspcav1-20070110/MS.patch
+++ b/packages/gspcav1/files/MS.patch
diff --git a/packages/gspcav1/gspcav1-20070110/Makefile.patch b/packages/gspcav1/files/Makefile.patch
index 87262686cb..87262686cb 100644
--- a/packages/gspcav1/gspcav1-20070110/Makefile.patch
+++ b/packages/gspcav1/files/Makefile.patch
diff --git a/packages/gspcav1/gspcav1_20070110.bb b/packages/gspcav1/gspcav1_20070110.bb
index 86cb1010df..e1fc443d36 100644
--- a/packages/gspcav1/gspcav1_20070110.bb
+++ b/packages/gspcav1/gspcav1_20070110.bb
@@ -4,7 +4,9 @@ PRIORITY = "optional"
SECTION = "kernel/modules"
LICENSE = "GPL"
-SRC_URI = "http://mxhaard.free.fr/spca50x/Download/${PN}-${PV}.tar.gz \
+PR = "r1"
+
+SRC_URI = "http://mxhaard.free.fr/spca50x/Download/oldrelease/${PN}-${PV}.tar.gz \
file://Makefile.patch;patch=1 \
file://MS.patch;patch=1"
diff --git a/packages/gspcav1/gspcav1_20070508.bb b/packages/gspcav1/gspcav1_20070508.bb
new file mode 100644
index 0000000000..14c98e3e3a
--- /dev/null
+++ b/packages/gspcav1/gspcav1_20070508.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "USB Webcam driver for spca5xx chipset family supporting \
+over 100 models of camera"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+
+DEFAULT_PREFERENCE = "-1"
+
+PR = "r1"
+
+SRC_URI = "http://mxhaard.free.fr/spca50x/Download/oldrelease/${PN}-${PV}.tar.gz \
+ file://Makefile.patch;patch=1 \
+ file://MS.patch;patch=1"
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+inherit module
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake 'KERNELDIR=${STAGING_KERNEL_DIR}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+}
diff --git a/packages/gtk+/composite-pixbuf_0.0.bb b/packages/gtk+/composite-pixbuf_0.0.bb
new file mode 100644
index 0000000000..729343fb44
--- /dev/null
+++ b/packages/gtk+/composite-pixbuf_0.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Pixbuf performance test"
+LICENSE = "Public domain"
+DEPENDS = "gtk+"
+
+SRC_URI = "http://amelang.net/composite_pixbuf.c"
+
+S = "${WORKDIR}"
+
+do_compile() {
+ ${CC} ${CFLAGS} composite_pixbuf.c -o composite_pixbuf \
+ `pkg-config --cflags gdk-2.0` `pkg-config --libs gdk-2.0` `pkg-config --libs x11` `pkg-config --libs pango` \
+ -lxcb -lXext -lXinerama -lXrandr -lXcursor -lXfixes -lpangoft2-1.0 -lz -lexpat -lxcb-xlib -lXau -lXdmcp
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 composite_pixbuf ${D}${bindir}
+}
diff --git a/packages/gtk+/gtk-2.10.inc b/packages/gtk+/gtk-2.10.inc
index 6f9035055b..7f610294d1 100644
--- a/packages/gtk+/gtk-2.10.inc
+++ b/packages/gtk+/gtk-2.10.inc
@@ -27,9 +27,11 @@ FILES_${PN}-dbg += " \
${libdir}/gtk-2.0/${LIBV}/engines/.debug/*"
-RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans"
-RRECOMMENDS_${PN}_angstrom = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-RRECOMMENDS_${PN}_openzaurus = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
+RRECOMMENDS_${PN} = " ttf-dejavu-sans"
+RRECOMMENDS_${PN}_angstrom += " gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
+RRECOMMENDS_${PN}_openzaurus += " gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
+RRECOMMENDS_${PN}_linux += " glibc-gconv-iso8859-1"
+
EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
diff --git a/packages/gtk-engines/gtk-engines_2.2.0.bb b/packages/gtk-engines/gtk-engines_2.2.0.bb
deleted file mode 100644
index 5572568f61..0000000000
--- a/packages/gtk-engines/gtk-engines_2.2.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/base"
-DESCRIPTION = "GTK theme engines"
-DEPENDS = "gtk+"
-
-PACKAGES += " gtk-engine-pixmap gtk-engine-redmond95 gtk-engine-metal gtk-theme-metal gtk-theme-redmond95"
-FILES_gtk-engine-pixmap = "${libdir}/gtk-2.0/*/engines/libpixmap.so"
-FILES_gtk-engine-redmond95 = "${libdir}/gtk-2.0/*/engines/libredmond95.so"
-FILES_gtk-engine-metal = "${libdir}/gtk-2.0/*/engines/libmetal.so"
-FILES_gtk-theme-redmond95 = "${datadir}/themes/Redmond95"
-FILES_gtk-theme-metal = "${datadir}/themes/Metal"
-DEPENDS_gtk-theme-redmond95 = "gtk-engine-redmond95"
-DEPENDS_gtk-theme-metal = "gtk-engine-metal"
-
-SRC_URI = "${GNOME_MIRROR}/${PN}/2.2/${PN}-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
diff --git a/packages/gtk-engines/gtk-engines_2.6.1.bb b/packages/gtk-engines/gtk-engines_2.6.1.bb
deleted file mode 100644
index 6e192d78fd..0000000000
--- a/packages/gtk-engines/gtk-engines_2.6.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/base"
-DESCRIPTION = "GTK theme engines"
-DEPENDS = "gtk+"
-
-RDEPENDS_gtk-theme-redmond = "gtk-engine-redmond95"
-RDEPENDS_gtk-theme-metal = "gtk-engine-metal"
-RDEPENDS_gtk-theme-mist = "gtk-engine-mist"
-RDEPENDS_gtk-theme-crux = "gtk-engine-crux-engine"
-RDEPENDS_gtk-theme-lighthouseblue = "gtk-engine-lighthouseblue"
-RDEPENDS_gtk-theme-thinice = "gtk-engine-thinice"
-RDEPENDS_gtk-theme-industrial = "gtk-engine-industrial"
-
-SRC_URI = "${GNOME_MIRROR}/${PN}/2.6/${PN}-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
-
-PACKAGES_DYNAMIC = "gtk-engine-* gtk-theme-*"
-
-python populate_packages_prepend() {
- import os.path
-
- engines_root = os.path.join(bb.data.getVar('libdir', d, 1), "gtk-2.0/2.4.0/engines")
- themes_root = os.path.join(bb.data.getVar('datadir', d, 1), "themes")
-
- do_split_packages(d, engines_root, '^lib(.*)\.so$', 'gtk-engine-%s', 'GTK %s theme engine', extra_depends='')
- do_split_packages(d, themes_root, '(.*)', 'gtk-theme-%s', 'GTK theme %s', allow_dirs=True, extra_depends='')
-}
-
diff --git a/packages/gtk-engines/gtk-engines_2.6.3.bb b/packages/gtk-engines/gtk-engines_2.6.3.bb
deleted file mode 100644
index 6e192d78fd..0000000000
--- a/packages/gtk-engines/gtk-engines_2.6.3.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/base"
-DESCRIPTION = "GTK theme engines"
-DEPENDS = "gtk+"
-
-RDEPENDS_gtk-theme-redmond = "gtk-engine-redmond95"
-RDEPENDS_gtk-theme-metal = "gtk-engine-metal"
-RDEPENDS_gtk-theme-mist = "gtk-engine-mist"
-RDEPENDS_gtk-theme-crux = "gtk-engine-crux-engine"
-RDEPENDS_gtk-theme-lighthouseblue = "gtk-engine-lighthouseblue"
-RDEPENDS_gtk-theme-thinice = "gtk-engine-thinice"
-RDEPENDS_gtk-theme-industrial = "gtk-engine-industrial"
-
-SRC_URI = "${GNOME_MIRROR}/${PN}/2.6/${PN}-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
-
-PACKAGES_DYNAMIC = "gtk-engine-* gtk-theme-*"
-
-python populate_packages_prepend() {
- import os.path
-
- engines_root = os.path.join(bb.data.getVar('libdir', d, 1), "gtk-2.0/2.4.0/engines")
- themes_root = os.path.join(bb.data.getVar('datadir', d, 1), "themes")
-
- do_split_packages(d, engines_root, '^lib(.*)\.so$', 'gtk-engine-%s', 'GTK %s theme engine', extra_depends='')
- do_split_packages(d, themes_root, '(.*)', 'gtk-theme-%s', 'GTK theme %s', allow_dirs=True, extra_depends='')
-}
-
diff --git a/packages/gtk-engines/gtk-engines_2.6.5.bb b/packages/gtk-engines/gtk-engines_2.6.5.bb
index 6e192d78fd..e795791cfc 100644
--- a/packages/gtk-engines/gtk-engines_2.6.5.bb
+++ b/packages/gtk-engines/gtk-engines_2.6.5.bb
@@ -1,7 +1,9 @@
-LICENSE = "GPL"
-SECTION = "x11/base"
DESCRIPTION = "GTK theme engines"
+SECTION = "x11/base"
+PRIORITY = "optional"
+LICENSE = "GPL"
DEPENDS = "gtk+"
+PR = "r1"
RDEPENDS_gtk-theme-redmond = "gtk-engine-redmond95"
RDEPENDS_gtk-theme-metal = "gtk-engine-metal"
@@ -20,10 +22,11 @@ PACKAGES_DYNAMIC = "gtk-engine-* gtk-theme-*"
python populate_packages_prepend() {
import os.path
- engines_root = os.path.join(bb.data.getVar('libdir', d, 1), "gtk-2.0/2.4.0/engines")
+ engines_ver = ['gtk-2.0/', gtkbinver_find(d), '/engines']
+
+ engines_root = os.path.join(bb.data.getVar('libdir', d, 1), ''.join(engines_ver))
themes_root = os.path.join(bb.data.getVar('datadir', d, 1), "themes")
do_split_packages(d, engines_root, '^lib(.*)\.so$', 'gtk-engine-%s', 'GTK %s theme engine', extra_depends='')
do_split_packages(d, themes_root, '(.*)', 'gtk-theme-%s', 'GTK theme %s', allow_dirs=True, extra_depends='')
}
-
diff --git a/packages/gtk-engines/gtk-smooth-engine_0.5.8.bb b/packages/gtk-engines/gtk-smooth-engine_0.5.8.bb
index 95a8d87d9c..28888c45ba 100644
--- a/packages/gtk-engines/gtk-smooth-engine_0.5.8.bb
+++ b/packages/gtk-engines/gtk-smooth-engine_0.5.8.bb
@@ -1,11 +1,22 @@
-PR = "r0"
-LICENSE = "LGPL"
-SECTION = "x11/base"
DESCRIPTION = "GTK theme engine Smooth"
+SECTION = "x11/base"
+PRIORITY = "optional"
+LICENSE = "LGPL"
DEPENDS = "gtk+"
-
-FILES_${PN} = "${libdir}/gtk-2.0/2.4.0/engines/libsmooth.so"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/smooth-engine/${PN}-${PV}.tar.gz"
inherit autotools pkgconfig
+
+python populate_packages_prepend() {
+ import os.path
+
+ engines_ver = ['gtk-2.0/', gtkbinver_find(d), '/engines']
+
+ engines_root = os.path.join(bb.data.getVar('libdir', d, 1), ''.join(engines_ver))
+ themes_root = os.path.join(bb.data.getVar('datadir', d, 1), "themes")
+
+ do_split_packages(d, engines_root, '^lib(.*)\.so$', 'gtk-engine-%s', 'GTK %s theme engine', extra_depends='')
+ do_split_packages(d, themes_root, '(.*)', 'gtk-theme-%s', 'GTK theme %s', allow_dirs=True, extra_depends='')
+}
diff --git a/packages/gtkhtml/gtkhtml-2.0_2.6.3.bb b/packages/gtkhtml/gtkhtml-2.0_2.6.3.bb
index 33b0423e25..f44e8b57a6 100644
--- a/packages/gtkhtml/gtkhtml-2.0_2.6.3.bb
+++ b/packages/gtkhtml/gtkhtml-2.0_2.6.3.bb
@@ -1,22 +1,15 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
+require gtkhtml.inc
+
DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui gal-2.0"
PR = "r0"
-inherit gnome
-
SRC_URI = "http://ftp.debian.org/debian/pool/main/libg/libgtkhtml2/libgtkhtml2_2.6.3.orig.tar.gz"
-
FILES_${PN} += "${datadir}/gtkhtml-3.0 ${libdir}/gtkhtml/*.so"
FILES_${PN}-dev += "${libdir}/gtkhtml"
-S = "${WORKDIR}/libgtkhtml2-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
- mv src/libgtkhtml.pc src/libgtkhtml-2.0.pc || true
+ mv src/libgtkhtml.pc src/libgtkhtml-2.0.pc || true
autotools_stage_all
}
diff --git a/packages/gtkhtml/gtkhtml-3.0_3.0.10.bb b/packages/gtkhtml/gtkhtml-3.0_3.0.10.bb
index d27f72ae4a..66993cec74 100644
--- a/packages/gtkhtml/gtkhtml-3.0_3.0.10.bb
+++ b/packages/gtkhtml/gtkhtml-3.0_3.0.10.bb
@@ -1,18 +1,12 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
+require gtkhtml.inc
+
DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui gal-2.0"
PR = "r2"
-inherit gnome
-
SRC_URI = "${GNOME_MIRROR}/gtkhtml/3.0/gtkhtml-${PV}.tar.bz2 \
file://fix-missing-colormap.patch;patch=1"
FILES_${PN} += "${datadir}/gtkhtml-3.0 ${libdir}/gtkhtml/*.so"
FILES_${PN}-dev += "${libdir}/gtkhtml"
-S = "${WORKDIR}/gtkhtml-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
mv src/libgtkhtml.pc src/libgtkhtml-3.0.pc || true
diff --git a/packages/gtkhtml/gtkhtml-3.1_3.1.16.bb b/packages/gtkhtml/gtkhtml-3.1_3.1.16.bb
index 2b57a0b2c4..1e389dabe0 100644
--- a/packages/gtkhtml/gtkhtml-3.1_3.1.16.bb
+++ b/packages/gtkhtml/gtkhtml-3.1_3.1.16.bb
@@ -1,15 +1,9 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
-DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
+require gtkhtml.inc
-inherit gnome
+DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
SRC_URI = "${GNOME_MIRROR}/gtkhtml/3.1/gtkhtml-${PV}.tar.bz2"
FILES_${PN} += "${datadir}/gtkhtml-3.1"
-S = "${WORKDIR}/gtkhtml-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
mv src/libgtkhtml.pc src/libgtkhtml-3.1.pc || true
diff --git a/packages/gtkhtml/gtkhtml-3.6_3.6.2.bb b/packages/gtkhtml/gtkhtml-3.6_3.6.2.bb
index 6194529aa0..fd5fde49ed 100644
--- a/packages/gtkhtml/gtkhtml-3.6_3.6.2.bb
+++ b/packages/gtkhtml/gtkhtml-3.6_3.6.2.bb
@@ -1,15 +1,9 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
-DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
+require gtkhtml.inc
-inherit gnome
+DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
SRC_URI = "${GNOME_MIRROR}/gtkhtml/3.6/gtkhtml-${PV}.tar.bz2"
FILES_${PN} += "${datadir}/gtkhtml-3.6"
-S = "${WORKDIR}/gtkhtml-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
mv src/libgtkhtml.pc src/libgtkhtml-3.6.pc || true
diff --git a/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb b/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb
index 1db83609c2..cc177de08f 100644
--- a/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb
+++ b/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb
@@ -1,15 +1,9 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
-DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
+require gtkhtml.inc
-inherit gnome
+DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
SRC_URI = "${GNOME_MIRROR}/gtkhtml/3.8/gtkhtml-${PV}.tar.bz2"
FILES_${PN} += "${datadir}/gtkhtml-3.8"
-S = "${WORKDIR}/gtkhtml-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
mv src/libgtkhtml.pc src/libgtkhtml-3.8.pc || true
diff --git a/packages/gtkhtml/gtkhtml-lite-3.0_3.0.10.bb b/packages/gtkhtml/gtkhtml-lite-3.0_3.0.10.bb
index 14e6818e7b..44a96d6d64 100644
--- a/packages/gtkhtml/gtkhtml-lite-3.0_3.0.10.bb
+++ b/packages/gtkhtml/gtkhtml-lite-3.0_3.0.10.bb
@@ -1,17 +1,11 @@
-LICENSE = "GPL"
-SECTION = "x11/libs"
-DESCRIPTION = "HTML rendering/editing library"
+require gtkhtml.inc
+
DEPENDS = "gtk+ gail libgnomeprint orbit2-native"
PR = "r1"
-inherit gnome
-
SRC_URI = "http://stag.mind.be/gtkhtml-lite-3.0.10.tar.bz2"
FILES_${PN} += "${datadir}/gtkhtml-3.0 ${libdir}/gtkhtml/*.so"
FILES_${PN}-dev += "${libdir}/gtkhtml"
-S = "${WORKDIR}/gtkhtml-${PV}"
-
-EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
mv src/libgtkhtml.pc src/libgtkhtml-3.0.pc || true
diff --git a/packages/gtkhtml/gtkhtml.inc b/packages/gtkhtml/gtkhtml.inc
new file mode 100644
index 0000000000..f7a346a67a
--- /dev/null
+++ b/packages/gtkhtml/gtkhtml.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "HTML rendering/editing library"
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+inherit gnome
+
+S = "${WORKDIR}/gtkhtml-${PV}"
+
+EXTRA_OECONF = "--disable-gtk-doc"
diff --git a/packages/gtkmm/gtkmm.inc b/packages/gtkmm/gtkmm.inc
index 843274fdc5..f0c6dc093b 100644
--- a/packages/gtkmm/gtkmm.inc
+++ b/packages/gtkmm/gtkmm.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gtkmm.org/"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "glibmm"
+DEPENDS = "glibmm gtk+"
inherit autotools pkgconfig flow-lossage
diff --git a/packages/hal/hal.inc b/packages/hal/hal.inc
new file mode 100644
index 0000000000..11a6531951
--- /dev/null
+++ b/packages/hal/hal.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Hardware Abstraction Layer"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+SECTION = "unknown"
+LICENSE = "GPL LGPL AFL"
+
+SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
+
+S = "${WORKDIR}/hal-${PV}"
+
+inherit autotools pkgconfig
diff --git a/packages/hal/hal_0.2.98.bb b/packages/hal/hal_0.2.98.bb
index 7c8b8b73eb..468a948b1a 100644
--- a/packages/hal/hal_0.2.98.bb
+++ b/packages/hal/hal_0.2.98.bb
@@ -1,14 +1,7 @@
-SECTION = "unknown"
-DESCRIPTION = "Hardware Abstraction Layer"
+require hal.inc
+
DEPENDS = "dbus expat"
RDEPENDS += "hotplug"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-LICENSE = "GPL LGPL AFL"
-
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
diff --git a/packages/hal/hal_0.5.2.bb b/packages/hal/hal_0.5.2.bb
index fd29980e56..1ca95e8739 100644
--- a/packages/hal/hal_0.5.2.bb
+++ b/packages/hal/hal_0.5.2.bb
@@ -1,15 +1,8 @@
-SECTION = "unknown"
-DESCRIPTION = "Hardware Abstraction Layer"
+require hal.inc
+
DEPENDS = "dbus expat"
RDEPENDS += "hotplug"
RRECOMMENDS = "udev-utils"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-LICENSE = "GPL LGPL AFL"
-
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools pkgconfig
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
diff --git a/packages/hal/hal_0.5.4.bb b/packages/hal/hal_0.5.4.bb
index 147439d4c3..1246637f67 100644
--- a/packages/hal/hal_0.5.4.bb
+++ b/packages/hal/hal_0.5.4.bb
@@ -1,18 +1,11 @@
-SECTION = "unknown"
-DESCRIPTION = "Hardware Abstraction Layer"
+require hal.inc
+
DEPENDS = "dbus expat libusb"
RDEPENDS += "hotplug"
RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-LICENSE = "GPL LGPL AFL"
PR = "r1"
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools pkgconfig
-
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
--with-dbus-sys=${sysconfdir}/dbus-1/system.d \
diff --git a/packages/hal/hal_0.5.7.bb b/packages/hal/hal_0.5.7.bb
index 5933676260..05a3ea010b 100644
--- a/packages/hal/hal_0.5.7.bb
+++ b/packages/hal/hal_0.5.7.bb
@@ -1,17 +1,11 @@
-DESCRIPTION = "Hardware Abstraction Layer"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-SECTION = "unknown"
-LICENSE = "GPL LGPL AFL"
+require hal.inc
+
DEPENDS = "dbus expat libusb"
RDEPENDS += "hotplug"
#RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
- file://dbus-fix-api.patch;patch=1"
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools pkgconfig
+SRC_URI += "file://dbus-fix-api.patch;patch=1"
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
diff --git a/packages/hal/hal_0.5.8.1.bb b/packages/hal/hal_0.5.8.1.bb
index f608c4018c..d0b888192c 100644
--- a/packages/hal/hal_0.5.8.1.bb
+++ b/packages/hal/hal_0.5.8.1.bb
@@ -1,7 +1,4 @@
-DESCRIPTION = "Hardware Abstraction Layer"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-SECTION = "unknown"
-LICENSE = "GPL LGPL AFL"
+require hal.inc
DEPENDS = "dbus-glib udev intltool expat libusb"
RDEPENDS += "udev"
@@ -10,12 +7,7 @@ RRECOMMENDS = "udev-utils"
PR = "r2"
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
- file://99_hal"
-
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools pkgconfig
+SRC_URI += "file://99_hal"
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
diff --git a/packages/hal/hal_0.5.9.bb b/packages/hal/hal_0.5.9.bb
index bb9dc82b52..79d53970f3 100644
--- a/packages/hal/hal_0.5.9.bb
+++ b/packages/hal/hal_0.5.9.bb
@@ -1,7 +1,4 @@
-DESCRIPTION = "Hardware Abstraction Layer"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-SECTION = "unknown"
-LICENSE = "GPL LGPL AFL"
+require hal.inc
DEPENDS = "virtual/kernel dbus-glib udev intltool expat libusb"
RDEPENDS += "udev hal-info"
@@ -10,12 +7,7 @@ RRECOMMENDS = "udev-utils"
PR = "r1"
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
- file://99_hal"
-
-S = "${WORKDIR}/hal-${PV}"
-
-inherit autotools pkgconfig
+SRC_URI += "file://99_hal"
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
diff --git a/packages/helloworld/helloworld_1.0.0.bb b/packages/helloworld/helloworld_1.0.0.bb
index 99ebc051fd..da4daa408d 100644
--- a/packages/helloworld/helloworld_1.0.0.bb
+++ b/packages/helloworld/helloworld_1.0.0.bb
@@ -22,29 +22,3 @@ do_install () {
install -d ${D}${base_bindir}
ln -sf ${bindir}/helloworld ${D}${base_bindir}/init
}
-
-DESCRIPTION = "Minimal statically compiled Hello world!"
-LICENSE = "GPL"
-PR = "r0"
-
-S = "${WORKDIR}/${P}"
-
-do_fetch () {
- mkdir -p ${WORKDIR}/${P}
- cd ${WORKDIR}/${P}
- echo -e "#include <stdio.h>\nint main(void)\n{\n\tprintf(\"Hello world!\\\n\");\twhile(1);\n\treturn 0;\n}\n" >helloworld.c
-}
-
-do_compile () {
- ${CC} -o helloworld helloworld.c -static
-}
-
-do_install () {
- install -d ${D}${bindir}
- install -m 0755 helloworld ${D}${bindir}/
- # /bin/init is on purpose, it is tried after /sbin/init and /etc/init
- # so if a sysvinit is installed, it will be used instead of helloworld
- install -d ${D}${base_bindir}
- ln -sf ${bindir}/helloworld ${D}${base_bindir}/init
-}
-
diff --git a/packages/libmpeg2/libmpeg2-0.4.0b/.mtn2git_empty b/packages/iana-etc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libmpeg2/libmpeg2-0.4.0b/.mtn2git_empty
+++ b/packages/iana-etc/.mtn2git_empty
diff --git a/packages/iana-etc/iana-etc_2.20.bb b/packages/iana-etc/iana-etc_2.20.bb
new file mode 100644
index 0000000000..ccf0b8da8a
--- /dev/null
+++ b/packages/iana-etc/iana-etc_2.20.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "The iana-etc package provides the Unix/Linux /etc/services and /etc/protocols files."
+AUTHOR = "Seth W. Klein"
+HOMEPAGE = "http://www.sethwklein.net/projects/iana-etc/"
+SECTION = "base"
+LICENSE = "OPL"
+
+SRC_URI = "http://www.sethwklein.net/projects/iana-etc/downloads/${P}.tar.bz2"
+
+do_make(){
+ oe_runmake 'STRIP=yes'
+}
+
+do_install(){
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/packages/icu/icu_3.6.bb b/packages/icu/icu_3.6.bb
index 03abbaa958..39162d2179 100644
--- a/packages/icu/icu_3.6.bb
+++ b/packages/icu/icu_3.6.bb
@@ -1,13 +1,16 @@
require icu-3.6.inc
+DEPENDS += "icu-native"
+
PR = "r1"
do_configure_append() {
for i in */Makefile */*.inc */*/Makefile */*/*.inc ; do
- sed -i -e 's:$(INVOKE) $(BINDIR)/:$(INVOKE) :g' $i
- sed -i -e 's:$(BINDIR)/::g' $i
+ sed -i -e 's:$(INVOKE) $(BINDIR)/:$(INVOKE) :g' $i
+ sed -i -e 's:$(BINDIR)/::g' $i
done
- sed -i -e 's:$(BINDIR)/::g' extra/uconv/pkgdata.inc
+ sed -i -e 's:$(BINDIR)/::g' extra/uconv/pkgdata.inc || true
+ sed -i -e 's:$(BINDIR)/::g' extra/uconv/pkgdata.inc.in || true
}
diff --git a/packages/images/angstrom-minimal-image.bb b/packages/images/angstrom-minimal-image.bb
index 90f46a1e01..c79bff25e2 100644
--- a/packages/images/angstrom-minimal-image.bb
+++ b/packages/images/angstrom-minimal-image.bb
@@ -1,15 +1,11 @@
#Angstrom minimalist image
#gives you a small images with ssh access
LICENSE = "MIT"
-PR = "r0"
+PR = "r1"
ANGSTROM_EXTRA_INSTALL ?= ""
DISTRO_SSH_DAEMON ?= "dropbear"
-DEPENDS = "task-base \
- ${DISTRO_SSH_DAEMON} \
- "
-
RDEPENDS = "task-boot \
${DISTRO_SSH_DAEMON} \
"
diff --git a/packages/images/hentges-console-image.bb b/packages/images/hentges-console-image.bb
new file mode 100644
index 0000000000..87381a4c77
--- /dev/null
+++ b/packages/images/hentges-console-image.bb
@@ -0,0 +1,37 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: hentges-console-image.bb
+# Date: 20070516 (YMD)
+
+DESCRIPTION = "Hentges Console Image"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "GPL"
+
+######################################################################################
+
+PV = "${HENTGES_PV}"
+PR = "${HENTGES_PR}"
+
+######################################################################################
+
+export IMAGE_NAME = "hentges-console-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+######################################################################################
+
+DEPENDS = "task-base \
+ task-hentges-base"
+
+RDEPENDS = "task-base \
+ task-hentges-base"
+
+######################################################################################
+
+inherit image
+
+
diff --git a/packages/images/hentges-x11-image.bb b/packages/images/hentges-x11-image.bb
new file mode 100644
index 0000000000..475f9f0ea9
--- /dev/null
+++ b/packages/images/hentges-x11-image.bb
@@ -0,0 +1,47 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: hentges-x11-image.bb
+# Date: 20070522 (YMD)
+
+DESCRIPTION = "Hentges X11 Image"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "MIT"
+
+######################################################################################
+
+PV = "${HENTGES_PV}"
+PR = "${HENTGES_PR}"
+
+######################################################################################
+
+export IMAGE_NAME = "hentges-x11-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+######################################################################################
+
+PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
+
+######################################################################################
+
+DEPENDS = "task-base \
+ task-hentges-base \
+ task-hentges-x11"
+
+RDEPENDS = "task-base \
+ task-hentges-base \
+ task-hentges-x11"
+
+######################################################################################
+
+inherit image
+
+
diff --git a/packages/images/initramfs-image.bb b/packages/images/initramfs-image.bb
new file mode 100644
index 0000000000..1b60405e74
--- /dev/null
+++ b/packages/images/initramfs-image.bb
@@ -0,0 +1,15 @@
+# Sample initramfs image
+LICENSE = "MIT"
+PR = "r0"
+
+#RDEPENDS = "initramfs-boot busybox kernel-module-uinput uclibc libgcc1"
+RDEPENDS = "initramfs-nfsboot busybox-static kernel-module-uinput"
+
+export IMAGE_BASENAME = "initramfs-image"
+export IMAGE_LINGUAS = ""
+
+PACKAGE_INSTALL = "${RDEPENDS}"
+# Install only ${PACKAGE_INSTALL}, not even deps
+PACKAGE_INSTALL_NO_DEPS = "1"
+
+inherit image
diff --git a/packages/linux/linux-dht-walnut-2.6.12.6/.mtn2git_empty b/packages/initrdscripts/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-dht-walnut-2.6.12.6/.mtn2git_empty
+++ b/packages/initrdscripts/.mtn2git_empty
diff --git a/packages/linux/linux-dht-walnut-2.6.12/.mtn2git_empty b/packages/initrdscripts/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-dht-walnut-2.6.12/.mtn2git_empty
+++ b/packages/initrdscripts/files/.mtn2git_empty
diff --git a/packages/initrdscripts/files/nfsboot.sh b/packages/initrdscripts/files/nfsboot.sh
new file mode 100644
index 0000000000..bb689fa3b8
--- /dev/null
+++ b/packages/initrdscripts/files/nfsboot.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+echo "Starting initramfs boot..."
+mkdir /proc
+mount -t proc proc /proc
+ifconfig eth0 192.168.20.230
+mkdir /mnt
+mount -t nfs 192.168.20.210:/home/nfs/Angstrom-opie-image-test-h4000 /mnt
+cd /mnt
+exec switch_root -c /dev/console /mnt /sbin/init
diff --git a/packages/initrdscripts/initramfs-nfsboot_0.1.bb b/packages/initrdscripts/initramfs-nfsboot_0.1.bb
new file mode 100644
index 0000000000..1a4d48813b
--- /dev/null
+++ b/packages/initrdscripts/initramfs-nfsboot_0.1.bb
@@ -0,0 +1,8 @@
+SRC_URI = "file://nfsboot.sh"
+PR = "r0"
+
+do_install() {
+ install -m 0755 ${WORKDIR}/nfsboot.sh ${D}/init
+}
+
+FILES_${PN} += " /init "
diff --git a/packages/initscripts/initscripts-1.0/mountall.sh b/packages/initscripts/initscripts-1.0/mountall.sh
index b5cb85a1e9..65d5d26b24 100755
--- a/packages/initscripts/initscripts-1.0/mountall.sh
+++ b/packages/initscripts/initscripts-1.0/mountall.sh
@@ -41,5 +41,17 @@ then
swapon -a 2> /dev/null
fi
+# A missing homedirectory for root can cause all sorts of problems.
+# This can happen after user formats his /home partition for example
+
+if test -e /etc/passwd
+then
+ ROOT_HOME="`cat /etc/passwd|grep ^root | awk '{split($0,x,":");printf("%s\n",x[6])}'`"
+
+ if test -n "$ROOT_HOME"
+ then
+ ! test -d "$ROOT_HOME" && mkdir -p "$ROOT_HOME"
+ fi
+fi
: exit 0
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index d814e937db..f979a50c27 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
DEPENDS = "makedevs"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r91"
+PR = "r92"
SRC_URI = "file://halt \
file://ramdisk \
diff --git a/packages/intltool/intltool-native_0.30.bb b/packages/intltool/intltool-native_0.30.bb
index 7cf3c4e11f..05f7efdda4 100644
--- a/packages/intltool/intltool-native_0.30.bb
+++ b/packages/intltool/intltool-native_0.30.bb
@@ -1,4 +1,4 @@
-SECTION = "devel"
require intltool_${PV}.bb
+
inherit native
DEPENDS = "libxml-parser-perl-native"
diff --git a/packages/intltool/intltool-native_0.31.bb b/packages/intltool/intltool-native_0.31.bb
index 7cf3c4e11f..05f7efdda4 100644
--- a/packages/intltool/intltool-native_0.31.bb
+++ b/packages/intltool/intltool-native_0.31.bb
@@ -1,4 +1,4 @@
-SECTION = "devel"
require intltool_${PV}.bb
+
inherit native
DEPENDS = "libxml-parser-perl-native"
diff --git a/packages/intltool/intltool-native_0.34.bb b/packages/intltool/intltool-native_0.34.bb
index 7cf3c4e11f..05f7efdda4 100644
--- a/packages/intltool/intltool-native_0.34.bb
+++ b/packages/intltool/intltool-native_0.34.bb
@@ -1,4 +1,4 @@
-SECTION = "devel"
require intltool_${PV}.bb
+
inherit native
DEPENDS = "libxml-parser-perl-native"
diff --git a/packages/intltool/intltool-native_0.35.0.bb b/packages/intltool/intltool-native_0.35.0.bb
index fdd2652e11..bac5378113 100644
--- a/packages/intltool/intltool-native_0.35.0.bb
+++ b/packages/intltool/intltool-native_0.35.0.bb
@@ -1,7 +1,7 @@
-SECTION = "devel"
require intltool_${PV}.bb
+
inherit native
DEPENDS = "libxml-parser-perl-native"
-export PERL="/usr/bin/env perl"
+export PERL = "/usr/bin/env perl"
SRC_URI_append = " file://intltool-nowarn.patch;patch=1"
diff --git a/packages/intltool/intltool.inc b/packages/intltool/intltool.inc
new file mode 100644
index 0000000000..f4de1ff4aa
--- /dev/null
+++ b/packages/intltool/intltool.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Utility scripts for internationalizing XML"
+PRIORITY = "optional"
+SECTION = "devel"
+LICENSE = "GPL"
+
+SRC_URI = "${GNOME_MIRROR}/intltool/${PV}/intltool-${PV}.tar.bz2"
+S = "${WORKDIR}/intltool-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/intltool/intltool_0.30.bb b/packages/intltool/intltool_0.30.bb
index f1660e7262..e48262574b 100644
--- a/packages/intltool/intltool_0.30.bb
+++ b/packages/intltool/intltool_0.30.bb
@@ -1,12 +1 @@
-SECTION = "devel"
-DESCRIPTION = "Utility scripts for internationalizing XML"
-LICENSE = "GPL"
-
-SRC_URI = "${GNOME_MIRROR}/intltool/${PV}/intltool-${PV}.tar.bz2"
-S = "${WORKDIR}/intltool-${PV}"
-
-inherit autotools pkgconfig
-
-do_stage() {
- install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
-}
+require intltool.inc
diff --git a/packages/intltool/intltool_0.31.bb b/packages/intltool/intltool_0.31.bb
index f1660e7262..e48262574b 100644
--- a/packages/intltool/intltool_0.31.bb
+++ b/packages/intltool/intltool_0.31.bb
@@ -1,12 +1 @@
-SECTION = "devel"
-DESCRIPTION = "Utility scripts for internationalizing XML"
-LICENSE = "GPL"
-
-SRC_URI = "${GNOME_MIRROR}/intltool/${PV}/intltool-${PV}.tar.bz2"
-S = "${WORKDIR}/intltool-${PV}"
-
-inherit autotools pkgconfig
-
-do_stage() {
- install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
-}
+require intltool.inc
diff --git a/packages/intltool/intltool_0.34.bb b/packages/intltool/intltool_0.34.bb
index f1660e7262..e48262574b 100644
--- a/packages/intltool/intltool_0.34.bb
+++ b/packages/intltool/intltool_0.34.bb
@@ -1,12 +1 @@
-SECTION = "devel"
-DESCRIPTION = "Utility scripts for internationalizing XML"
-LICENSE = "GPL"
-
-SRC_URI = "${GNOME_MIRROR}/intltool/${PV}/intltool-${PV}.tar.bz2"
-S = "${WORKDIR}/intltool-${PV}"
-
-inherit autotools pkgconfig
-
-do_stage() {
- install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
-}
+require intltool.inc
diff --git a/packages/intltool/intltool_0.35.0.bb b/packages/intltool/intltool_0.35.0.bb
index de8705ccf0..6dea51a5fc 100644
--- a/packages/intltool/intltool_0.35.0.bb
+++ b/packages/intltool/intltool_0.35.0.bb
@@ -1,18 +1,8 @@
-SECTION = "devel"
-DESCRIPTION = "Utility scripts for internationalizing XML"
-LICENSE = "GPL"
+require intltool.inc
+
DEPENDS = "libxml-parser-perl-native"
#RDEPENDS = "libxml-parser-perl"
PR = "r1"
RRECOMMENDS = "perl-modules"
-
-SRC_URI = "${GNOME_MIRROR}/intltool/0.35/intltool-${PV}.tar.bz2"
-S = "${WORKDIR}/intltool-${PV}"
-
-inherit autotools pkgconfig
-
-do_stage() {
- install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/intltool/intltool_0.35.2.bb b/packages/intltool/intltool_0.35.2.bb
index daba37a9da..6626ed54fe 100644
--- a/packages/intltool/intltool_0.35.2.bb
+++ b/packages/intltool/intltool_0.35.2.bb
@@ -1,18 +1,8 @@
-SECTION = "devel"
-DESCRIPTION = "Utility scripts for internationalizing XML"
-LICENSE = "GPL"
+require intltool.inc
+
DEPENDS = "libxml-parser-perl-native"
#RDEPENDS = "libxml-parser-perl"
PR = "r0"
RRECOMMENDS = "perl-modules"
-
-SRC_URI = "${GNOME_MIRROR}/intltool/0.35/intltool-${PV}.tar.bz2"
-S = "${WORKDIR}/intltool-${PV}"
-
-inherit autotools pkgconfig
-
-do_stage() {
- install -m 0644 intltool.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/iperf/iperf_2.0.2.bb b/packages/iperf/iperf_2.0.2.bb
index 357ac19dd0..c54bafe70d 100644
--- a/packages/iperf/iperf_2.0.2.bb
+++ b/packages/iperf/iperf_2.0.2.bb
@@ -13,6 +13,7 @@ S="${WORKDIR}/iperf-${PV}"
# --disable-threads is needed on epia/x86 with uclibc
do_configure() {
+ gnu-configize
oe_runconf --exec-prefix=${STAGING_DIR} --disable-threads
}
diff --git a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
index 03a381387e..c57c14333a 100644
--- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
@@ -1,15 +1,14 @@
require ipkg-utils_${PV}.bb
-SRC_URI += "file://ipkg-utils-fix.patch;patch=1 \
- file://ipkg-py-sane-vercompare.patch;patch=1"
RDEPENDS = ""
-PR = "r9"
+PR = "r13"
inherit native
# Avoid circular dependencies from package_ipk.bbclass
PACKAGES = ""
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ipkg-utils"
+INSTALL += "arfile.py"
do_stage() {
for i in ${INSTALL}; do
diff --git a/packages/ipkg-utils/ipkg-utils/index_speedup.patch b/packages/ipkg-utils/ipkg-utils/index_speedup.patch
deleted file mode 100644
index bef28a9df1..0000000000
--- a/packages/ipkg-utils/ipkg-utils/index_speedup.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Index: ipkg-utils/ipkg-make-index
-===================================================================
---- ipkg-utils.orig/ipkg-make-index 2005-03-20 18:10:54.000000000 +0000
-+++ ipkg-utils/ipkg-make-index 2006-07-24 09:18:16.000000000 +0100
-@@ -37,6 +37,21 @@
- if os.path.exists(pkg_dir + "/" + filename + ".asc"):
- os.rename(pkg_dir + "/" + filename + ".asc", locale_dir + "/" + filename + ".asc")
-
-+def md5sum(file):
-+ import md5
-+ sum = md5.new()
-+ f = open(file, "r")
-+ while 1:
-+ data = f.read(1024)
-+ if not data: break
-+ sum.update(data)
-+ f.close()
-+ if sys.version[:1] > '2':
-+ # when using Python 2.0 or newer
-+ return sum.hexdigest()
-+ else:
-+ return string.join(map((lambda x:"%02x" % ord(x)),sum.digest()),'')
-+
- old_filename = None
- packages_filename = None
- filelist_filename = "Packages.filelist"
-@@ -87,7 +102,7 @@
- files.sort()
- for filename in files:
- basename = os.path.basename(filename)
-- if old_pkg_hash.has_key(basename):
-+ if old_pkg_hash.has_key(basename) and old_pkg_hash[basename].md5 == md5sum(filename) and old_pkg_hash[basename].size == os.stat(filename)[6]:
- if (verbose):
- sys.stderr.write("Found %s in Packages\n" % (filename,))
- pkg = old_pkg_hash[basename]
-Index: ipkg-utils/ipkg.py
-===================================================================
---- ipkg-utils.orig/ipkg.py 2005-01-20 23:09:10.000000000 +0000
-+++ ipkg-utils/ipkg.py 2006-07-24 09:16:44.000000000 +0100
-@@ -210,8 +210,13 @@
- value = value + '\n' + line
- if name == 'size':
- self.size = int(value)
-+ elif name == 'md5sum':
-+ self.md5 = value
- elif self.__dict__.has_key(name):
- self.__dict__[name] = value
-+ else:
-+ print "Lost field %s, %s" % (name,value)
-+
- if line[0] == '\n':
- return # consumes one blank line at end of package descriptoin
- else:
diff --git a/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch b/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
new file mode 100644
index 0000000000..9f9b9359ce
--- /dev/null
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
@@ -0,0 +1,97 @@
+---
+ ipkg-make-index | 31 +++++++++++++++++++++++++++----
+ 1 file changed, 27 insertions(+), 4 deletions(-)
+
+Index: ipkg-utils/ipkg-make-index
+===================================================================
+--- ipkg-utils.orig/ipkg-make-index 2007-05-26 23:45:56.000000000 +0100
++++ ipkg-utils/ipkg-make-index 2007-05-26 23:47:25.000000000 +0100
+@@ -40,6 +40,7 @@ def to_locale(filename, locale):
+ old_filename = None
+ packages_filename = None
+ filelist_filename = "Packages.filelist"
++stamplist_filename = "Packages.stamps"
+ opt_s = 0
+ opt_m = 0
+ (opts, remaining_args) = getopt.getopt(sys.argv[1:], "hl:p:vsmr:L:")
+@@ -50,6 +51,7 @@ for (optkey, optval) in opts:
+ opt_s = 1
+ if optkey == '-p':
+ packages_filename = optval
++ stamplist_filename = optval + ".stamps"
+ if optkey == '-l':
+ filelist_filename = optval
+ if optkey == '-v':
+@@ -72,6 +74,7 @@ old_pkg_hash = {}
+ if packages_filename and not old_filename and os.path.exists(packages_filename):
+ old_filename = packages_filename
+
++pkgsStamps = {}
+ if old_filename:
+ if (verbose):
+ sys.stderr.write("Reading package list from " + old_filename + "\n")
+@@ -80,6 +83,14 @@ if old_filename:
+ for k in old_packages.packages.keys():
+ p = old_packages.packages[k]
+ old_pkg_hash[p.filename] = p
++ try:
++ f = open(stamplist_filename, "r")
++ for l in f:
++ l = l.strip()
++ s, f = l.split(" ", 1)
++ pkgsStamps[f] = int(s)
++ except IOError:
++ pass
+
+ if (verbose):
+ sys.stderr.write("Reading in all the package info from %s\n" % (pkg_dir, ))
+@@ -87,11 +98,17 @@ files=glob(pkg_dir + '/*.ipk') + glob(pk
+ files.sort()
+ for filename in files:
+ basename = os.path.basename(filename)
++ pkg = None
++ fnameStat = os.stat(filename)
+ if old_pkg_hash.has_key(basename):
+- if (verbose):
++ if pkgsStamps.has_key(basename) and fnameStat.st_mtime == pkgsStamps[basename]:
++ if (verbose):
+ sys.stderr.write("Found %s in Packages\n" % (filename,))
+- pkg = old_pkg_hash[basename]
+- else:
++ pkg = old_pkg_hash[basename]
++ else:
++ sys.stderr.write("Found %s in Packages, but mtime differs - re-reading\n" % (filename,))
++
++ if not pkg:
+ if (verbose):
+ sys.stderr.write("Reading info for package %s\n" % (filename,))
+ pkg = ipkg.Package(filename)
+@@ -101,6 +118,7 @@ for filename in files:
+ else:
+ old_filename = ""
+ s = packages.add_package(pkg)
++ pkgsStamps[basename] = fnameStat.st_mtime
+ if s == 0:
+ if old_filename:
+ # old package was displaced by newer
+@@ -114,6 +132,11 @@ for filename in files:
+ if opt_s:
+ print filename
+
++pkgsStampsFile = open(stamplist_filename, "w")
++for f in pkgsStamps.keys():
++ pkgsStampsFile.write("%d %s\n" % (pkgsStamps[f], f))
++pkgsStampsFile.close()
++
+ if opt_s:
+ sys.exit(0)
+
+@@ -154,7 +177,7 @@ if packages_filename:
+ os.rename(tmp_packages_filename, packages_filename)
+ os.rename(tmp_gzip_filename, gzip_filename)
+
+-if verbose:
++if verbose:
+ sys.stderr.write("Generate Packages.filelist file\n")
+ files = {}
+ names = packages.packages.keys()
diff --git a/packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch b/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch
index 00ee391405..00ee391405 100644
--- a/packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch
diff --git a/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch b/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch
new file mode 100644
index 0000000000..25eb2cce6f
--- /dev/null
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch
@@ -0,0 +1,309 @@
+---
+ arfile.py | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ ipkg.py | 106 ++++++++++++++++++++++++++---------------------------
+ setup.py | 2 -
+ 3 files changed, 177 insertions(+), 55 deletions(-)
+
+Index: ipkg-utils/arfile.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ ipkg-utils/arfile.py 2007-05-26 23:46:59.000000000 +0100
+@@ -0,0 +1,124 @@
++"""
++arfile - A module to parse GNU ar archives.
++
++Copyright (c) 2006-7 Paul Sokolovsky
++This file is released under the terms
++of GNU General Public License v2 or later.
++"""
++import sys
++import os
++import tarfile
++
++
++class FileSection:
++ "A class which allows to treat portion of file as separate file object."
++
++ def __init__(self, f, offset, size):
++ self.f = f
++ self.offset = offset
++ self.size = size
++ self.seek(0, 0)
++
++ def seek(self, offset, whence = 0):
++# print "seek(%x, %d)" % (offset, whence)
++ if whence == 0:
++ return self.f.seek(offset + self.offset, whence)
++ elif whence == 1:
++ return self.f.seek(offset, whence)
++ elif whence == 2:
++ return self.f.seek(self.offset + self.size + offset, 0)
++ else:
++ assert False
++
++ def tell(self):
++# print "tell()"
++ return self.f.tell() - self.offset
++
++ def read(self, size = -1):
++# print "read(%d)" % size
++ return self.f.read(size)
++
++class ArFile:
++
++ def __init__(self, f):
++ self.f = f
++ self.directory = {}
++ self.directoryRead = False
++
++ signature = self.f.readline()
++ assert signature == "!<arch>\n"
++ self.directoryOffset = self.f.tell()
++
++ def open(self, fname):
++ if self.directory.has_key(fname):
++ return FileSection(self.f, self.directory[fname][-1], int(self.directory[fname][5]))
++
++ if self.directoryRead:
++ raise IOError, (2, "AR member not found: " + fname)
++
++ f = self._scan(fname)
++ if f == None:
++ raise IOError, (2, "AR member not found: " + fname)
++ return f
++
++
++ def _scan(self, fname):
++ self.f.seek(self.directoryOffset, 0)
++
++ while True:
++ l = self.f.readline()
++ if not l:
++ self.directoryRead = True
++ return None
++
++ if l == "\n":
++ l = self.f.readline()
++ if not l: break
++ descriptor = l.split()
++# print descriptor
++ size = int(descriptor[5])
++ memberName = descriptor[0][:-1]
++ self.directory[memberName] = descriptor + [self.f.tell()]
++# print "read:", memberName
++ if memberName == fname:
++ # Record directory offset to start from next time
++ self.directoryOffset = self.f.tell() + size
++ return FileSection(self.f, self.f.tell(), size)
++
++ # Skip data and loop
++ data = self.f.seek(size, 1)
++# print hex(f.tell())
++
++
++if __name__ == "__main__":
++ if None:
++ f = open(sys.argv[1], "rb")
++
++ ar = ArFile(f)
++ tarStream = ar.open("data.tar.gz")
++ print "--------"
++ tarStream = ar.open("data.tar.gz")
++ print "--------"
++ tarStream = ar.open("control.tar.gz")
++ print "--------"
++ tarStream = ar.open("control.tar.gz2")
++
++ sys.exit(0)
++
++
++ dir = "."
++ if len(sys.argv) > 1:
++ dir = sys.argv[1]
++ for f in os.listdir(dir):
++ if not f.endswith(".ipk"): continue
++
++ print "=== %s ===" % f
++ f = open(dir + "/" + f, "rb")
++
++ ar = ArFile(f)
++ tarStream = ar.open("control.tar.gz")
++ tarf = tarfile.open("control.tar.gz", "r", tarStream)
++ #tarf.list()
++
++ f2 = tarf.extractfile("control")
++ print f2.read()
+Index: ipkg-utils/setup.py
+===================================================================
+--- ipkg-utils.orig/setup.py 2007-05-26 23:45:55.000000000 +0100
++++ ipkg-utils/setup.py 2007-05-26 23:46:59.000000000 +0100
+@@ -16,6 +16,6 @@ distutils.core.setup( name = 'ipkg-utils
+ platforms = 'POSIX',
+ keywords = 'ipkg familiar',
+ url = 'http://www.handhelds.org/sources.html/',
+- py_modules = [ 'ipkg' ],
++ py_modules = [ 'ipkg', 'arfile' ],
+ scripts = ['ipkg-compare-indexes', 'ipkg-make-index', 'ipkg-update-index', 'ipkg-build', 'ipkg-unbuild', 'ipkg-upload']
+ )
+Index: ipkg-utils/ipkg.py
+===================================================================
+--- ipkg-utils.orig/ipkg.py 2007-05-26 23:46:55.000000000 +0100
++++ ipkg-utils/ipkg.py 2007-05-26 23:45:20.000000000 +0100
+@@ -41,6 +41,8 @@ import re
+ import string
+ import commands
+ from stat import ST_SIZE
++import arfile
++import tarfile
+
+ class Version:
+ """A class for holding parsed package version information."""
+@@ -131,78 +133,61 @@ class Package:
+ self.section = None
+ self.filename_header = None
+ self.file_list = []
+- self.md5 = None
++ # md5 is lazy attribute, computed on demand
++ #self.md5 = None
+ self.size = None
+ self.installed_size = None
+ self.filename = None
+ self.isdeb = 0
++ self.fn = fn
+
+ if fn:
+ # see if it is deb format
+- f = open(fn, "r")
++ f = open(fn, "rb")
+ magic = f.read(4)
+- f.close()
++ f.seek(0, 0)
+ if (magic == "!<ar"):
+ self.isdeb = 1
+
+- # compute the MD5.
+- f = open(fn, "r")
+- sum = md5.new()
+- while 1:
+- data = f.read(1024)
+- if not data: break
+- sum.update(data)
+- f.close()
+- if sys.version[:1] > '2':
+- # when using Python 2.0 or newer
+- self.md5 = sum.hexdigest()
+- else:
+- self.md5 = string.join(map((lambda x:"%02x" % ord(x)),sum.digest()),'')
+- stat = os.stat(fn)
+- self.size = stat[ST_SIZE]
++
+ self.filename = os.path.basename(fn)
++ assert self.isdeb == 1, "Old ipk format (non-deb) is unsupported"
++
+ ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
+- if self.isdeb:
+- control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - './control'","r")
+- else:
+- control = os.popen("tar xfzO "+fn+" 'control.tar.gz' | tar xfzO - './control'","r")
+- line = control.readline()
+- while 1:
+- if not line: break
+- line = string.rstrip(line)
+- lineparts = re.match(r'([\w-]*?):\s*(.*)', line)
+- if lineparts:
+- name = string.lower(lineparts.group(1))
+- value = lineparts.group(2)
+- while 1:
+- line = control.readline()
+- if not line: break
+- if line[0] != ' ': break
+- line = string.rstrip(line)
+- value = value + '\n' + line
+- # don't allow package to override its own filename
+- if name == "filename":
+- self.filename_header = value
+- else:
+- if self.__dict__.has_key(name):
+- self.__dict__[name] = value
+- else:
+- line = control.readline()
++
++ ar = arfile.ArFile(f)
++ tarStream = ar.open("control.tar.gz")
++ tarf = tarfile.open("control.tar.gz", "r", tarStream)
++
++ try:
++ control = tarf.extractfile("control")
++ except KeyError:
++ control = tarf.extractfile("./control")
++ self.read_control(control)
+ control.close()
+- if self.isdeb:
+- data = os.popen("ar p "+fn+" data.tar.gz | tar tfz -","r")
+- else:
+- data = os.popen("tar xfzO "+fn+" '*data.tar.gz' | tar tfz -","r")
+- while 1:
+- line = data.readline()
+- if not line: break
+- self.file_list.append(string.rstrip(line))
+- data.close()
+
+ self.scratch_dir = None
+ self.file_dir = None
+ self.meta_dir = None
+
++ def __getattr__(self, name):
++ if name == "md5":
++ self._computeFileMD5()
++ return self.md5
++ else:
++ raise AttributeError, name
++
++ def _computeFileMD5(self):
++ # compute the MD5.
++ f = open(self.fn, "rb")
++ sum = md5.new()
++ while 1:
++ data = f.read(1024)
++ if not data: break
++ sum.update(data)
++ f.close()
++ self.md5 = sum.hexdigest()
++
+ def read_control(self, control):
+ import os
+
+@@ -221,9 +203,15 @@ class Package:
+ value = value + '\n' + line
+ if name == 'size':
+ self.size = int(value)
++ elif name == 'md5sum':
++ self.md5 = value
+ elif self.__dict__.has_key(name):
+ self.__dict__[name] = value
+- if line[0] == '\n':
++ else:
++ #print "Lost field %s, %s" % (name,value)
++ pass
++
++ if line and line[0] == '\n':
+ return # consumes one blank line at end of package descriptoin
+ else:
+ line = control.readline()
+@@ -314,6 +302,16 @@ class Package:
+ return self.section
+
+ def get_file_list(self):
++ if not self.fn:
++ return []
++ f = open(self.fn, "rb")
++ ar = arfile.ArFile(f)
++ tarStream = ar.open("data.tar.gz")
++ tarf = tarfile.open("data.tar.gz", "r", tarStream)
++ self.file_list = tarf.getnames()
++ self.file_list = map(lambda a: ["./", ""][a.startswith("./")] + a, self.file_list)
++
++ f.close()
+ return self.file_list
+
+ def write_package(self, dirname):
diff --git a/packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch b/packages/ipkg-utils/ipkg-utils/ipkg-utils-fix.patch
index a9e6fc4d05..b3e0d62cd9 100644
--- a/packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-utils-fix.patch
@@ -1,11 +1,14 @@
---- ../../../work/i686-linux/ipkg-utils-native-1.6+cvs20050404-r6/ipkg-utils/ipkg.py 2005-01-08 19:08:52.000000000 +0100
-+++ ipkg-utils/ipkg.py 2006-06-29 12:52:58.466446000 +0200
-@@ -150,11 +150,11 @@
- stat = os.stat(fn)
- self.size = stat[ST_SIZE]
+---
+ ipkg.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: ipkg-utils/ipkg.py
+===================================================================
+--- ipkg-utils.orig/ipkg.py 2007-05-26 23:49:05.000000000 +0100
++++ ipkg-utils/ipkg.py 2007-05-26 23:49:23.000000000 +0100
+@@ -152,9 +152,9 @@ class Package:
self.filename = os.path.basename(fn)
-- ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
-+ sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
+ ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
if self.isdeb:
- control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - '*control'","r")
+ control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - './control'","r")
diff --git a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
index 48c7445828..e8f52b65a4 100644
--- a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
@@ -5,10 +5,13 @@ LICENSE = "GPL"
CONFLICTS = "ipkg-link"
RDEPENDS = "python"
SRCDATE = "20050404"
-PR = "r12"
+PR = "r15"
SRC_URI = "${HANDHELDS_CVS};module=ipkg-utils \
- file://index_speedup.patch;patch=1"
+ file://ipkg-utils-fix.patch;patch=1 \
+ file://ipkg-py-sane-vercompare.patch;patch=1 \
+ file://ipkg-py-tarfile.patch;patch=1 \
+ file://ipkg-make-index-track-stamps.patch;patch=1"
S = "${WORKDIR}/ipkg-utils"
@@ -26,9 +29,3 @@ do_install() {
done
}
-#FIXME: ipkg-utils is not allowed to have packages or else a ipkg-native -> ipkg-utils -> ipkg-utils
-# recursive dependency is triggered. This has been fixed by installing the ipkg-link script in
-# a dedicated package.
-#PACKAGES_prepend = "ipkg-link "
-#FILES_ipkg-link = "${bindir}/ipkg-link"
-
diff --git a/packages/ipsec-tools/files/cross.patch b/packages/ipsec-tools/files/cross.patch
deleted file mode 100644
index a0e7b1da27..0000000000
--- a/packages/ipsec-tools/files/cross.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Index: ipsec-tools-0.5-rc1/acracoon.m4
-===================================================================
---- ipsec-tools-0.5-rc1.orig/acracoon.m4 2004-09-21 10:35:23.000000000 -0400
-+++ ipsec-tools-0.5-rc1/acracoon.m4 2005-02-03 13:56:02.144689256 -0500
-@@ -92,6 +92,8 @@
-
- AC_DEFUN([RACOON_CHECK_BUGGY_GETADDRINFO], [
- AC_MSG_CHECKING(getaddrinfo bug)
-+ AC_CACHE_CHECK([for a buggy getaddrinfo],
-+ racoon_cv_bug_getaddrinfo,[
- saved_CFLAGS=$CFLAGS
- CFLAGS="-Wall -O2"
- AC_TRY_RUN([
-@@ -182,12 +184,10 @@
- exit(1);
- }
- ],
-- AC_MSG_RESULT(good)
-- buggygetaddrinfo=no,
-- AC_MSG_RESULT(buggy)
-- buggygetaddrinfo=yes,
-- AC_MSG_RESULT(buggy)
-- buggygetaddrinfo=yes)
-+ racoon_cv_bug_getaddrinfo=no,
-+ racoon_cv_bug_getaddrinfo=yes,
-+ racoon_cv_bug_getaddrinfo=yes)
- CFLAGS=$saved_CFLAGS
- unset saved_CFLAGS
-+ ])
- ])
-Index: ipsec-tools-0.5-rc1/configure.ac
-===================================================================
---- ipsec-tools-0.5-rc1.orig/configure.ac 2005-01-04 09:20:57.000000000 -0500
-+++ ipsec-tools-0.5-rc1/configure.ac 2005-02-03 14:02:34.935975904 -0500
-@@ -16,6 +16,9 @@
- AC_PROG_LIBTOOL
- AC_PROG_YACC
- AM_PROG_LEX
-+ac_save_LIBS="$LIBS"
-+AC_CHECK_LIB(fl, yywrap, LEXLIB="-lfl")
-+LIBS="$ac_save_LIBS"
- AC_SUBST(LEXLIB)
- AC_PROG_EGREP
-
-@@ -57,10 +60,12 @@
- AC_SUBST(CONFIGURE_AMFLAGS) ],
- [ KERNEL_INCLUDE="/lib/modules/`uname -r`/build/include" ])
-
-+ if test "$cross_compiling" = no; then
- AC_CHECK_FILE($KERNEL_INCLUDE/linux/pfkeyv2.h, ,
- [ AC_CHECK_FILE(/usr/src/linux/include/linux/pfkeyv2.h,
- KERNEL_INCLUDE=/usr/src/linux/include ,
- [ AC_MSG_ERROR([Unable to find linux-2.6 kernel headers. Aborting.]) ] ) ] )
-+ fi
- AC_SUBST(KERNEL_INCLUDE)
- # We need the configure script to run with correct kernel headers.
- # However we don't want to point to kernel source tree in compile time,
-@@ -176,7 +181,7 @@
- AC_MSG_CHECKING(sha2 support)
- AC_DEFINE([WITH_SHA2], [], [SHA2 support])
- AC_CHECK_HEADER(openssl/sha2.h, [], [
-- CPPFLAGS_ADD="$CPPFLAGS_ADD -I./\${top_srcdir}/src/racoon/missing"
-+ CPPFLAGS_ADD="$CPPFLAGS_ADD -I\${top_srcdir}/src/racoon/missing"
- AC_LIBOBJ([sha2])
- CRYPTOBJS="$CRYPTOBJS sha2.o"])
- AC_SUBST(CRYPTOBJS)
-@@ -339,7 +344,7 @@
- fi
-
- RACOON_CHECK_BUGGY_GETADDRINFO
--if test "$buggygetaddrinfo" = "yes"; then
-+if test "$racoon_cv_bug_getaddrinfo" = "yes"; then
- AC_MSG_ERROR([Broken getaddrinfo() is no longer supported. Aborting.])
- fi
-
diff --git a/packages/ipsec-tools/files/gcc-4.2.patch b/packages/ipsec-tools/files/gcc-4.2.patch
new file mode 100644
index 0000000000..573f242e65
--- /dev/null
+++ b/packages/ipsec-tools/files/gcc-4.2.patch
@@ -0,0 +1,47 @@
+Index: ipsec-tools-0.6.7/src/racoon/var.h
+===================================================================
+--- ipsec-tools-0.6.7.orig/src/racoon/var.h 2004-11-21 03:16:59.000000000 +1100
++++ ipsec-tools-0.6.7/src/racoon/var.h 2007-06-06 12:21:41.000000000 +1000
+@@ -76,9 +76,9 @@
+ do { \
+ if (getnameinfo((x), sysdep_sa_len(x), (y), sizeof(y), (z), sizeof(z), \
+ NIFLAGS) != 0) { \
+- if (y) \
++ if (y != NULL) \
+ strncpy((y), "(invalid)", sizeof(y)); \
+- if (z) \
++ if (z != NULL) \
+ strncpy((z), "(invalid)", sizeof(z)); \
+ } \
+ } while (0);
+@@ -87,7 +87,7 @@
+ do { \
+ if (getnameinfo((x), sysdep_sa_len(x), (y), sizeof(y), NULL, 0, \
+ NIFLAGS) != 0) { \
+- if (y) \
++ if (y != NULL) \
+ strncpy((y), "(invalid)", sizeof(y)); \
+ } \
+ } while (0);
+Index: ipsec-tools-0.6.7/src/racoon/eaytest.c
+===================================================================
+--- ipsec-tools-0.6.7.orig/src/racoon/eaytest.c 2005-06-29 08:38:02.000000000 +1000
++++ ipsec-tools-0.6.7/src/racoon/eaytest.c 2007-06-06 12:22:59.000000000 +1000
+@@ -311,7 +311,7 @@
+
+ printf("exact match: succeed.\n");
+
+- if (dnstr_w1) {
++ if (dnstr_w1 != NULL) {
+ asn1dn = eay_str2asn1dn(dnstr_w1, strlen(dnstr_w1));
+ if (asn1dn == NULL || asn1dn->l == asn1dn0.l)
+ errx(1, "asn1dn length wrong for wildcard 1\n");
+@@ -321,7 +321,7 @@
+ printf("wildcard 1 match: succeed.\n");
+ }
+
+- if (dnstr_w1) {
++ if (dnstr_w1 != NULL) {
+ asn1dn = eay_str2asn1dn(dnstr_w2, strlen(dnstr_w2));
+ if (asn1dn == NULL || asn1dn->l == asn1dn0.l)
+ errx(1, "asn1dn length wrong for wildcard 2\n");
diff --git a/packages/ipsec-tools/ipsec-tools-0.6.6/racoon-search-missing.patch b/packages/ipsec-tools/files/racoon-search-missing.patch
index eebcb87017..eebcb87017 100644
--- a/packages/ipsec-tools/ipsec-tools-0.6.6/racoon-search-missing.patch
+++ b/packages/ipsec-tools/files/racoon-search-missing.patch
diff --git a/packages/ipsec-tools/ipsec-tools.inc b/packages/ipsec-tools/ipsec-tools.inc
index a6fa2efb28..ed265f12ed 100644
--- a/packages/ipsec-tools/ipsec-tools.inc
+++ b/packages/ipsec-tools/ipsec-tools.inc
@@ -1,30 +1,49 @@
DESCRIPTION = "IPsec-Tools is a port of KAME's IPsec utilities to the \
Linux-2.6 IPsec implementation."
-DEPENDS = "virtual/kernel openssl readline flex"
-LICENSE = "BSD"
+HOMEPAGE = "http://ipsec-tools.sourceforge.net/"
SECTION = "console/network"
-PR = "r1"
+LICENSE = "BSD"
+DEPENDS = "virtual/kernel openssl readline flex"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ipsec-tools/ipsec-tools-${PV}.tar.bz2 \
+ file://racoon-search-missing.patch;patch=1 \
+ file://gcc-4.2.patch;patch=1"
inherit autotools
-# --enable-adminport enable admin port
-# --enable-gssapi enable GSS-API authentication
-# --enable-hybrid enable hybrid, both mode-cfg and xauth support
-# --enable-frag enable IKE fragmentation payload support
-# --enable-stats enable statistics logging function
-# --enable-dpd enable dead peer detection
-# --enable-samode-unspec enable to use unspecified a mode of SA
-# --disable-ipv6 disable ipv6 support
-# --enable-natt enable NAT-Traversal (yes/no/kernel)
-#
-# --with-kernel-headers=/lib/modules/<uname>/build/include
-# where your Linux Kernel headers are installed
-# --with-readline support readline input (yes by default)
-# --with-openssl=DIR specify OpenSSL directory
-# --with-libradius=DIR specify libradius path (like/usr/pkg)
-EXTRA_OECONF = "--with-kernel-headers=${STAGING_KERNEL_DIR} \
- --with-readline \
- --with-openssl=${STAGING_LIBDIR}/.. \
- --without-libradius \
- --without-gssapi"
+# Options:
+# --enable-adminport enable admin port
+# --enable-rc5 enable RC5 encryption (patented)
+# --enable-idea enable IDEA encryption (patented)
+# --enable-gssapi enable GSS-API authentication
+# --enable-hybrid enable hybrid, both mode-cfg and xauth support
+# --enable-frag enable IKE fragmentation payload support
+# --enable-stats enable statistics logging function
+# --enable-dpd enable dead peer detection
+# --enable-samode-unspec enable to use unspecified a mode of SA
+# --disable-ipv6 disable ipv6 support
+# --enable-natt enable NAT-Traversal (yes/no/kernel)
+# --enable-natt-versions=list list of supported NAT-T versions delimited by coma.
+# --with-kernel-headers=/lib/modules/<uname>/build/include
+# where your Linux Kernel headers are installed
+# --with-readline support readline input (yes by default)
+# --with-flex use directiory (default: no)
+# --with-flexlib=<LIB> specify flex library.
+# --with-openssl=DIR specify OpenSSL directory
+# --with-libradius=DIR specify libradius path (like/usr/pkg)
+# --with-libpam=DIR specify libpam path (like/usr/pkg)
+#
+# Note: if you give it the actual kernel headers it won't build, it actually
+# needs to point at the linux-libc-headers version of the kernel headers.
+#
+EXTRA_OECONF = "--with-kernel-headers=${STAGING_INCDIR} \
+ --with-readline \
+ --with-openssl=${STAGING_LIBDIR}/.. \
+ --without-libradius \
+ --without-gssapi \
+ --without-libpam"
+
+# Sometimes it attempts to use y.tab.c before it is actually
+# generated. Note that the failure case is very rare, but it does
+# happen.
PARALLEL_MAKE = ""
diff --git a/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc1.bb b/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc1.bb
deleted file mode 100644
index d4b33335df..0000000000
--- a/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc1.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require ipsec-tools.inc
-
-BV = "${@bb.data.getVar('PV', d, 1).split('+')[1]}"
-SRC_URI = "${SOURCEFORGE_MIRROR}/ipsec-tools/ipsec-tools-${BV}.tar.bz2 \
- file://cross.patch;patch=1"
-S = "${WORKDIR}/ipsec-tools-${BV}"
diff --git a/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc2.bb b/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc2.bb
deleted file mode 100644
index 5fed6c1764..0000000000
--- a/packages/ipsec-tools/ipsec-tools_0.4+0.5-rc2.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require ipsec-tools.inc
-
-BV = "${@bb.data.getVar('PV', d, 1).split('+')[1].replace('-','')}"
-SRC_URI = "${SOURCEFORGE_MIRROR}/ipsec-tools/ipsec-tools-${BV}.tar.bz2 \
- file://cross.patch;patch=1"
-S = "${WORKDIR}/ipsec-tools-${BV}"
diff --git a/packages/ipsec-tools/ipsec-tools_0.6.6.bb b/packages/ipsec-tools/ipsec-tools_0.6.6.bb
index 9b0676aece..1ccc60c18d 100644
--- a/packages/ipsec-tools/ipsec-tools_0.6.6.bb
+++ b/packages/ipsec-tools/ipsec-tools_0.6.6.bb
@@ -1,47 +1,3 @@
-DESCRIPTION = "IPsec-Tools is a port of KAME's IPsec utilities to the \
-Linux-2.6 IPsec implementation."
-HOMEPAGE = "http://ipsec-tools.sourceforge.net/"
-SECTION = "console/network"
-LICENSE = "BSD"
-DEPENDS = "virtual/kernel openssl readline flex"
+PR = "r1"
-SRC_URI = "${SOURCEFORGE_MIRROR}/ipsec-tools/ipsec-tools-${PV}.tar.bz2 \
- file://racoon-search-missing.patch;patch=1"
-
-inherit autotools
-
-# Options:
-# --enable-adminport enable admin port
-# --enable-rc5 enable RC5 encryption (patented)
-# --enable-idea enable IDEA encryption (patented)
-# --enable-gssapi enable GSS-API authentication
-# --enable-hybrid enable hybrid, both mode-cfg and xauth support
-# --enable-frag enable IKE fragmentation payload support
-# --enable-stats enable statistics logging function
-# --enable-dpd enable dead peer detection
-# --enable-samode-unspec enable to use unspecified a mode of SA
-# --disable-ipv6 disable ipv6 support
-# --enable-natt enable NAT-Traversal (yes/no/kernel)
-# --enable-natt-versions=list list of supported NAT-T versions delimited by coma.
-# --with-kernel-headers=/lib/modules/<uname>/build/include
-# where your Linux Kernel headers are installed
-# --with-readline support readline input (yes by default)
-# --with-flex use directiory (default: no)
-# --with-flexlib=<LIB> specify flex library.
-# --with-openssl=DIR specify OpenSSL directory
-# --with-libradius=DIR specify libradius path (like/usr/pkg)
-# --with-libpam=DIR specify libpam path (like/usr/pkg)
-#
-# Note: if you give it the actual kernel headers it won't build, it actually
-# needs to point at the linux-libc-headers version of the kernel headers.
-#
-EXTRA_OECONF = "--with-kernel-headers=${STAGING_INCDIR} \
- --with-readline \
- --with-openssl=${STAGING_LIBDIR}/.. \
- --without-libradius \
- --without-gssapi \
- --without-libpam"
-
-# Sometimes it attempts to use y.tab.c before it is generated. Note
-# that the failure case is very rare, but it does happen.
-PARALLEL_MAKE = ""
+require ipsec-tools.inc
diff --git a/packages/ipsec-tools/ipsec-tools_0.6.7.bb b/packages/ipsec-tools/ipsec-tools_0.6.7.bb
new file mode 100644
index 0000000000..3f23b198c1
--- /dev/null
+++ b/packages/ipsec-tools/ipsec-tools_0.6.7.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require ipsec-tools.inc
diff --git a/packages/kazehakase/kazehakase_0.4.7.bb b/packages/kazehakase/kazehakase_0.4.7.bb
new file mode 100644
index 0000000000..70e99a40fb
--- /dev/null
+++ b/packages/kazehakase/kazehakase_0.4.7.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "A gtk-webcore based browser"
+HOMEPAGE = "http://kazehakase.sourceforge.jp/"
+SECTION = "x11/network"
+LICENSE = "GPLv2"
+DEPENDS = "osb-nrcit glib-2.0"
+SRC_URI = "http://iij.dl.sourceforge.jp/kazehakase/25610/kazehakase-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/keylaunch/files/akita/keylaunchrc b/packages/keylaunch/files/akita/keylaunchrc
index 27cce24e93..9bb64db066 100644
--- a/packages/keylaunch/files/akita/keylaunchrc
+++ b/packages/keylaunch/files/akita/keylaunchrc
@@ -11,17 +11,17 @@ key=...*4:-:~display-brightness.sh up
# LCD Softkeys
# Please note that the space _between_ two softkeys can be used, too ;)
-#key=....F5:-:
-key=....F15:-:~matchbox-remote -next
-#key=....F6:-:
-key=....F16:-:sylpheed
-#key=....F7:-:
-key=....F17:-:gpe-contacts
-#key=....F8:-:
-key=....F18:-:gpe-calendar
-#key=....F19:-:
-#key=....F19:-:
-#key=....F10:-:
+#key=....F20:-:
+key=....F21:-:~matchbox-remote -next
+#key=....F22:-:
+key=....F23:-:sylpheed
+#key=....F24:-:
+key=....F25:-:gpe-contacts
+#key=....F26:-:
+key=....F27:-:gpe-calendar
+#key=....F28:-:
+#key=....F29:-:
+#key=....F30:-:
# VT changing
key=...*Left:-:~chvt 1
diff --git a/packages/keylaunch/files/makefile-fix.patch b/packages/keylaunch/files/makefile-fix.patch
index 30275001df..d9c57e05ac 100644
--- a/packages/keylaunch/files/makefile-fix.patch
+++ b/packages/keylaunch/files/makefile-fix.patch
@@ -1,11 +1,15 @@
---- /tmp/Makefile 2006-07-26 09:31:43.000000000 +0200
-+++ keylaunch-2.0.10/Makefile 2006-07-26 09:32:23.464411000 +0200
-@@ -31,7 +31,7 @@
+--- keylaunch-2.0.10/Makefile.orig 2007-05-25 18:13:39.000000000 +0200
++++ keylaunch-2.0.10/Makefile 2007-05-25 18:15:47.000000000 +0200
+@@ -31,8 +31,10 @@
$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
install-program: all
- install -sD $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
-+ install -s -D $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
- install -D -m 644 $(PROG)rc $(DESTDIR)/etc/$(PROG)rc
+- install -D -m 644 $(PROG)rc $(DESTDIR)/etc/$(PROG)rc
++ install -d $(DESTDIR)$(PREFIX)/bin
++ install -s $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
++ install -d $(DESTDIR)/etc
++ install -m 644 $(PROG)rc $(DESTDIR)/etc/$(PROG)rc
install -d $(DESTDIR)/etc/X11/Xsession.d
install 90$(PROG) $(DESTDIR)/etc/X11/Xsession.d/90$(PROG)
+ install -d $(DESTDIR)/etc/X11/Xinit.d
diff --git a/packages/keylaunch/files/spitz/keylaunchrc b/packages/keylaunch/files/spitz/keylaunchrc
index 433221a586..9bb64db066 100644
--- a/packages/keylaunch/files/spitz/keylaunchrc
+++ b/packages/keylaunch/files/spitz/keylaunchrc
@@ -1,5 +1,5 @@
-key=....F9:-:gpe-contacts
-key=....F10:-:gpe-calendar
+key=....F9:-:gpe-calendar
+key=....F10:-:gpe-contacts
key=....F13:-:sylpheed
key=....F12:-:~matchbox-remote -next
key=...*F12:-:~matchbox-remote -desktop
@@ -11,17 +11,17 @@ key=...*4:-:~display-brightness.sh up
# LCD Softkeys
# Please note that the space _between_ two softkeys can be used, too ;)
-#key=....F5:-:
-key=....F15:-:~matchbox-remote -next
-#key=....F6:-:
-key=....F16:-:sylpheed
-#key=....F7:-:
-key=....F17:-:gpe-contacts
-#key=....F8:-:
-key=....F18:-:gpe-calendar
-#key=....F19:-:
-#key=....F19:-:
-#key=....F10:-:
+#key=....F20:-:
+key=....F21:-:~matchbox-remote -next
+#key=....F22:-:
+key=....F23:-:sylpheed
+#key=....F24:-:
+key=....F25:-:gpe-contacts
+#key=....F26:-:
+key=....F27:-:gpe-calendar
+#key=....F28:-:
+#key=....F29:-:
+#key=....F30:-:
# VT changing
key=...*Left:-:~chvt 1
diff --git a/packages/keylaunch/keylaunch_2.0.10.bb b/packages/keylaunch/keylaunch_2.0.10.bb
index 8b6d2b5aa2..f7d63968ac 100644
--- a/packages/keylaunch/keylaunch_2.0.10.bb
+++ b/packages/keylaunch/keylaunch_2.0.10.bb
@@ -1,7 +1,10 @@
inherit gpe
-DEPENDS = "virtual/xserver libxtst libxau libxpm libgpelaunch"
-RDEPENDS_append_openzaurus = " display-brightness"
+DEPENDS = "virtual/xserver libxtst libxau libxpm libgpelaunch display-brightness"
+
+RDEPENDS_append_spitz = " display-brightness"
+RDEPENDS_append_akita = " display-brightness"
+RDEPENDS_append_c7x0 = " display-brightness"
SECTION = "gpe"
LICENSE = "GPL"
@@ -12,13 +15,17 @@ DESCRIPTION = "A small utility for binding commands to a hot key.\
program is already running, keylaunch can bring its window to the front\
rather than just running another copy."
PACKAGE_ARCH = "${MACHINE_ARCH}"
-PR = "r7"
+PR = "r12"
SRC_URI += " file://keylaunchrc"
SRC_URI += " file://makefile-fix.patch;patch=1"
+SRC_URI += " file://80chvt-SUID"
do_install_prepend () {
install ${WORKDIR}/keylaunchrc ${S}/keylaunchrc
+
+ install -d ${D}/etc/X11/Xinit.d
+ install ${WORKDIR}/80chvt-SUID ${D}/etc/X11/Xinit.d
}
do_install_append() {
diff --git a/packages/kismet/kismet-2006-04-R1/no-chmod.patch b/packages/kismet/kismet-2006-04-R1/no-chmod.patch
deleted file mode 100644
index b22c513b68..0000000000
--- a/packages/kismet/kismet-2006-04-R1/no-chmod.patch
+++ /dev/null
@@ -1,173 +0,0 @@
---- kismet-2006-04-R1/Makefile.in.orig 2006-09-14 11:37:20.000000000 +0100
-+++ kismet-2006-04-R1/Makefile.in 2006-09-14 11:38:01.000000000 +0100
-@@ -130,52 +130,52 @@
- fi
-
- binuserinstall:
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(PS) $(BIN)/$(PS);
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(DRONE) $(BIN)/$(DRONE);
-+ install -m 755 $(PS) $(BIN)/$(PS);
-+ install -m 755 $(DRONE) $(BIN)/$(DRONE);
-
- binsuidinstall:
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 4755 $(PS) $(BIN)/$(PS);
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 4755 $(DRONE) $(BIN)/$(DRONE);
-+ install -m 4755 $(PS) $(BIN)/$(PS);
-+ install -m 4755 $(DRONE) $(BIN)/$(DRONE);
-
- commoninstall:
- mkdir -p $(ETC)
- mkdir -p $(BIN)
-
-- install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet $(BIN)/kismet
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(NC) $(BIN)/$(NC)
-- # install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(HOPPER) $(BIN)/$(HOPPER)
-+ install -m 755 scripts/kismet $(BIN)/kismet
-+ install -m 755 $(NC) $(BIN)/$(NC)
-+ # install -m 755 $(HOPPER) $(BIN)/$(HOPPER)
- @if test "$(ZAURUS)" = "yes"; then \
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(BUZZER) $(BIN)/buzzme; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(BUZZER) $(BIN)/buzzme; \
-+ install -m 755 $(BUZZER) $(BIN)/buzzme; \
-+ echo install -m 755 $(BUZZER) $(BIN)/buzzme; \
- fi
--#install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet_monitor $(BIN)/kismet_monitor
--#install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet_unmonitor $(BIN)/kismet_unmonitor
-+#install -m 755 scripts/kismet_monitor $(BIN)/kismet_monitor
-+#install -m 755 scripts/kismet_unmonitor $(BIN)/kismet_unmonitor
- mkdir -p $(MAN)/man1
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.1 $(MAN)/man1/kismet.1
-- # install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_monitor.1 $(MAN)/man1/kismet_monitor.1
-- # install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_hopper.1 $(MAN)/man1/kismet_hopper.1
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1
-+ install -m 644 man/kismet.1 $(MAN)/man1/kismet.1
-+ # install -m 644 man/kismet_monitor.1 $(MAN)/man1/kismet_monitor.1
-+ # install -m 644 man/kismet_hopper.1 $(MAN)/man1/kismet_hopper.1
-+ install -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1
- mkdir -p $(MAN)/man5
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_ui.conf.5 $(MAN)/man5/kismet_ui.conf.5
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5
-+ install -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5
-+ install -m 644 man/kismet_ui.conf.5 $(MAN)/man5/kismet_ui.conf.5
-+ install -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5
-
- @if test "$(GPSLBUILD)" = "$(GPSL)"; then \
-- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(GPSL) $(BIN)/$(GPSL); \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(GPSL) $(BIN)/$(GPSL); \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
-- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
-- echo install -o $(INSTUSR) -g $(MANGRP) -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
-+ install -m 755 $(GPSL) $(BIN)/$(GPSL); \
-+ echo install -m 755 $(GPSL) $(BIN)/$(GPSL); \
-+ install -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
-+ echo install -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
-+ install -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
-+ echo install -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
- fi
-
- mkdir -p $(WAV)
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/new_network.wav $(WAV)/new_network.wav
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/traffic.wav $(WAV)/traffic.wav
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/junk_traffic.wav $(WAV)/junk_traffic.wav
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/alert.wav $(WAV)/alert.wav
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/ap_manuf $(ETC)/ap_manuf;
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/client_manuf $(ETC)/client_manuf;
-+ install -m 644 wav/new_network.wav $(WAV)/new_network.wav
-+ install -m 644 wav/traffic.wav $(WAV)/traffic.wav
-+ install -m 644 wav/junk_traffic.wav $(WAV)/junk_traffic.wav
-+ install -m 644 wav/alert.wav $(WAV)/alert.wav
-+ install -m 644 conf/ap_manuf $(ETC)/ap_manuf;
-+ install -m 644 conf/client_manuf $(ETC)/client_manuf;
-
- @if test -f $(BIN)/kismet_curses; then \
- echo "Removing old kismet_curses binary. The panels frontend is now kismet_client."; \
-@@ -188,22 +188,22 @@
- @if test -f $(ETC)/kismet.conf; then \
- $(MAKE) -e checkconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ echo install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
- echo "Installed config into $(ETC)/kismet.conf."; \
- fi
- @if test -f $(ETC)/kismet_drone.conf; then \
- $(MAKE) -e checkdroneconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ echo install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
- echo "Installed drone config into $(ETC)/kismet_drone.conf."; \
- fi
- @if test -f $(ETC)/kismet_ui.conf; then \
- $(MAKE) -e checkuiconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ echo install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
- echo "Installed UI config into $(ETC)/kismet_ui.conf."; \
- fi
- @echo "Installed kismet into $(BIN)/."
-@@ -221,22 +221,22 @@
- @if test -f $(ETC)/kismet.conf; then \
- $(MAKE) -e checkconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ echo install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
- echo "Installed config into $(ETC)/kismet.conf."; \
- fi
- @if test -f $(ETC)/kismet_drone.conf; then \
- $(MAKE) -e checkdroneconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ echo install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
- echo "Installed drone config into $(ETC)/kismet_drone.conf."; \
- fi
- @if test -f $(ETC)/kismet_ui.conf; then \
- $(MAKE) -e checkuiconfig; \
- else \
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ echo install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
- echo "Installed UI config into $(ETC)/kismet_ui.conf."; \
- fi
- @echo "Installed kismet into $(BIN)/."
-@@ -252,11 +252,11 @@
- forceinstall: $(PS)
- $(MAKE) -e commoninstall
- $(MAKE) -e binuserinstall
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
- echo "Installed config into $(ETC)/kismet.conf.";
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
- echo "Installed drone config into $(ETC)/kismet_drone.conf.";
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
- echo "Installed UI config into $(ETC)/kismet_ui.conf.";
- @echo "Installed kismet into $(BIN)/."
- @echo "If you have not done so already, read the README file and the FAQ file. Additional"
-@@ -271,11 +271,11 @@
- suidforceinstall: $(PS)
- $(MAKE) -e commoninstall
- $(MAKE) -e binsuidinstall
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
-+ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
- echo "Installed config into $(ETC)/kismet.conf.";
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
-+ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
- echo "Installed drone config into $(ETC)/kismet_drone.conf.";
-- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
-+ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
- echo "Installed UI config into $(ETC)/kismet_ui.conf.";
- @echo "Installed kismet into $(BIN)/."
- @echo "If you have not done so already, read the README file and the FAQ file. Additional"
diff --git a/packages/kismet/kismet_2005-04-R1.bb b/packages/kismet/kismet_2005-04-R1.bb
deleted file mode 100644
index 2b29af51df..0000000000
--- a/packages/kismet/kismet_2005-04-R1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SECTION = "console/network"
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp"
-
-SRC_URI = "http://www.kismetwireless.net/code/kismet-2005-04-R1.tar.gz \
- file://no-strip.diff;patch=1;pnum=0 \
- file://no-chmod.diff;patch=1;pnum=0 \
- file://glibc3.3.2-getopt-throw.diff;patch=1;pnum=0"
-
-
-EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-do_configure() {
- oe_runconf
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "kismet-sounds"
-FILES_kismet-sounds = "/usr/share/kismet/wav"
-
-CONFFILES_${PN}_nylon = "${sysconfdir}/kismet.conf"
diff --git a/packages/kismet/kismet_2005-08-R1.bb b/packages/kismet/kismet_2005-08-R1.bb
deleted file mode 100644
index c5e58b6edb..0000000000
--- a/packages/kismet/kismet_2005-08-R1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SECTION = "console/network"
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp"
-
-SRC_URI = "http://www.kismetwireless.net/code/kismet-2005-08-R1.tar.gz \
- file://no-strip.diff;patch=1;pnum=0 \
- file://no-chmod.diff;patch=1;pnum=0 \
- file://glibc3.3.2-getopt-throw.diff;patch=1;pnum=0"
-
-
-EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-do_configure() {
- oe_runconf
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "kismet-sounds"
-FILES_kismet-sounds = "/usr/share/kismet/wav"
-
-CONFFILES_${PN}_nylon = "${sysconfdir}/kismet.conf"
diff --git a/packages/kismet/kismet_2006-04-R1.bb b/packages/kismet/kismet_2006-04-R1.bb
deleted file mode 100644
index aa51f2afa9..0000000000
--- a/packages/kismet/kismet_2006-04-R1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SECTION = "console/network"
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp"
-
-SRC_URI = "http://www.kismetwireless.net/code/kismet-2006-04-R1.tar.gz \
- file://no-chmod.patch;patch=1"
-
-
-EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-do_configure() {
- oe_runconf
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "kismet-sounds"
-FILES_kismet-sounds = "/usr/share/kismet/wav"
-
-CONFFILES_${PN}_nylon = "${sysconfdir}/kismet.conf"
diff --git a/packages/kismet/kismet_2007-01-R1b.bb b/packages/kismet/kismet_2007-01-R1b.bb
index 774e71e286..5c10300573 100644
--- a/packages/kismet/kismet_2007-01-R1b.bb
+++ b/packages/kismet/kismet_2007-01-R1b.bb
@@ -8,7 +8,7 @@ SRC_URI = "http://www.kismetwireless.net/code/kismet-2007-01-R1b.tar.gz \
file://no-chmod.patch;patch=1"
-EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
+EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include --disable-gpsmap"
inherit autotools
diff --git a/packages/pointercal/files/h2200/.mtn2git_empty b/packages/konqueror/konqueror-embedded-20070212/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/pointercal/files/h2200/.mtn2git_empty
+++ b/packages/konqueror/konqueror-embedded-20070212/.mtn2git_empty
diff --git a/packages/konqueror/konqueror-embedded-20070212/konqe-kapplication.patch b/packages/konqueror/konqueror-embedded-20070212/konqe-kapplication.patch
new file mode 100644
index 0000000000..6feb0060c5
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded-20070212/konqe-kapplication.patch
@@ -0,0 +1,12 @@
+diff -Naur kdenox-orig/konq-embed/dropin/kapplication.h kdenox/konq-embed/dropin/kapplication.h
+--- kdenox-orig/konq-embed/dropin/kapplication.h 2007-02-12 10:25:57.000000000 +0100
++++ kdenox/konq-embed/dropin/kapplication.h 2007-03-15 06:07:32.000000000 +0100
+@@ -122,7 +122,7 @@
+ // required since kdelibs 3.4
+ void updateUserTimestamp(unsigned long = 0) {}
+
+- static int KApplication::startDragDistance();
++ static int startDragDistance();
+
+ signals:
+ // required by KHTMLView
diff --git a/packages/konqueror/konqueror-embedded-20070212/konqe_new_opie.patch b/packages/konqueror/konqueror-embedded-20070212/konqe_new_opie.patch
new file mode 100644
index 0000000000..1079d23fbf
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded-20070212/konqe_new_opie.patch
@@ -0,0 +1,756 @@
+diff -urNd --exclude-from=excludelist kdenox/acinclude.m4 kdenox_new/acinclude.m4
+--- kdenox/acinclude.m4 2007-02-12 22:26:21.000000000 +1300
++++ kdenox_new/acinclude.m4 2007-02-25 22:00:27.000000000 +1300
+@@ -880,7 +880,7 @@
+ )
+
+ AC_ARG_ENABLE(
+- embedded,
++ rtti-embedded,
+ AC_HELP_STRING([--enable-rtti-embedded],[enable rtti support for Qt-embedded]),
+ kde_use_qt_emb_rtti=$enableval,
+ kde_use_qt_emb_rtti=no
+diff -urNd --exclude-from=excludelist kdenox/configure.in kdenox_new/configure.in
+--- kdenox/configure.in 2007-02-12 22:26:21.000000000 +1300
++++ kdenox_new/configure.in 2007-02-25 17:49:59.000000000 +1300
+@@ -60,10 +60,10 @@
+
+
+ if test "x$want_qpe" = "xyes"; then
+- AC_PATH_QTOPIA(2.1.1)
++ AC_PATH_QTOPIA(1.0.0)
+ dnl hack
+ CXXFLAGS="$CXXFLAGS -D_QT_QPE_"
+- LIB_QTOPIA="$LIB_QTOPIA -lqtopia -lqtopia2"
++ dnl LIB_QTOPIA="$LIB_QTOPIA -lqtopia -lqtopia2"
+ fi
+
+ dnl Checks for header files.
+diff -urNd --exclude-from=excludelist kdenox/configure.in.in kdenox_new/configure.in.in
+--- kdenox/configure.in.in 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/configure.in.in 2007-02-25 17:49:27.000000000 +1300
+@@ -56,10 +56,10 @@
+
+
+ if test "x$want_qpe" = "xyes"; then
+- AC_PATH_QTOPIA(2.1.1)
++ AC_PATH_QTOPIA(1.0.0)
+ dnl hack
+ CXXFLAGS="$CXXFLAGS -D_QT_QPE_"
+- LIB_QTOPIA="$LIB_QTOPIA -lqtopia -lqtopia2"
++ dnl LIB_QTOPIA="$LIB_QTOPIA -lqtopia -lqtopia2"
+ fi
+
+ dnl Checks for header files.
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/dropin/kfiledialog.cpp kdenox_new/konq-embed/dropin/kfiledialog.cpp
+--- kdenox/konq-embed/dropin/kfiledialog.cpp 2007-02-12 22:25:57.000000000 +1300
++++ kdenox_new/konq-embed/dropin/kfiledialog.cpp 2007-02-24 03:29:25.000000000 +1300
+@@ -23,6 +23,7 @@
+
+
+ #include "kfiledialog.h"
++#include "kdebug.h"
+
+ #include <qlayout.h>
+ #include <qconfig.h>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/dropin/kio/kprotocolmanager.cpp kdenox_new/konq-embed/dropin/kio/kprotocolmanager.cpp
+--- kdenox/konq-embed/dropin/kio/kprotocolmanager.cpp 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/dropin/kio/kprotocolmanager.cpp 2007-02-24 03:32:31.000000000 +1300
+@@ -23,7 +23,9 @@
+ */
+
+ #include "kprotocolmanager.h"
++#include <kdebug.h>
+ #include <kglobal.h>
++#include <klocale.h>
+ #include <kconfig.h>
+ #include <ioslave_defaults.h>
+ #include <kdeversion.h>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/dropin/kio/progressbase.cpp kdenox_new/konq-embed/dropin/kio/progressbase.cpp
+--- kdenox/konq-embed/dropin/kio/progressbase.cpp 2007-02-12 22:25:56.000000000 +1300
++++ kdenox_new/konq-embed/dropin/kio/progressbase.cpp 2007-02-24 03:33:10.000000000 +1300
+@@ -18,6 +18,7 @@
+
+ #include "jobclasses.h"
+ #include "progressbase.h"
++#include <kdebug.h>
+
+ //namespace KIO {
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/ipkg/preinst kdenox_new/konq-embed/ipkg/preinst
+--- kdenox/konq-embed/ipkg/preinst 1970-01-01 12:00:00.000000000 +1200
++++ kdenox_new/konq-embed/ipkg/preinst 2007-02-25 21:20:10.000000000 +1300
+@@ -0,0 +1,15 @@
++#!/bin/sh
++
++prefix=/usr/kde/3.5
++prunefiles="lib/libkhtml.la lib/libkhtml.so lib/libkhtml.so.4.0.0"
++prunefiles="$prunefiles lib/libkhtml.so.4"
++prunefiles="$prunefiles lib/kjs_html.la lib/kjs_html.so"
++
++for _file in $prunefiles; do
++ file=$PKG_ROOT/$prefix/$_file;
++ if [ -f $file ]; then
++ echo "found old file $_file from b0rked konqueror ipkg. removing."
++ rm -f $file
++ fi
++done
++
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/kdecore/kmultipledrag.h kdenox_new/konq-embed/kdesrc/kdecore/kmultipledrag.h
+--- kdenox/konq-embed/kdesrc/kdecore/kmultipledrag.h 2007-02-12 21:31:39.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/kdecore/kmultipledrag.h 2007-02-25 16:15:28.000000000 +1300
+@@ -26,6 +26,8 @@
+ #include <qvaluelist.h>
+ #include "kdelibs_export.h"
+
++#define QPtrList QList
++
+ class KMultipleDragPrivate;
+ /**
+ * This class makes it easy for applications to provide a drag object
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/css/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/css/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/css/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/css/Makefile.am 2007-02-25 16:36:23.000000000 +1300
+@@ -39,7 +39,7 @@
+ INCLUDES = -I$(top_srcdir)/kimgio -I$(top_srcdir)/kio -I$(top_srcdir)/dcop \
+ -I$(top_srcdir)/khtml -I$(top_srcdir)/libltdl -I$(top_srcdir) \
+ -I$(top_srcdir)/kwallet/client -I$(top_srcdir)/kutils \
+- -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ cssdir = $(kde_datadir)/khtml/css
+ css_DATA = html4.css quirks.css
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/dom/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/dom/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/dom/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/dom/Makefile.am 2007-02-25 16:35:07.000000000 +1300
+@@ -47,7 +47,7 @@
+ # css_extensions.h
+
+ INCLUDES = -I$(top_srcdir)/kimgio -I$(top_srcdir)/kio -I$(top_srcdir)/dcop \
+- -I$(top_srcdir)/khtml -I$(top_srcdir) -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_srcdir)/khtml -I$(top_srcdir) -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ SRCDOC_DEST=$(kde_htmldir)/en/kdelibs/khtml
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/ecma/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/ecma/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/ecma/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/ecma/Makefile.am 2007-02-25 17:24:35.000000000 +1300
+@@ -16,7 +16,7 @@
+ # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+
+-INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/kio -I$(top_srcdir)/kio/bookmarks -I$(top_srcdir)/khtml -I$(top_srcdir)/khtml/java -I$(top_srcdir)/kwallet/client -I$(top_srcdir)/kutils -I$(top_builddir)/kjs -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/kio -I$(top_srcdir)/kio/bookmarks -I$(top_srcdir)/khtml -I$(top_srcdir)/khtml/java -I$(top_srcdir)/kwallet/client -I$(top_srcdir)/kutils -I$(top_builddir)/kjs -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ KDE_CXXFLAGS = $(USE_EXCEPTIONS)
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/ecma/xmlhttprequest.cpp kdenox_new/konq-embed/kdesrc/khtml/ecma/xmlhttprequest.cpp
+--- kdenox/konq-embed/kdesrc/khtml/ecma/xmlhttprequest.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/ecma/xmlhttprequest.cpp 2007-02-25 17:27:39.000000000 +1300
+@@ -38,6 +38,10 @@
+ #include <qobject.h>
+ #include <kdebug.h>
+
++#if (QT_VERSION < 0x030000)
++#include "qt3regexp.h"
++#endif
++
+ #ifdef APPLE_CHANGES
+ #include "KWQLoader.h"
+ #else
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/html/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/html/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/html/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/html/Makefile.am 2007-02-25 16:39:50.000000000 +1300
+@@ -43,7 +43,7 @@
+ -I$(top_srcdir)/kio/kssl \
+ -I$(top_srcdir)/kjs -I$(top_srcdir)/khtml -I$(top_srcdir) \
+ -I$(top_srcdir)/kwallet/client -I$(top_srcdir)/kutils \
+- -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ # Use "make doctypes" to regenerate doctypes.cpp from doctypes.gperf
+ doctypes: $(srcdir)/doctypes.gperf $(srcdir)/Makefile.am
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/khtml_part.cpp kdenox_new/konq-embed/kdesrc/khtml/khtml_part.cpp
+--- kdenox/konq-embed/kdesrc/khtml/khtml_part.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/khtml_part.cpp 2007-02-25 17:22:46.000000000 +1300
+@@ -3221,14 +3221,14 @@
+ {
+ khtml::RenderTextArea *parent= static_cast<khtml::RenderTextArea *>(obj->parent());
+ s = parent->text();
+- s = s.replace(0xa0, ' ');
++ s = s.replace(QRegExp(QString(QChar(0xa0))), ' ');
+ tmpTextArea = parent;
+ }
+ else if ( renderLineText )
+ {
+ khtml::RenderLineEdit *parentLine= static_cast<khtml::RenderLineEdit *>(obj);
+ s = parentLine->widget()->text();
+- s = s.replace(0xa0, ' ');
++ s = s.replace(QRegExp(QString(QChar(0xa0))), ' ');
+ }
+ else if ( obj->isText() )
+ {
+@@ -3256,7 +3256,7 @@
+ if ( isLink && obj->parent()!=tmpTextArea )
+ {
+ s = static_cast<khtml::RenderText *>(obj)->data().string();
+- s = s.replace(0xa0, ' ');
++ s = s.replace(QRegExp(QString(QChar(0xa0))), ' ');
+ }
+ }
+ else if ( obj->isBR() )
+@@ -6785,9 +6785,9 @@
+ // get selected text and paste to the clipboard
+ #ifndef QT_NO_CLIPBOARD
+ QString text = selectedText();
+- text.replace(QChar(0xa0), ' ');
++ text.replace(QRegExp(QString(QChar(0xa0))), " ");
+ disconnect( kapp->clipboard(), SIGNAL( selectionChanged()), this, SLOT( slotClearSelection()));
+- kapp->clipboard()->setText(text,QClipboard::Selection);
++ kapp->clipboard()->setText(text);
+ connect( kapp->clipboard(), SIGNAL( selectionChanged()), SLOT( slotClearSelection()));
+ #endif
+ //kdDebug( 6000 ) << "selectedText = " << text << endl;
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/misc/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/misc/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/misc/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/misc/Makefile.am 2007-02-25 16:33:47.000000000 +1300
+@@ -32,7 +32,7 @@
+ stringit.h htmlhashes.h helper.h shared.h arena.h
+
+ INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/dcop -I$(top_srcdir)/kio -I$(top_srcdir)/libltdl \
+- -I$(top_srcdir)/khtml -I$(top_srcdir)/kutils -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_srcdir)/khtml -I$(top_srcdir)/kutils -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ SRCDOC_DEST=$(kde_htmldir)/en/kdelibs/khtml
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/rendering/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/rendering/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/rendering/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/rendering/Makefile.am 2007-02-25 16:40:50.000000000 +1300
+@@ -42,7 +42,7 @@
+ render_generated.h enumerate.h
+
+ INCLUDES = -I$(top_srcdir)/kimgio -I$(top_srcdir)/kio -I$(top_srcdir)/dcop \
+- -I$(top_srcdir)/kfile -I$(top_srcdir)/khtml -I$(top_srcdir)/kutils -I$(top_srcdir) -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_srcdir)/kfile -I$(top_srcdir)/khtml -I$(top_srcdir)/kutils -I$(top_srcdir) -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ SRCDOC_DEST=$(kde_htmldir)/en/kdelibs/khtml
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/rendering/render_layer.h kdenox_new/konq-embed/kdesrc/khtml/rendering/render_layer.h
+--- kdenox/konq-embed/kdesrc/khtml/rendering/render_layer.h 2007-02-12 21:31:42.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/rendering/render_layer.h 2007-02-25 16:56:00.000000000 +1300
+@@ -46,12 +46,14 @@
+
+ #include <qcolor.h>
+ #include <qrect.h>
++#include <qtextstream.h>
+ #include <assert.h>
+
+ #include "render_object.h"
+
+ class QScrollBar;
+-template <class T> class QPtrVector;
++template <class T> class QVector;
++#define QPtrVector QVector
+
+ namespace khtml {
+ class RenderStyle;
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/rendering/render_object.cpp kdenox_new/konq-embed/kdesrc/khtml/rendering/render_object.cpp
+--- kdenox/konq-embed/kdesrc/khtml/rendering/render_object.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/rendering/render_object.cpp 2007-02-25 16:44:58.000000000 +1300
+@@ -46,6 +46,7 @@
+ #include <kdebug.h>
+ #include <kglobal.h>
+ #include <qpainter.h>
++#include <qtextstream.h>
+ #include "khtmlview.h"
+ #include <khtml_part.h>
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/rendering/render_table.h kdenox_new/konq-embed/kdesrc/khtml/rendering/render_table.h
+--- kdenox/konq-embed/kdesrc/khtml/rendering/render_table.h 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/rendering/render_table.h 2007-02-25 16:56:49.000000000 +1300
+@@ -30,6 +30,7 @@
+ #include <qcolor.h>
+ #include <qptrvector.h>
+ #include <qmemarray.h>
++#include <qtextstream.h>
+
+ #include "rendering/render_box.h"
+ #include "rendering/render_block.h"
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/rendering/render_text.h kdenox_new/konq-embed/kdesrc/khtml/rendering/render_text.h
+--- kdenox/konq-embed/kdesrc/khtml/rendering/render_text.h 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/rendering/render_text.h 2007-02-25 16:46:39.000000000 +1300
+@@ -31,6 +31,7 @@
+ #include "rendering/render_line.h"
+
+ #include <qptrvector.h>
++#include <qtextstream.h>
+ #include <assert.h>
+
+ class QPainter;
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/khtml/xml/Makefile.am kdenox_new/konq-embed/kdesrc/khtml/xml/Makefile.am
+--- kdenox/konq-embed/kdesrc/khtml/xml/Makefile.am 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/khtml/xml/Makefile.am 2007-02-25 16:38:27.000000000 +1300
+@@ -37,7 +37,7 @@
+
+ INCLUDES = -I$(top_srcdir)/kimgio -I$(top_srcdir)/kio -I$(top_srcdir)/dcop \
+ -I$(top_srcdir)/khtml -I$(top_srcdir) -I$(top_srcdir)/kwallet/client \
+- -I$(top_srcdir)/kutils -I$(top_builddir)/kjs -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(X_INCLUDES) $(all_includes)
++ -I$(top_srcdir)/kutils -I$(top_builddir)/kjs -I$(top_builddir)/konq-embed/kdesrc -I$(top_builddir)/konq-embed/kdesrc/kssl -I$(top_srcdir)/konq-embed/dropin -I$(top_srcdir)/konq-embed/kdesrc/kio -I$(top_srcdir)/konq-embed/kdesrc/kdecore -I$(top_srcdir)/konq-embed/kdesrc/kutils -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/../misc -I$(srcdir)/../misc -I$(srcdir)/../css -I$(srcdir)/../dom -I$(srcdir)/../xml -I$(srcdir)/../html -I$(top_srcdir)/konq-embed/dropin/kio -I$(srcdir)/../.. -I$(srcdir)/../../kjs -I$(top_srcdir)/konq-embed/dropin/kssl -I$(srcdir)/../../../dropin/khtml -I$(top_srcdir)/konq-embed/dropin/khtml/java $(QT_INCLUDES) $(QTOPIA_INCLUDES) $(X_INCLUDES) $(all_includes)
+
+ SRCDOC_DEST=$(kde_htmldir)/en/kdelibs/khtml
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/kjs/dtoa.cpp kdenox_new/konq-embed/kdesrc/kjs/dtoa.cpp
+--- kdenox/konq-embed/kdesrc/kjs/dtoa.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/kjs/dtoa.cpp 2007-02-25 18:22:33.000000000 +1300
+@@ -1,4 +1,9 @@
+-#ifndef KONQ_EMBEDDED
++#include <config.h>
++
++#ifdef KONQ_EMBEDDED
++#include "stdlib.h"
++extern "C" double kjs_strtod(const char *s00, char **se) { return strtod(s00,se); }
++#else
+ /****************************************************************
+ *
+ * The author of this software is David M. Gay.
+@@ -175,8 +180,6 @@
+ #undef CONST
+ #endif
+
+-#include <config.h>
+-
+ #include "stdlib.h"
+
+ #ifdef WORDS_BIGENDIAN
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/kjs/dtoa.h kdenox_new/konq-embed/kdesrc/kjs/dtoa.h
+--- kdenox/konq-embed/kdesrc/kjs/dtoa.h 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/kjs/dtoa.h 2007-02-25 18:20:51.000000000 +1300
+@@ -23,14 +23,11 @@
+ #ifndef _KJS_DTOA_H_
+ #define _KJS_DTOA_H_
+
+-#ifndef KONQ_EMBEDDED
+ extern "C" double kjs_strtod(const char *s00, char **se);
++#ifndef KONQ_EMBEDDED
+ extern "C" char *kjs_dtoa(double d, int mode, int ndigits,
+ int *decpt, int *sign, char **rve);
+ extern "C" void kjs_freedtoa(char *s);
+-#else
+-#include "stdlib.h"
+-extern "C" double kjs_strtod(const char *s00, char **se) { return strtod(s00,se); }
+ #endif
+-
++
+ #endif /* _KJS_DTOA_H */
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/kjs/number_object.cpp kdenox_new/konq-embed/kdesrc/kjs/number_object.cpp
+--- kdenox/konq-embed/kdesrc/kjs/number_object.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/kjs/number_object.cpp 2007-02-25 18:05:36.000000000 +1300
+@@ -20,6 +20,8 @@
+ *
+ */
+
++#include <config.h>
++
+ #include "value.h"
+ #include "object.h"
+ #include "types.h"
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/kdesrc/kjs/ustring.cpp kdenox_new/konq-embed/kdesrc/kjs/ustring.cpp
+--- kdenox/konq-embed/kdesrc/kjs/ustring.cpp 2007-02-12 22:26:20.000000000 +1300
++++ kdenox_new/konq-embed/kdesrc/kjs/ustring.cpp 2007-02-25 18:10:22.000000000 +1300
+@@ -21,9 +21,7 @@
+ *
+ */
+
+-#ifdef HAVE_CONFIG_H
+ #include <config.h>
+-#endif
+
+ #include <stdlib.h>
+ #include <stdio.h>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/actions/konqe.rc kdenox_new/konq-embed/src/actions/konqe.rc
+--- kdenox/konq-embed/src/actions/konqe.rc 1970-01-01 12:00:00.000000000 +1200
++++ kdenox_new/konq-embed/src/actions/konqe.rc 2007-02-25 21:20:10.000000000 +1300
+@@ -0,0 +1,107 @@
++<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
++<kpartgui name="konqe" version="1">
++<Create>
++ <Action name="file_new" stdAction="true" icon="filenew.png"/>
++ <Action name="file_open" stdAction="true" icon="fileopen.png"/>
++ <Action name="file_save" stdAction="true" icon="filesave.png"/>
++ <Action name="file_save_as" stdAction="true" icon="filesaveas.png"/>
++ <Action name="file_print" stdAction="true" icon="fileprint.png"/>
++ <Action name="go_home" stdAction="true" icon="gohome.png"/>
++ <Action name="go_back" stdAction="true" icon="back.png"/>
++ <Action name="go_forward" stdAction="true" icon="forward.png"/>
++ <Action name="edit_undo" stdAction="true" icon="undo.png"/>
++ <Action name="edit_redo" stdAction="true" icon="redo.png"/>
++ <Action name="edit_cut" stdAction="true" icon="editcut.png"/>
++ <Action name="edit_copy" stdAction="true" icon="editcopy.png"/>
++ <Action name="edit_paste" stdAction="true" icon="editpaste.png"/>
++ <Action name="edit_find" stdAction="true" icon="find.png"/>
++ <Action name="view_redisplay" stdAction="true" icon="reload.png"/>
++ <Action name="view_zoom" stdAction="true" popupMenu="true" icon="viewmag.png"/>
++ <Action name="bookmark_add" stdAction="true" icon="bookmark_add.png"/>
++ <Action name="bookmark_edit" stdAction="true" accel="" icon="bookmark.png"/>
++ <Action name="options_configure" stdAction="true" icon="configure.png"/>
++</Create>
++<Create>
++ <Action name="windows" popupMenu="true" icon="window_list.png">
++ <text>Windows List</text>
++ </Action>
++ <Action name="view_close" accel="Ctrl+W" icon="fileclose.png">
++ <text>Close View</text>
++ </Action>
++ <Action name="view_next" accel="Ctrl+Tab" icon="2rightarrow.png">
++ <text>Next View</text>
++ </Action>
++ <Action name="view_autoload_images" toggle="true">
++ <text>Autoload Images</text>
++ </Action>
++ <Action name="go_stop" icon="stop.png">
++ <text>Stop Loading</text>
++ </Action>
++ <Action name="info_security" icon="lock.png">
++ <text>Show Security Information</text>
++ </Action>
++ <Action name="options_show_location" accel="F11" toggle="true">
++ <text>Show Location Bar</text>
++ </Action>
++ <Action name="options_show_sidebar" accel="F12" toggle="true">
++ <text>Show Side Bar</text>
++ </Action>
++ <Action name="options_show_statusbar" stdAction="true" accel="F10"/>
++ <Action name="main_menu" popupMenu="true" icon="gear.png">
++ <text>Main Menu</text>
++ </Action>
++ <Action name="view_load_images" icon="images_display.png">
++ <text>Load Images</text>
++ </Action>
++</Create>
++<Menu name="main_menu">
++ <Action name="file_new"/>
++ <Separator/>
++ <Action name="view_autoload_images"/>
++ <Action name="options_show_statusbar"/>
++ <Action name="options_show_location"/>
++ <Action name="options_show_sidebar"/>
++ <Separator/>
++ <Action name="edit_find"/>
++ <Separator/>
++ <Action name="options_configure"/>
++ <Separator/>
++ <Action name="bookmark_add"/>
++ <Action name="bookmark_edit"/>
++ <Action name="bookmarks"/>
++ <Separator/>
++ <Action name="view_next"/>
++ <Action name="view_close"/>
++</Menu>
++<ToolBar name="main_bar">
++ <Action name="main_menu"/>
++ <ToolBar name="browser_bar"/>
++ <ToolBar name="edit_bar"/>
++ <Spacer/>
++ <Action name="windows"/>
++</ToolBar>
++<ToolBar name="browser_bar" newline="true">
++ <Action name="file_print"/>
++ <Action name="go_back"/>
++ <Action name="go_forward"/>
++ <Action name="go_home"/>
++ <Action name="view_redisplay"/>
++ <Action name="go_stop"/>
++ <Separator/>
++ <Action name="info_security"/>
++ <Action name="view_zoom"/>
++ <Action name="view_load_images"/>
++</ToolBar>
++<ToolBar name="edit_bar" newline="true">
++ <Action name="file_open"/>
++ <Action name="file_save"/>
++ <Action name="file_save_as"/>
++ <Action name="file_print"/>
++ <Separator/>
++ <Action name="edit_undo"/>
++ <Action name="edit_redo"/>
++ <Action name="edit_cut"/>
++ <Action name="edit_copy"/>
++ <Action name="edit_paste"/>
++</ToolBar>
++</kpartgui>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarkeditimpl.cc kdenox_new/konq-embed/src/bookmarkeditimpl.cc
+--- kdenox/konq-embed/src/bookmarkeditimpl.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarkeditimpl.cc 2007-02-25 19:17:29.000000000 +1300
+@@ -24,6 +24,8 @@
+
+ #include "bookmarkeditimpl.h"
+
++#include <config.h>
++
+ #if defined(ENABLE_BOOKMARKS)
+
+ #include "mainwindowbase.h"
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarkeditor.cc kdenox_new/konq-embed/src/bookmarkeditor.cc
+--- kdenox/konq-embed/src/bookmarkeditor.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarkeditor.cc 2007-02-25 17:40:34.000000000 +1300
+@@ -16,6 +16,8 @@
+ #include <qimage.h>
+ #include <qpixmap.h>
+
++#include <kstandarddirs.h>
++
+ namespace
+ {
+ QPixmap getPngPixmap( const QString &name )
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarkeditorhierarchical.cc kdenox_new/konq-embed/src/bookmarkeditorhierarchical.cc
+--- kdenox/konq-embed/src/bookmarkeditorhierarchical.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarkeditorhierarchical.cc 2007-02-25 20:46:27.000000000 +1300
+@@ -22,11 +22,20 @@
+
+ */
+
++#include <config.h>
++
+ #if defined(ENABLE_BOOKMARKS)
+
++#include <xmltree.h>
++#include <qtoolbutton.h>
++#include <qlineedit.h>
++#include <qlabel.h>
++
+ #include "bookmarkeditorhierarchical.h"
+ #include <assert.h>
+ #include "bookmarks.h"
++#include "bookmarkeditimpl.h"
++
+
+ //////// HELPER FUNCTIONS /////////////////////////////////
+ namespace {
+@@ -204,7 +213,7 @@
+ void BookmarkEditorHierarchical::newFolder()
+ {
+ BookmarkEdit *edit = new BookmarkEdit( this );
+- edit->setCaption( i18n( "New Folder" ) );
++ edit->setCaption( tr( "New Folder" ) );
+ edit->location->setEnabled(false);
+ edit->location->hide();
+ edit->TextLabel2->hide();
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarkeditorhierarchical.h kdenox_new/konq-embed/src/bookmarkeditorhierarchical.h
+--- kdenox/konq-embed/src/bookmarkeditorhierarchical.h 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarkeditorhierarchical.h 2007-02-25 18:27:17.000000000 +1300
+@@ -22,9 +22,10 @@
+ #ifndef __bookmarkeditorhierarchical_h__
+ #define __bookmarkeditorhierarchical_h__
+
++#include <config.h>
++
+ #if defined(ENABLE_BOOKMARKS)
+
+-#include <config.h>
+ #include "bookmarkeditorimpl.h"
+
+ class XMLElement;
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarkeditorimpl.cc kdenox_new/konq-embed/src/bookmarkeditorimpl.cc
+--- kdenox/konq-embed/src/bookmarkeditorimpl.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarkeditorimpl.cc 2007-02-25 19:16:40.000000000 +1300
+@@ -23,12 +23,12 @@
+
+ #include "bookmarkeditorimpl.h"
+
++#include <config.h>
++
+ #if defined(ENABLE_BOOKMARKS)
+
+ #include "bookmarkeditimpl.h"
+
+-#include <config.h>
+-
+ #include "bookmarks.h"
+ #include "xmltree.h"
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarks.cc kdenox_new/konq-embed/src/bookmarks.cc
+--- kdenox/konq-embed/src/bookmarks.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarks.cc 2007-02-25 18:28:08.000000000 +1300
+@@ -24,6 +24,8 @@
+
+ #if defined(ENABLE_BOOKMARKS)
+
++#warning BOOKMARKS ARE ENABLED
++
+ #include "bookmarks.h"
+ #include "xmltree.h"
+ #include "mainwindowbase.h"
+@@ -39,6 +41,7 @@
+ #include <qstring.h>
+ #include <qwidget.h>
+ #include <qfile.h>
++#include <qtimer.h>
+
+ #include <klocale.h>
+ #include <kstandarddirs.h>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/bookmarks.h kdenox_new/konq-embed/src/bookmarks.h
+--- kdenox/konq-embed/src/bookmarks.h 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/bookmarks.h 2007-02-25 18:26:32.000000000 +1300
+@@ -34,6 +34,8 @@
+
+ #include <kurl.h>
+
++#define QPtrList QList
++
+ class QPopupMenu;
+ class XMLElement;
+ class ActionMenu;
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/mainwindow_qpe.cc kdenox_new/konq-embed/src/mainwindow_qpe.cc
+--- kdenox/konq-embed/src/mainwindow_qpe.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/mainwindow_qpe.cc 2007-02-25 17:46:32.000000000 +1300
+@@ -90,7 +90,7 @@
+ return iconSet;
+ }
+
+-void MainWindowBase::statusJustText( const QString &_msg, bool )
++void MainWindowQPE::statusJustText( const QString &_msg, bool )
+ {
+ QString msg = _msg;
+ msg.replace( QRegExp( "</?qt>" ), QString::null );
+@@ -99,7 +99,7 @@
+ Global::statusMessage( msg );
+ }
+
+-void MainWindowBase::statusMessage( const QString &_msg, bool visible )
++void MainWindowQPE::statusMessage( const QString &_msg, bool visible )
+ {
+ statusJustText( _msg, visible );
+ }
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/mainwindow_qpe.h kdenox_new/konq-embed/src/mainwindow_qpe.h
+--- kdenox/konq-embed/src/mainwindow_qpe.h 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/mainwindow_qpe.h 2007-02-25 17:47:23.000000000 +1300
+@@ -39,6 +39,10 @@
+
+ protected:
+ virtual QIconSet loadPixmap( const char * const xpm[] );
++
++protected slots:
++ virtual void statusJustText( const QString &msg, bool visible );
++ virtual void statusMessage( const QString &msg, bool visible );
+ };
+
+ #endif
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/mainwindow_road.cc kdenox_new/konq-embed/src/mainwindow_road.cc
+--- kdenox/konq-embed/src/mainwindow_road.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/mainwindow_road.cc 2007-02-25 20:32:12.000000000 +1300
+@@ -20,10 +20,11 @@
+
+ #ifdef KONQ_GUI_ROAD
+
++#include <config.h>
++
+ #include "mainwindow_road.h"
+ #include "popupaction.h"
+
+-
+ #include <qpopupmenu.h>
+ #include <qtoolbar.h>
+ #include <qaction.h>
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/mainwindow_x11.cc kdenox_new/konq-embed/src/mainwindow_x11.cc
+--- kdenox/konq-embed/src/mainwindow_x11.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/mainwindow_x11.cc 2007-02-25 20:33:10.000000000 +1300
+@@ -21,6 +21,8 @@
+
+ // Implementation of the X11 GUI
+
++#include <config.h>
++
+ #include "mainwindow_x11.h"
+ #include "popupaction.h"
+
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/roadtabbar.cc kdenox_new/konq-embed/src/roadtabbar.cc
+--- kdenox/konq-embed/src/roadtabbar.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/roadtabbar.cc 2007-02-25 17:44:19.000000000 +1300
+@@ -18,6 +18,9 @@
+ Boston, MA 02110-1301, USA.
+ */
+
++#include <qaction.h>
++#include <kconfig.h>
++
+ #include "roadtabbar.h"
+
+ RoadTabParams::RoadTabParams( const QIconSet &defaultIS, const QIconSet &loadingIS,
+@@ -114,12 +117,12 @@
+
+ void RoadTabBar::initContextMenu()
+ {
+- QAction *qa = new QAction( QString::null, i18n( "&Close Tab" ), 0, this, "contextTabClose" );
++ QAction *qa = new QAction( QString::null, tr( "&Close Tab" ), 0, this, "contextTabClose" );
+ connect( qa, SIGNAL( activated() ), this, SLOT( contextClose() ) );
+ qa->addTo( &m_contextMenu );
+ m_contextMenuCloseId = m_contextMenu.idAt( 0 );
+
+- qa = new QAction( QString::null, i18n( "&New tab" ), 0, this, "contextTabNew" );
++ qa = new QAction( QString::null, tr( "&New tab" ), 0, this, "contextTabNew" );
+ connect( qa, SIGNAL( activated() ), this, SIGNAL( requestNewView() ) );
+ qa->addTo( &m_contextMenu );
+ }
+@@ -184,7 +187,7 @@
+ {
+ QString caption( text );
+ if ( caption.isEmpty() )
+- caption = i18n( "Blank" );
++ caption = tr( "Blank" );
+ // the caption may not exceed a given width, so shorten it if necessary
+ // the following is inefficient, but clear, correct, and unlikely to be a bottleneck
+ if ( m_params.fontMetrics.width( caption ) > m_params.maxWidth )
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/roadtabbar.h kdenox_new/konq-embed/src/roadtabbar.h
+--- kdenox/konq-embed/src/roadtabbar.h 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/roadtabbar.h 2007-02-25 17:42:40.000000000 +1300
+@@ -22,6 +22,9 @@
+ #define __roadtabbar_h__
+
+ #include <qtabbar.h>
++#include <qpopupmenu.h>
++
++#include "view.h"
+
+ struct RoadTabParams
+ {
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/src/run.cc kdenox_new/konq-embed/src/run.cc
+--- kdenox/konq-embed/src/run.cc 2007-02-12 22:25:55.000000000 +1300
++++ kdenox_new/konq-embed/src/run.cc 2007-02-25 17:34:35.000000000 +1300
+@@ -24,6 +24,7 @@
+ #include "view.h"
+
+ #include <khtml_part.h>
++#include <khtml_ext.h>
+
+ Run::Run( View *view, const KURL &url, const KParts::URLArgs &args )
+ : KHTMLRun( static_cast<KHTMLPart *>(view->part()), 0,
+@@ -48,7 +49,7 @@
+ // if ( isTextExecutable(mimeType) )
+ // mimeType = QString::fromLatin1("text/plain"); // view, don't execute
+ QString suggestedFilename = m_strURL.filename();
+- KHTMLPopupGUIClient::saveURL( part()->widget(), i18n( "Save As" ), m_strURL, urlArgs().metaData(), QString::null, 0, suggestedFilename, type );
++ KHTMLPopupGUIClient::saveURL( part()->widget(), QObject::tr( "Save As" ), m_strURL, urlArgs().metaData(), QString::null, 0, suggestedFilename, type );
+
+ m_bFinished = true;
+ emit error();
+diff -urNd --exclude-from=excludelist kdenox/konq-embed/dropin/khtml/khtml_ext.cpp kdenox_new/konq-embed/dropin/khtml/khtml_ext.cpp
+--- kdenox/konq-embed/dropin/khtml/khtml_ext.cpp 2007-02-12 22:25:56.000000000 +1300
++++ kdenox_new/konq-embed/dropin/khtml/khtml_ext.cpp 2007-02-24 03:38:24.000000000 +1300
+@@ -115,7 +115,8 @@
+ const QString &filter, long cacheId,
+ const QString & suggestedFilename, const QString& mimeType )
+ {
+- QString name = QString::fromLatin1( "index.html" );
++/*
++QString name = QString::fromLatin1( "index.html" );
+ if ( !suggestedFilename.isEmpty() )
+ name = suggestedFilename;
+ else if ( !url.fileName().isEmpty() )
+@@ -166,6 +167,7 @@
+
+ if ( destURL.isValid() )
+ saveURL(url, destURL, metadata, cacheId, f);
++*/
+ }
+
+ void KHTMLPopupGUIClient::saveURL( const KURL &url, const KURL &destURL,
diff --git a/packages/konqueror/konqueror-embedded-20070212/konqueror.desktop b/packages/konqueror/konqueror-embedded-20070212/konqueror.desktop
new file mode 100644
index 0000000000..1f473117e9
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded-20070212/konqueror.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Exec=konqueror
+Icon=konqueror/konqueror
+Type=Application
+Name=konqueror
+Comment=Konqueror browser
diff --git a/packages/konqueror/konqueror-embedded-20070212/konqueror.png b/packages/konqueror/konqueror-embedded-20070212/konqueror.png
new file mode 100644
index 0000000000..879d470bbf
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded-20070212/konqueror.png
Binary files differ
diff --git a/packages/konqueror/konqueror-embedded_20070212.bb b/packages/konqueror/konqueror-embedded_20070212.bb
new file mode 100644
index 0000000000..31eebaa860
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded_20070212.bb
@@ -0,0 +1,94 @@
+DESCRIPTION = "KDE Web Browser Konqueror, QtE based Palmtop Environments Edition"
+SECTION = "opie/applications"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.konqueror.org/"
+DEPENDS = "openssl libpcre virtual/libqte2 dcopidl-native dcopidl2cpp-native"
+LICENSE = "LGPL/GPL"
+PR = "r4"
+
+# this Konqueror needs the KDEDIR set and the font helvetica installed on the target
+
+inherit autotools
+
+SRC_URI = "http://www.basyskom.de/uploads/175/35/kdenox_snapshot_Qt2_2007.02.12.tar.bz2 \
+ file://konqe_new_opie.patch;patch=1 \
+ file://konqe-kapplication.patch;patch=1"
+S = "${WORKDIR}/kdenox"
+
+export QMAKE = "${STAGING_BINDIR_NATIVE}/qmake"
+export MOC = "${STAGING_BINDIR_NATIVE}/moc"
+export UIC = "${STAGING_BINDIR_NATIVE}/uic"
+export exec_prefix = "${palmtopdir}"
+#export CXXFLAGS = "-fexceptions -frtti -DKJS_VERBOSE=1 -DQT_THREAD_SUPPORT -DQ_OS_UNIX -DQT_NO_DOM -DENABLE_BOOKMARKS"
+export CXXFLAGS = "-fexceptions -fno-rtti -DKJS_VERBOSE=1 -DQT_THREAD_SUPPORT -DQ_OS_UNIX -DENABLE_BOOKMARKS"
+export PCRE_CONFIG = "invalid"
+# uncomment this for a static build
+# EXTRAFLAGS = "-lts"
+# EXTRAFLAGS_c7x0 = "-lts -laticore"
+export EXTRA_OEMAKE = "EXTRA_LDFLAGS='${EXTRAFLAGS}'"
+
+EXTRA_OECONF = '--prefix=${palmtopdir} \
+ --exec-prefix=${palmtopdir} \
+# --includedir=${STAGING_INCDIR} \
+ --includedir=/usr/include \
+ --with-extra-includes=${STAGING_INCDIR} \
+ --with-extra-libs=${STAGING_LIBDIR} \
+ --with-qtopia-dir=${OPIEDIR} \
+ --with-ssl-version=0.9.7e \
+ --with-ssl-dir=${STAGING_LIBDIR}/.. \
+ --with-qt-includes=${STAGING_DIR}/${HOST_SYS}/qt2/include \
+ --with-qt-libraries=${STAGING_DIR}/${HOST_SYS}/qt2/lib \
+ --with-qt-dir=${QTDIR} \
+ --enable-fontsubs \
+ --with-konq-tmp-prefix=/tmp/kde-cache \
+# --enable-static \
+ --disable-static \
+ --enable-shared \
+ --disable-debug \
+ --with-gui=qpe \
+ --with-ipv6-lookup=no \
+ --without-xinerama \
+# --disable-scrollbars \
+ --disable-selection \
+ --disable-bookmarks \
+ --with-javascript=static \
+ --enable-debug=yes \
+ --disable-printing \
+# --enable-pcre \
+ --disable-pcre \
+ --without-arts \
+ --enable-jshostext \
+ --disable-selection \
+ --enable-final \
+ --enable-qt-embedded \
+# --enable-rtti-embedded \
+ --enable-mt \
+ --enable-qpe \
+ --enable-qt-mt \
+ --enable-fwnewepg=yes \
+ --enable-embedded '
+
+do_configure_prepend() {
+ cd ${S}
+ if ! test -L admin
+ then
+ ln -s ../kdelibs/admin admin
+ fi
+}
+
+do_compile_prepend() {
+ perl admin/am_edit
+}
+
+do_install_append() {
+ install -d ${D}${palmtopdir}/apps/Applications
+ install -m 0644 ${FILESDIR}/konqueror.desktop ${D}${palmtopdir}/apps/Applications/
+ install -d ${D}${palmtopdir}/pics/konqueror
+ install -m 0644 ${FILESDIR}/konqueror.png ${D}${palmtopdir}/pics/konqueror/
+ mv ${D}${palmtopdir}/bin/konqueror ${D}${palmtopdir}/bin/konqueror.bin
+ { echo '#!/bin/sh' ; echo "KDEDIR=/usr exec ${palmtopdir}/bin/konqueror.bin" ; } > ${D}${palmtopdir}/bin/konqueror
+ chmod 0755 ${D}${palmtopdir}/bin/konqueror
+}
+
+FILES_${PN} = "${palmtopdir} ${datadir}"
+
diff --git a/packages/lftp/lftp_3.5.1.bb b/packages/lftp/lftp_3.5.1.bb
index df184ae9ca..1390f0b22f 100644
--- a/packages/lftp/lftp_3.5.1.bb
+++ b/packages/lftp/lftp_3.5.1.bb
@@ -10,4 +10,8 @@ SRC_URI = "ftp://ftp.wiretapped.net/pub/mirrors/lftp/old/lftp-3.5.1.tar.bz2"
EXTRA_OECONF = "--disable-largefile --disable-rpath --with-included-readline=no"
+do_configure_prepend () {
+ rm ${S}/m4/iconv.m4
+}
+
inherit autotools gettext
diff --git a/packages/liba52/liba52_0.7.4.bb b/packages/liba52/liba52_0.7.4.bb
index 3093f57a6a..e29e6c9b2f 100644
--- a/packages/liba52/liba52_0.7.4.bb
+++ b/packages/liba52/liba52_0.7.4.bb
@@ -1,22 +1,23 @@
-LICENSE = "GPL"
-
DESCRIPTION = "Library for reading some sort of media format."
+LICENSE = "GPL"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = ""
+PR = "r1"
inherit autotools
SRC_URI = "http://liba52.sourceforge.net/files/a52dec-${PV}.tar.gz"
-S="${WORKDIR}/a52dec-${PV}"
+S = "${WORKDIR}/a52dec-${PV}"
EXTRA_OECONF = " --enable-shared "
-PACKAGES = "${PN} ${PN}-dev a52dec a52dec-doc"
+PACKAGES =+ "a52dec a52dec-dbg a52dec-doc"
-FILES_${PN} = " ${libdir}/liba52.so.0 ${libdir}/liba52.so.0.0.0 "
+FILES_${PN} = " ${libdir}/liba52.so.0 ${libdir}/liba52.so.0.0.0 "
FILES_${PN}-dev = " ${includedir}/a52dec/*.h ${libdir}/liba52.so ${libdir}/liba52.la ${libdir}/liba52.a "
+FILES_${PN}-dbg = " ${libdir}/.debug/*"
FILES_a52dec = " ${bindir}/* "
+FILES_a52dec-dbg = " ${bindir}/.debug/* "
FILES_a52dec-doc = " ${mandir}/man1/* "
do_stage() {
diff --git a/packages/libcap/libcap-1.10/syscall.patch b/packages/libcap/libcap-1.10/syscall.patch
new file mode 100644
index 0000000000..86163f2b1a
--- /dev/null
+++ b/packages/libcap/libcap-1.10/syscall.patch
@@ -0,0 +1,20 @@
+Index: libcap-1.10/libcap/cap_sys.c
+===================================================================
+--- libcap-1.10.orig/libcap/cap_sys.c 2007-05-24 10:59:24.000000000 +0200
++++ libcap-1.10/libcap/cap_sys.c 2007-05-24 11:01:42.000000000 +0200
+@@ -11,6 +11,7 @@
+ #define __LIBRARY__
+ #include <linux/unistd.h>
+
++#if 0
+ _syscall2(int, capget,
+ cap_user_header_t, header,
+ cap_user_data_t, data)
+@@ -18,6 +19,7 @@
+ _syscall2(int, capset,
+ cap_user_header_t, header,
+ const cap_user_data_t, data)
++#endif
+
+ /*
+ * $Log: cap_sys.c,v $
diff --git a/packages/libcap/libcap_1.10.bb b/packages/libcap/libcap_1.10.bb
index a7e1068f49..172acaca6e 100644
--- a/packages/libcap/libcap_1.10.bb
+++ b/packages/libcap/libcap_1.10.bb
@@ -3,12 +3,14 @@ PRIORITY = "optional"
SECTION = "libs"
LICENSE = "GPL"
DEPENDS = "bison-native flex-native"
+PR = "r1"
CFLAGS_append = " -I${S}/libcap/include"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/security/linux-privs/kernel-2.4/${PN}-${PV}.tar.bz2 \
file://makenames.patch;patch=1 \
- file://make.patch;patch=1 "
+ file://make.patch;patch=1 \
+ file://syscall.patch;patch=1"
FILES_${PN} = "${libdir}"
FILES_${PN}-dev = "${includedir}"
diff --git a/packages/libeventdb/libeventdb_0.90.bb b/packages/libeventdb/libeventdb_0.90.bb
new file mode 100644
index 0000000000..2372db528b
--- /dev/null
+++ b/packages/libeventdb/libeventdb_0.90.bb
@@ -0,0 +1,14 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Database access library for GPE calendar"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "libgpewidget libgpepimc sqlite"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit pkgconfig gpe autotools
+
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/libeventdb/libeventdb_svn.bb b/packages/libeventdb/libeventdb_svn.bb
index c18d28d273..4361df2ea4 100644
--- a/packages/libeventdb/libeventdb_svn.bb
+++ b/packages/libeventdb/libeventdb_svn.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
DEPENDS = "libgpewidget libgpepimc sqlite"
-PV = "0.30+svn${SRCDATE}"
+PV = "0.90+svn${SRCDATE}"
PR = "r0"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libfakekey/libfakekey_svn.bb b/packages/libfakekey/libfakekey_svn.bb
index 74947ab0ff..f4c7afb856 100644
--- a/packages/libfakekey/libfakekey_svn.bb
+++ b/packages/libfakekey/libfakekey_svn.bb
@@ -1,9 +1,9 @@
-DESCRIPTION = "Matchbox keyboard"
+DESCRIPTION = "Library to generate fake keys for Matchbox keyboard"
LICENSE = "GPL"
DEPENDS = "libxtst"
SECTION = "x11/wm"
PR="r2"
-PV = "0.0+svn${SRCDATE}"
+PV = "0.2+svn${SRCDATE}"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
diff --git a/packages/libgpepimc/libgpepimc_0.9.bb b/packages/libgpepimc/libgpepimc_0.9.bb
new file mode 100644
index 0000000000..57b7b22191
--- /dev/null
+++ b/packages/libgpepimc/libgpepimc_0.9.bb
@@ -0,0 +1 @@
+require libgpepimc.inc
diff --git a/packages/libgpevtype/libgpevtype_0.50.bb b/packages/libgpevtype/libgpevtype_0.50.bb
new file mode 100644
index 0000000000..b9d0c19378
--- /dev/null
+++ b/packages/libgpevtype/libgpevtype_0.50.bb
@@ -0,0 +1,17 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Data interchange library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "libmimedir libeventdb"
+PR = "r0"
+
+inherit pkgconfig gpe autotools
+
+SRC_URI = "${GPE_MIRROR}/${PN}-${PV}.tar.bz2"
+
+
+do_stage () {
+ autotools_stage_all
+}
+
+
diff --git a/packages/libgpevtype/libgpevtype_svn.bb b/packages/libgpevtype/libgpevtype_svn.bb
index 88e03c9b64..44388ba37c 100644
--- a/packages/libgpevtype/libgpevtype_svn.bb
+++ b/packages/libgpevtype/libgpevtype_svn.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Data interchange library for GPE"
SECTION = "gpe/libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "libmimedir libeventdb"
+DEPENDS = "libmimedir libeventdb libtododb"
PV = "0.50+svn${SRCDATE}"
PR = "r1"
diff --git a/packages/libhandoff/libhandoff_0.1.bb b/packages/libhandoff/libhandoff_0.1.bb
new file mode 100644
index 0000000000..bafbb9ec10
--- /dev/null
+++ b/packages/libhandoff/libhandoff_0.1.bb
@@ -0,0 +1,13 @@
+LICENSE = "GPL"
+DESCRIPTION = "handoff library for GPE calendar"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0"
+
+inherit pkgconfig gpe autotools
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/pointercal/files/hx4700/.mtn2git_empty b/packages/libhangul/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/pointercal/files/hx4700/.mtn2git_empty
+++ b/packages/libhangul/.mtn2git_empty
diff --git a/packages/libhangul/libhangul_0.0.4.bb b/packages/libhangul/libhangul_0.0.4.bb
new file mode 100644
index 0000000000..289dc33dc1
--- /dev/null
+++ b/packages/libhangul/libhangul_0.0.4.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "libhangul is a generalized and portable library for processing hangul (Korean)."
+HOMEPAGE = "http://kldp.net/projects/hangul/"
+SECTION = "x11/input"
+LICENSE = "GPL"
+DEPENDS = "gtk+ glib-2.0"
+PR = "r0"
+
+SRC_URI = "http://kldp.net/frs/download.php/3733/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig lib_package
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libiconv/libiconv_1.9.2.bb b/packages/libiconv/libiconv_1.11.bb
index 059d5fd4c5..de87486a87 100644
--- a/packages/libiconv/libiconv_1.9.2.bb
+++ b/packages/libiconv/libiconv_1.11.bb
@@ -13,11 +13,18 @@ S = "${WORKDIR}/libiconv-${PV}"
inherit autotools pkgconfig
-EXTRA_OECONF += "--enable-shared --enable-static"
+EXTRA_OECONF += "--enable-shared --enable-static --enable-relocatable"
do_configure () {
rm -f m4/libtool.m4 libcharset/m4/libtool.m4
autotools_do_configure
+
+ # As we do not really regenerate the Makefiles... and they have stale deps to this file
+ touch m4/libtool.m4
+
+ # Fix stupid libtool... handling. rpath handling can't be disabled and the Makefile's can't be regenerated..
+ # (GNU sed required)
+ sed -i s/^hardcode_libdir_flag_spec/#hardcode_libdir_flag_spec/ ${S}/*-libtool
}
do_stage () {
diff --git a/packages/libmpeg2/libmpeg2-0.4.0b/Makefile.patch b/packages/libmpeg2/libmpeg2-0.4.0b/Makefile.patch
deleted file mode 100644
index 78cf8b7275..0000000000
--- a/packages/libmpeg2/libmpeg2-0.4.0b/Makefile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./src/Makefile.am.old
-+++ ./src/Makefile.am
-@@ -8,7 +8,9 @@
- mpeg2dec_SOURCES = mpeg2dec.c dump_state.c getopt.c gettimeofday.c
- mpeg2dec_LDADD = $(libvo) $(libmpeg2) $(libmpeg2convert)
- extract_mpeg2_SOURCES = extract_mpeg2.c getopt.c
-+extract_mpeg2_LDADD = $(libvo) $(libmpeg2) $(libmpeg2convert)
- corrupt_mpeg2_SOURCES = corrupt_mpeg2.c getopt.c
-+corrupt_mpeg2_LDADD = $(libvo) $(libmpeg2) $(libmpeg2convert)
-
- man_MANS = mpeg2dec.1 extract_mpeg2.1
-
diff --git a/packages/libmpeg2/libmpeg2_0.4.0b.bb b/packages/libmpeg2/libmpeg2_0.4.0b.bb
deleted file mode 100644
index bd57ed86d4..0000000000
--- a/packages/libmpeg2/libmpeg2_0.4.0b.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-DESCRIPTION = "MPEG Video Decoder Library"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "virtual/libsdl"
-LICENSE = "GPL"
-
-PR = "r2"
-
-SRC_URI = "http://libmpeg2.sourceforge.net/files/mpeg2dec-${PV}.tar.gz \
- file://Makefile.patch;patch=1 "
-S = "${WORKDIR}/mpeg2dec-0.4.0"
-
-inherit autotools lib_package
-
-EXTRA_OECONF="--enable-shared"
-
-LEAD_SONAME = "libmpeg2.so.0"
-
-PACKAGES =+ "libmpeg2convert libmpeg2convert-dev"
-
-FILES_libmpeg2convert = "${libdir}/libmpeg2convert.so.*"
-FILES_libmpeg2convert-dev = "${libdir}/libmpeg2convert.so \
- ${libdir}/libmpeg2convert.*a \
- ${libdir}/pkgconfig/libmpeg2convert.pc \
- ${includedir}/mpeg2dec/mpeg2convert.h"
-
-
-do_stage() {
- oe_libinstall -a -so -C libmpeg2 libmpeg2 ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libmpeg2/convert libmpeg2convert ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/mpeg2dec/
- install -m 0644 include/mpeg2.h ${STAGING_INCDIR}/mpeg2dec/
- install -m 0644 include/mpeg2convert.h ${STAGING_INCDIR}/mpeg2dec/
-}
diff --git a/packages/librcf/librcf_0.4.bb b/packages/librcf/librcf_0.4.bb
index 13012fa803..aad6f7c338 100644
--- a/packages/librcf/librcf_0.4.bb
+++ b/packages/librcf/librcf_0.4.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A library for object-oriented inter process communication"
SECTION = "base"
PRIORITY = "optional"
-MAINTAINER = "Martin Dietze <dietze@4g-systems.com>"
LICENSE = "unknown"
DEPENDS="zlib openssl boost-asio"
RDEPENDS = "libstdc++5 libgcc1"
diff --git a/packages/libschedule/libschedule_0.17.bb b/packages/libschedule/libschedule_0.17.bb
new file mode 100644
index 0000000000..ad8cb72712
--- /dev/null
+++ b/packages/libschedule/libschedule_0.17.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "RTC alarm handling library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 sqlite libgpewidget"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit autotools pkgconfig gpe
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch b/packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch
new file mode 100644
index 0000000000..3dd44bea27
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch
@@ -0,0 +1,22 @@
+--- SDL-1.2.9-orig/src/video/SDL_sysvideo.h.org 2005-04-17 10:40:41.000000000 +0000
++++ SDL-1.2.9-orig/src/video/SDL_sysvideo.h 2007-05-25 07:34:38.000000000 +0000
+@@ -332,6 +332,9 @@
+ SDL_VideoDevice *(*create)(int devindex);
+ } VideoBootStrap;
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+ #ifdef ENABLE_X11
+ extern VideoBootStrap X11_bootstrap;
+ #endif
+@@ -417,6 +420,9 @@
+ #ifdef ENABLE_RISCOS
+ extern VideoBootStrap RISCOS_bootstrap;
+ #endif
++#ifdef __cplusplus
++};
++#endif
+ /* This is the current video device */
+ extern SDL_VideoDevice *current_video;
+
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/no-PAGE_SIZE.patch b/packages/libsdl/libsdl-qpe-1.2.9/no-PAGE_SIZE.patch
new file mode 100644
index 0000000000..856aaf2472
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/no-PAGE_SIZE.patch
@@ -0,0 +1,11 @@
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc.org 2007-05-25 07:07:32.000000000 +0000
++++ SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc 2007-05-25 07:24:48.000000000 +0000
+@@ -809,7 +809,7 @@
+ current->pitch = finfo.line_length;
+ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
+ mapped_offset = (((long)finfo.smem_start) -
+- (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
++ (((long)finfo.smem_start)&~(getpagesize()-1)));
+ mapped_memlen = finfo.smem_len+mapped_offset;
+ if(console_fd >0 ) {
+ mapped_mem = mmap(NULL, mapped_memlen,PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
diff --git a/packages/libsdl/libsdl-qpe_1.2.9.bb b/packages/libsdl/libsdl-qpe_1.2.9.bb
index eaca6b88aa..2fbf66b5d8 100644
--- a/packages/libsdl/libsdl-qpe_1.2.9.bb
+++ b/packages/libsdl/libsdl-qpe_1.2.9.bb
@@ -6,7 +6,7 @@ PROVIDES = "virtual/libsdl"
LICENSE = "LGPL"
# NOTE: make sure to keep PR in sync with libsdl-x11
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
file://agawa-piro-mickey-1.2.9.patch;patch=1 \
@@ -16,6 +16,8 @@ SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
file://ipaq-1.2.9.patch;patch=1 \
file://SDL-Akita-1.2.9.patch;patch=1 \
file://fixlibs-1.2.9.patch;patch=1 \
+ file://no-PAGE_SIZE.patch;patch=1 \
+ file://explicit-extern-C.patch;patch=1 \
file://acinclude.m4"
S = "${WORKDIR}/SDL-${PV}"
diff --git a/packages/libsdl/libsdl-x11_1.2.9.bb b/packages/libsdl/libsdl-x11_1.2.9.bb
index 1fba3c4174..42c0ad3579 100644
--- a/packages/libsdl/libsdl-x11_1.2.9.bb
+++ b/packages/libsdl/libsdl-x11_1.2.9.bb
@@ -1,11 +1,11 @@
DESCRIPTION = "Simple DirectMedia Layer - X11 Edition"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "alsa-lib virtual/libx11 libxext"
+DEPENDS = "alsa-lib mesa virtual/libx11 libxext"
PROVIDES = "virtual/libsdl"
LICENSE = "LGPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
file://extra-keys.patch;patch=1 \
@@ -20,7 +20,7 @@ EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads
--disable-mintaudio --disable-nasm --enable-video-x11 --disable-video-dga \
--disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
--disable-video-xbios --disable-video-gem --disable-video-dummy \
- --disable-video-opengl --enable-input-events --enable-pthreads \
+ --enable-video-opengl --enable-input-events --enable-pthreads \
--disable-video-picogui --disable-video-qtopia --enable-dlopen"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libsoundgen/libsoundgen_0.5.bb b/packages/libsoundgen/libsoundgen_0.5.bb
new file mode 100644
index 0000000000..5c65141ab5
--- /dev/null
+++ b/packages/libsoundgen/libsoundgen_0.5.bb
@@ -0,0 +1,13 @@
+SECTION = "x11/libs"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+LICENSE = "LGPL"
+DEPENDS = "esound"
+
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/libtododb/libtododb_0.11.bb b/packages/libtododb/libtododb_0.11.bb
new file mode 100644
index 0000000000..7d0bb146e9
--- /dev/null
+++ b/packages/libtododb/libtododb_0.11.bb
@@ -0,0 +1,18 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Database access for GPE to-do list"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "libgpewidget libgpepimc sqlite"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit pkgconfig gpe autotools
+
+
+do_stage () {
+ autotools_stage_all
+}
+
+do_install () {
+ gpe_do_install
+# oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
+}
diff --git a/packages/libtool/libtool-1.5.10/never-ever-do-rpath.patch b/packages/libtool/libtool-1.5.10/never-ever-do-rpath.patch
new file mode 100644
index 0000000000..7c92524b3b
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/never-ever-do-rpath.patch
@@ -0,0 +1,32 @@
+Well, brute force to disable rpath.
+
+Only
+-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
++#hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+should be necessary....
+
+Index: libtool-1.5.10/libtool.m4
+===================================================================
+--- libtool-1.5.10.orig/libtool.m4 2007-05-27 23:31:51.000000000 +0200
++++ libtool-1.5.10/libtool.m4 2007-05-27 23:50:26.000000000 +0200
+@@ -4244,16 +4244,16 @@
+ hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+ # Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++hardcode_into_libs=no
+
+ # Flag to hardcode \$libdir into a binary during linking.
+ # This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
++hardcode_libdir_flag_spec=
+
+ # If ld is used when linking, flag to hardcode \$libdir into
+ # a binary during linking. This must work even if \$libdir does
+ # not exist.
+-hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
++hardcode_libdir_flag_spec_ld=
+
+ # Whether we need a single -rpath flag with a separated argument.
+ hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
diff --git a/packages/libtool/libtool-cross_1.5.10.bb b/packages/libtool/libtool-cross_1.5.10.bb
index 575448e447..f4ca30ca6d 100644
--- a/packages/libtool/libtool-cross_1.5.10.bb
+++ b/packages/libtool/libtool-cross_1.5.10.bb
@@ -8,7 +8,8 @@ SRC_URI_append = " file://libdir-la.patch;patch=1 \
file://prefix.patch;patch=1 \
file://tag.patch;patch=1 \
file://tag1.patch;patch=1 \
- file://install-path-check.patch;patch=1"
+ file://install-path-check.patch;patch=1 \
+ file://never-ever-do-rpath.patch;patch=1 "
S = "${WORKDIR}/libtool-${PV}"
prefix = "${STAGING_DIR}"
diff --git a/packages/lighttpd/lighttpd/configure.in.patch b/packages/lighttpd/lighttpd/configure.in.patch
index 3387fe5635..772103cf76 100644
--- a/packages/lighttpd/lighttpd/configure.in.patch
+++ b/packages/lighttpd/lighttpd/configure.in.patch
@@ -7,7 +7,7 @@ Index: lighttpd-1.4.13/configure.in
AC_MSG_RESULT([$WITH_PCRE])
-if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
-+#if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
++if test "$WITH_PCRE" != "no"; then
AC_PATH_PROG(PCRECONFIG, pcre-config)
- if test x"$PCRECONFIG" != x; then
@@ -28,7 +28,7 @@ Index: lighttpd-1.4.13/configure.in
- fi
-fi
+# fi
-+#fi
++fi
AC_SUBST(PCRE_LIB)
diff --git a/packages/lighttpd/lighttpd_1.4.13.bb b/packages/lighttpd/lighttpd_1.4.13.bb
index 504a129db8..ac063e7fe5 100644
--- a/packages/lighttpd/lighttpd_1.4.13.bb
+++ b/packages/lighttpd/lighttpd_1.4.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Web server"
SECTION = "net"
DEPENDS = "sqlite3 libpcre libxml2"
LICENSE = "BSD"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz \
file://configure.in.patch;patch=1 \
diff --git a/packages/lighttpd/lighttpd_1.4.15.bb b/packages/lighttpd/lighttpd_1.4.15.bb
new file mode 100644
index 0000000000..ad90d934df
--- /dev/null
+++ b/packages/lighttpd/lighttpd_1.4.15.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Web server"
+SECTION = "net"
+LICENSE = "BSD"
+PR = "r1"
+
+SRC_URI = "http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz \
+ file://configure.in.patch;patch=1 \
+ file://src-server.c.patch;patch=1 \
+ file://index.html \
+ file://lighttpd.conf \
+ file://lighttpd"
+
+EXTRA_OECONF="--without-bzip2 \
+ --without-ldap \
+ --without-lua \
+ --without-memcache \
+ --without-pcre \
+ --without-webdav-props \
+ --without-webdav-locks \
+ --without-openssl \
+ --disable-nls \
+ --disable-static"
+
+inherit autotools pkgconfig update-rc.d
+
+INITSCRIPT_NAME = "lighttpd"
+INITSCRIPT_PARAMS = "defaults 70"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d ${D}/www/logs ${D}/www/pages/dav ${D}/www/var
+ install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/index.html ${D}/www/pages/
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${libdir}/mod_*.so ${sysconfdir} /www"
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb
index 457f16c1f7..8145a80f8d 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb
@@ -2,7 +2,7 @@ require linux-libc-headers.inc
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "unifdef-native"
-PR = "r6"
+PR = "r7"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://procinfo.h"
@@ -25,6 +25,8 @@ set_arch() {
sparc64*) ARCH=sparc64 ;;
sparc*) ARCH=sparc ;;
x86_64*) ARCH=x86_64 ;;
+ avr32*) ARCH=avr32 ;;
+ bfin*) ARCH=blackfin ;;
esac
}
diff --git a/packages/linux/ixp4xx-kernel_2.6.21.1.bb b/packages/linux/ixp4xx-kernel_2.6.21.1.bb
index 8025465058..c0cd8295e5 100644
--- a/packages/linux/ixp4xx-kernel_2.6.21.1.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.21.1.bb
@@ -6,7 +6,7 @@
# http://trac.nslu2-linux.org/kernel/
#
# The revision that is pulled from SVN is specified below
-IXP4XX_KERNEL_SVN_REV = "847"
+IXP4XX_KERNEL_SVN_REV = "861"
#
# The directory containing the patches to be applied is
# specified below
diff --git a/packages/linux/linux-dht-walnut-2.6.12.6/dht-walnut_defconfig b/packages/linux/linux-dht-walnut-2.6.12.6/dht-walnut_defconfig
deleted file mode 100644
index be30ceb938..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12.6/dht-walnut_defconfig
+++ /dev/null
@@ -1,2024 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12.6
-# Thu Jun 8 14:36:36 2006
-#
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_HAVE_DEC_LOCK=y
-CONFIG_PPC=y
-CONFIG_PPC32=y
-CONFIG_GENERIC_NVRAM=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-# CONFIG_EPOLL is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Processor
-#
-# CONFIG_6xx is not set
-CONFIG_40x=y
-# CONFIG_44x is not set
-# CONFIG_POWER3 is not set
-# CONFIG_POWER4 is not set
-# CONFIG_8xx is not set
-# CONFIG_E500 is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_CPU_FREQ is not set
-CONFIG_4xx=y
-
-#
-# IBM 4xx options
-#
-# CONFIG_ASH is not set
-# CONFIG_BUBINGA is not set
-# CONFIG_CPCI405 is not set
-# CONFIG_EP405 is not set
-# CONFIG_OAK is not set
-# CONFIG_REDWOOD_5 is not set
-# CONFIG_REDWOOD_6 is not set
-# CONFIG_SYCAMORE is not set
-CONFIG_WALNUT=y
-# CONFIG_XILINX_ML300 is not set
-CONFIG_IBM405_ERR77=y
-CONFIG_IBM405_ERR51=y
-CONFIG_IBM_OCP=y
-CONFIG_BIOS_FIXUP=y
-CONFIG_405GP=y
-# CONFIG_PPC4xx_DMA is not set
-CONFIG_PPC_GEN550=y
-# CONFIG_PM is not set
-CONFIG_UART0_TTYS0=y
-# CONFIG_UART0_TTYS1 is not set
-CONFIG_NOT_COHERENT_CACHE=y
-
-#
-# Platform options
-#
-# CONFIG_PC_KEYBOARD is not set
-# CONFIG_SMP is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="ip=on"
-CONFIG_ISA_DMA_API=y
-
-#
-# Bus options
-#
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_LEGACY_PROC=y
-# CONFIG_PCI_NAMES is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_TCIC=m
-CONFIG_PCCARD_NONSTATIC=m
-
-#
-# Advanced setup
-#
-# CONFIG_ADVANCED_OPTIONS is not set
-
-#
-# Default settings for advanced configuration options are used
-#
-CONFIG_HIGHMEM_START=0xfe000000
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_KERNEL_START=0xc0000000
-CONFIG_TASK_SIZE=0x80000000
-CONFIG_CONSISTENT_START=0xff100000
-CONFIG_CONSISTENT_SIZE=0x00200000
-CONFIG_BOOT_LOAD=0x00400000
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-# CONFIG_STANDALONE is not set
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-# CONFIG_NFTL_RW is not set
-CONFIG_INFTL=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_AMDSTD_RETRY=0
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x4000000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_WALNUT=m
-CONFIG_MTD_PCI=m
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-CONFIG_MTD_PMC551_BUGFIX=y
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_PC_PCMCIA is not set
-CONFIG_PARPORT_NOT_PC=y
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=m
-CONFIG_PARIDE=m
-CONFIG_PARIDE_PARPORT=m
-
-#
-# Parallel IDE high-level drivers
-#
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-
-#
-# Parallel IDE protocol modules
-#
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_BPCK6=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-# CONFIG_CISS_SCSI_TAPE is not set
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_SX8=m
-CONFIG_BLK_DEV_UB=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-CONFIG_BLK_DEV_IDESCSI=m
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_IDEPCI_SHARE_IRQ is not set
-CONFIG_BLK_DEV_OFFBOARD=y
-CONFIG_BLK_DEV_GENERIC=y
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_SL82C105=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_WDC_ALI15X3 is not set
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT34X=m
-# CONFIG_HPT34X_AUTODMA is not set
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-# CONFIG_PDC202XX_BURST is not set
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-# CONFIG_PDC202XX_FORCE is not set
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-# CONFIG_IDE_ARM is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=y
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_MEGARAID_NEWGEN is not set
-CONFIG_MEGARAID_LEGACY=m
-# CONFIG_SCSI_SATA is not set
-CONFIG_SCSI_BUSLOGIC=m
-# CONFIG_SCSI_OMIT_FLASHPOINT is not set
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_FC=m
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
-CONFIG_SCSI_QLOGIC_1280=m
-# CONFIG_SCSI_QLOGIC_1280_1040 is not set
-CONFIG_SCSI_QLA2XXX=y
-CONFIG_SCSI_QLA21XX=m
-CONFIG_SCSI_QLA22XX=m
-CONFIG_SCSI_QLA2300=m
-CONFIG_SCSI_QLA2322=m
-CONFIG_SCSI_QLA6312=m
-CONFIG_SCSI_LPFC=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
-CONFIG_SCSI_DEBUG=m
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID5=m
-CONFIG_MD_RAID6=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-CONFIG_FUSION=m
-CONFIG_FUSION_MAX_SGE=40
-CONFIG_FUSION_CTL=m
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_IEEE1394=m
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
-CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
-
-#
-# Device Drivers
-#
-CONFIG_IEEE1394_PCILYNX=m
-CONFIG_IEEE1394_OHCI1394=m
-
-#
-# Protocol Drivers
-#
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_SBP2=m
-CONFIG_IEEE1394_SBP2_PHYS_DMA=y
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_DV1394=m
-CONFIG_IEEE1394_RAWIO=m
-CONFIG_IEEE1394_CMP=m
-CONFIG_IEEE1394_AMDTP=m
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Macintosh device drivers
-#
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_FWMARK is not set
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_PIMSM_V1 is not set
-# CONFIG_IP_PIMSM_V2 is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_TUNNEL=m
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_TARGET_NOTRACK=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-# CONFIG_IP6_NF_MATCH_PHYSDEV is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-# CONFIG_DEV_APPLETALK is not set
-CONFIG_X25=m
-CONFIG_LAPB=m
-# CONFIG_NET_DIVERT is not set
-CONFIG_ECONET=m
-# CONFIG_ECONET_AUNUDP is not set
-# CONFIG_ECONET_NATIVE is not set
-CONFIG_WAN_ROUTER=m
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# CONFIG_NET_SCH_CLK_CPU is not set
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-# CONFIG_NET_CLS_IND is not set
-# CONFIG_CLS_U32_MARK is not set
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-CONFIG_NET_CLS_POLICE=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-
-#
-# Tulip family network device support
-#
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_PCMCIA_XIRTULIP=m
-CONFIG_HP100=m
-CONFIG_IBM_EMAC=y
-# CONFIG_IBM_EMAC_ERRMSG is not set
-CONFIG_IBM_EMAC_RXB=128
-CONFIG_IBM_EMAC_TXB=64
-CONFIG_IBM_EMAC_FGAP=8
-CONFIG_IBM_EMAC_SKBRES=0
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-# CONFIG_AMD8111E_NAPI is not set
-CONFIG_ADAPTEC_STARFIRE=m
-# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_DGRS=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-# CONFIG_E1000_NAPI is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-# CONFIG_R8169_VLAN is not set
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-CONFIG_STRIP=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-CONFIG_PCMCIA_RAYCS=m
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_PCMCIA_WL3501=m
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-CONFIG_PRISM54=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-
-#
-# Wan interfaces
-#
-CONFIG_WAN=y
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_LANMEDIA=m
-CONFIG_SYNCLINK_SYNCPPP=m
-CONFIG_HDLC=m
-# CONFIG_HDLC_RAW is not set
-# CONFIG_HDLC_RAW_ETH is not set
-# CONFIG_HDLC_CISCO is not set
-# CONFIG_HDLC_FR is not set
-# CONFIG_HDLC_PPP is not set
-# CONFIG_HDLC_X25 is not set
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-
-#
-# Cyclades-PC300 MLPPP support is disabled.
-#
-
-#
-# Refer to the file README.mlppp, provided by PC300 package.
-#
-CONFIG_FARSYNC=m
-CONFIG_DLCI=m
-CONFIG_DLCI_COUNT=24
-CONFIG_DLCI_MAX=8
-# CONFIG_WAN_ROUTER_DRIVERS is not set
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-
-#
-# ATM drivers
-#
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E_MAYBE is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE_MPPC=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_NET_FC is not set
-CONFIG_SHAPER=m
-CONFIG_NETCONSOLE=m
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=y
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_I8042 is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_CS is not set
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_TIPAR=m
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-# CONFIG_WDT_501_PCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_NVRAM=m
-CONFIG_GEN_RTC=m
-# CONFIG_GEN_RTC_X is not set
-CONFIG_DTLK=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-
-#
-# Ftape, the floppy tape device driver
-#
-CONFIG_AGP=m
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-
-#
-# TPM devices
-#
-CONFIG_TCG_TPM=m
-CONFIG_TCG_NSC=m
-CONFIG_TCG_ATMEL=m
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCF=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-CONFIG_I2C_IBM_IIC=y
-CONFIG_I2C_ISA=m
-# CONFIG_I2C_MPC is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Hardware Sensors Chip support
-#
-CONFIG_I2C_SENSOR=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83627HF=m
-
-#
-# Other I2C Chip support
-#
-CONFIG_SENSORS_DS1337=m
-CONFIG_SENSORS_EEPROM=m
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_RTC8564=m
-CONFIG_SENSORS_M41T00=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_DVB is not set
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-# CONFIG_VIDEO_CX88_DVB is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-
-#
-# Radio Adapters
-#
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-
-#
-# Digital Video Broadcasting Devices
-#
-CONFIG_DVB=y
-CONFIG_DVB_CORE=m
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_DVB_AV7110=m
-# CONFIG_DVB_AV7110_FIRMWARE is not set
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_DIBUSB=m
-# CONFIG_DVB_DIBUSB_MISDESIGNED_DEVICES is not set
-# CONFIG_DVB_DIBCOM_DEBUG is not set
-CONFIG_DVB_CINERGYT2=m
-# CONFIG_DVB_CINERGYT2_TUNING is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-CONFIG_DVB_B2C2_SKYSTAR=m
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA80XX=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_VES1X93=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_ATMEL_AT76C651=m
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terresterial DTV) frontends
-#
-CONFIG_DVB_NXT2002=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_VIDEOBUF=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_SOFT_CURSOR=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_CT65550 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-CONFIG_FB_MATROX=y
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-# CONFIG_FB_RADEON_OLD is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_CS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_BLUETOOTH_TTY=m
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=y
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_MTOUCH is not set
-CONFIG_USB_EGALAX=m
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_PWC=m
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-CONFIG_USB_PEGASUS=y
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET=y
-
-#
-# USB Host-to-Host Cables
-#
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_GENESYS=y
-CONFIG_USB_NET1080=y
-CONFIG_USB_PL2301=y
-CONFIG_USB_KC2190=y
-
-#
-# Intelligent USB Devices/Gadgets
-#
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_ZAURUS=y
-CONFIG_USB_CDCETHER=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_AX8817X=y
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_TEST is not set
-
-#
-# USB ATM/DSL drivers
-#
-CONFIG_USB_ATM=m
-# CONFIG_USB_SPEEDTOUCH is not set
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_NET2280=y
-CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-CONFIG_MINIX_FS=m
-CONFIG_ROMFS_FS=m
-CONFIG_QUOTA=y
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=y
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_SYSFS=y
-CONFIG_DEVFS_FS=y
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=0
-# CONFIG_JFFS_PROC_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_VXFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-CONFIG_NCP_FS=m
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_CODA_FS=m
-# CONFIG_CODA_FS_OLD_API is not set
-CONFIG_AFS_FS=m
-CONFIG_RXRPC=m
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# IBM 40x options
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_SERIAL_TEXT_DEBUG is not set
-CONFIG_PPC_OCP=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_CAPABILITIES=m
-CONFIG_SECURITY_ROOTPLUG=m
-CONFIG_SECURITY_SECLVL=m
-# CONFIG_SECURITY_SELINUX is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
diff --git a/packages/linux/linux-dht-walnut-2.6.12.6/iw_we18-5.diff b/packages/linux/linux-dht-walnut-2.6.12.6/iw_we18-5.diff
deleted file mode 100644
index 85fcdd1224..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12.6/iw_we18-5.diff
+++ /dev/null
@@ -1,462 +0,0 @@
-diff -upr linux-2.6.11/include/linux/wireless.h linux-2.6.11-WE18/include/linux/wireless.h
---- linux-2.6.11/include/linux/wireless.h 2004-12-24 13:35:01.000000000 -0800
-+++ linux-2.6.11-WE18/include/linux/wireless.h 2005-03-12 09:53:02.000000000 -0800
-@@ -1,10 +1,10 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 17 21.6.04
-+ * Version : 18 12.3.05
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2004 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _LINUX_WIRELESS_H
-@@ -82,7 +82,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 17
-+#define WIRELESS_EXT 18
-
- /*
- * Changes :
-@@ -182,6 +182,21 @@
- * - Document (struct iw_quality *)->updated, add new flags (INVALID)
- * - Wireless Event capability in struct iw_range
- * - Add support for relative TxPower (yick !)
-+ *
-+ * V17 to V18 (From Jouni Malinen <jkmaline@cc.hut.fi>)
-+ * ----------
-+ * - Add support for WPA/WPA2
-+ * - Add extended encoding configuration (SIOCSIWENCODEEXT and
-+ * SIOCGIWENCODEEXT)
-+ * - Add SIOCSIWGENIE/SIOCGIWGENIE
-+ * - Add SIOCSIWMLME
-+ * - Add SIOCSIWPMKSA
-+ * - Add struct iw_range bit field for supported encoding capabilities
-+ * - Add optional scan request parameters for SIOCSIWSCAN
-+ * - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA
-+ * related parameters (extensible up to 4096 parameter values)
-+ * - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE,
-+ * IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -256,6 +271,30 @@
- #define SIOCSIWPOWER 0x8B2C /* set Power Management settings */
- #define SIOCGIWPOWER 0x8B2D /* get Power Management settings */
-
-+/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM).
-+ * This ioctl uses struct iw_point and data buffer that includes IE id and len
-+ * fields. More than one IE may be included in the request. Setting the generic
-+ * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers
-+ * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers
-+ * are required to report the used IE as a wireless event, e.g., when
-+ * associating with an AP. */
-+#define SIOCSIWGENIE 0x8B30 /* set generic IE */
-+#define SIOCGIWGENIE 0x8B31 /* get generic IE */
-+
-+/* WPA : IEEE 802.11 MLME requests */
-+#define SIOCSIWMLME 0x8B16 /* request MLME operation; uses
-+ * struct iw_mlme */
-+/* WPA : Authentication mode parameters */
-+#define SIOCSIWAUTH 0x8B32 /* set authentication mode params */
-+#define SIOCGIWAUTH 0x8B33 /* get authentication mode params */
-+
-+/* WPA : Extended version of encoding configuration */
-+#define SIOCSIWENCODEEXT 0x8B34 /* set encoding token & mode */
-+#define SIOCGIWENCODEEXT 0x8B35 /* get encoding token & mode */
-+
-+/* WPA2 : PMKSA cache management */
-+#define SIOCSIWPMKSA 0x8B36 /* PMKSA cache operation */
-+
- /* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
-
- /* These 32 ioctl are wireless device private, for 16 commands.
-@@ -297,6 +336,34 @@
- #define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
- #define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
- #define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
-+#define IWEVGENIE 0x8C05 /* Generic IE (WPA, RSN, WMM, ..)
-+ * (scan results); This includes id and
-+ * length fields. One IWEVGENIE may
-+ * contain more than one IE. Scan
-+ * results may contain one or more
-+ * IWEVGENIE events. */
-+#define IWEVMICHAELMICFAILURE 0x8C06 /* Michael MIC failure
-+ * (struct iw_michaelmicfailure)
-+ */
-+#define IWEVASSOCREQIE 0x8C07 /* IEs used in (Re)Association Request.
-+ * The data includes id and length
-+ * fields and may contain more than one
-+ * IE. This event is required in
-+ * Managed mode if the driver
-+ * generates its own WPA/RSN IE. This
-+ * should be sent just before
-+ * IWEVREGISTERED event for the
-+ * association. */
-+#define IWEVASSOCRESPIE 0x8C08 /* IEs used in (Re)Association
-+ * Response. The data includes id and
-+ * length fields and may contain more
-+ * than one IE. This may be sent
-+ * between IWEVASSOCREQIE and
-+ * IWEVREGISTERED events for the
-+ * association. */
-+#define IWEVPMKIDCAND 0x8C09 /* PMKID candidate for RSN
-+ * pre-authentication
-+ * (struct iw_pmkid_cand) */
-
- #define IWEVFIRST 0x8C00
-
-@@ -432,12 +499,94 @@
- #define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */
- #define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */
- #define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */
-+/* struct iw_scan_req scan_type */
-+#define IW_SCAN_TYPE_ACTIVE 0
-+#define IW_SCAN_TYPE_PASSIVE 1
- /* Maximum size of returned data */
- #define IW_SCAN_MAX_DATA 4096 /* In bytes */
-
- /* Max number of char in custom event - use multiple of them if needed */
- #define IW_CUSTOM_MAX 256 /* In bytes */
-
-+/* Generic information element */
-+#define IW_GENERIC_IE_MAX 1024
-+
-+/* MLME requests (SIOCSIWMLME / struct iw_mlme) */
-+#define IW_MLME_DEAUTH 0
-+#define IW_MLME_DISASSOC 1
-+
-+/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */
-+#define IW_AUTH_INDEX 0x0FFF
-+#define IW_AUTH_FLAGS 0xF000
-+/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095)
-+ * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the
-+ * parameter that is being set/get to; value will be read/written to
-+ * struct iw_param value field) */
-+#define IW_AUTH_WPA_VERSION 0
-+#define IW_AUTH_CIPHER_PAIRWISE 1
-+#define IW_AUTH_CIPHER_GROUP 2
-+#define IW_AUTH_KEY_MGMT 3
-+#define IW_AUTH_TKIP_COUNTERMEASURES 4
-+#define IW_AUTH_DROP_UNENCRYPTED 5
-+#define IW_AUTH_80211_AUTH_ALG 6
-+#define IW_AUTH_WPA_ENABLED 7
-+#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
-+#define IW_AUTH_ROAMING_CONTROL 9
-+#define IW_AUTH_PRIVACY_INVOKED 10
-+
-+/* IW_AUTH_WPA_VERSION values (bit field) */
-+#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
-+#define IW_AUTH_WPA_VERSION_WPA 0x00000002
-+#define IW_AUTH_WPA_VERSION_WPA2 0x00000004
-+
-+/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */
-+#define IW_AUTH_CIPHER_NONE 0x00000001
-+#define IW_AUTH_CIPHER_WEP40 0x00000002
-+#define IW_AUTH_CIPHER_TKIP 0x00000004
-+#define IW_AUTH_CIPHER_CCMP 0x00000008
-+#define IW_AUTH_CIPHER_WEP104 0x00000010
-+
-+/* IW_AUTH_KEY_MGMT values (bit field) */
-+#define IW_AUTH_KEY_MGMT_802_1X 1
-+#define IW_AUTH_KEY_MGMT_PSK 2
-+
-+/* IW_AUTH_80211_AUTH_ALG values (bit field) */
-+#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
-+#define IW_AUTH_ALG_SHARED_KEY 0x00000002
-+#define IW_AUTH_ALG_LEAP 0x00000004
-+
-+/* IW_AUTH_ROAMING_CONTROL values */
-+#define IW_AUTH_ROAMING_ENABLE 0 /* driver/firmware based roaming */
-+#define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming
-+ * control */
-+
-+/* SIOCSIWENCODEEXT definitions */
-+#define IW_ENCODE_SEQ_MAX_SIZE 8
-+/* struct iw_encode_ext ->alg */
-+#define IW_ENCODE_ALG_NONE 0
-+#define IW_ENCODE_ALG_WEP 1
-+#define IW_ENCODE_ALG_TKIP 2
-+#define IW_ENCODE_ALG_CCMP 3
-+/* struct iw_encode_ext ->ext_flags */
-+#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001
-+#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002
-+#define IW_ENCODE_EXT_GROUP_KEY 0x00000004
-+#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008
-+
-+/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */
-+#define IW_MICFAILURE_KEY_ID 0x00000003 /* Key ID 0..3 */
-+#define IW_MICFAILURE_GROUP 0x00000004
-+#define IW_MICFAILURE_PAIRWISE 0x00000008
-+#define IW_MICFAILURE_STAKEY 0x00000010
-+#define IW_MICFAILURE_COUNT 0x00000060 /* 1 or 2 (0 = count not supported)
-+ */
-+
-+/* Bit field values for enc_capa in struct iw_range */
-+#define IW_ENC_CAPA_WPA 0x00000001
-+#define IW_ENC_CAPA_WPA2 0x00000002
-+#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004
-+#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
-+
- /* Event capability macros - in (struct iw_range *)->event_capa
- * Because we have more than 32 possible events, we use an array of
- * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */
-@@ -546,6 +695,132 @@ struct iw_thrspy
- struct iw_quality high; /* High threshold */
- };
-
-+/*
-+ * Optional data for scan request
-+ *
-+ * Note: these optional parameters are controlling parameters for the
-+ * scanning behavior, these do not apply to getting scan results
-+ * (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and
-+ * provide a merged results with all BSSes even if the previous scan
-+ * request limited scanning to a subset, e.g., by specifying an SSID.
-+ * Especially, scan results are required to include an entry for the
-+ * current BSS if the driver is in Managed mode and associated with an AP.
-+ */
-+struct iw_scan_req
-+{
-+ __u8 scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */
-+ __u8 essid_len;
-+ __u8 num_channels; /* num entries in channel_list;
-+ * 0 = scan all allowed channels */
-+ __u8 flags; /* reserved as padding; use zero, this may
-+ * be used in the future for adding flags
-+ * to request different scan behavior */
-+ struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or
-+ * individual address of a specific BSS */
-+
-+ /*
-+ * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using
-+ * the current ESSID. This allows scan requests for specific ESSID
-+ * without having to change the current ESSID and potentially breaking
-+ * the current association.
-+ */
-+ __u8 essid[IW_ESSID_MAX_SIZE];
-+
-+ /*
-+ * Optional parameters for changing the default scanning behavior.
-+ * These are based on the MLME-SCAN.request from IEEE Std 802.11.
-+ * TU is 1.024 ms. If these are set to 0, driver is expected to use
-+ * reasonable default values. min_channel_time defines the time that
-+ * will be used to wait for the first reply on each channel. If no
-+ * replies are received, next channel will be scanned after this. If
-+ * replies are received, total time waited on the channel is defined by
-+ * max_channel_time.
-+ */
-+ __u32 min_channel_time; /* in TU */
-+ __u32 max_channel_time; /* in TU */
-+
-+ struct iw_freq channel_list[IW_MAX_FREQUENCIES];
-+};
-+
-+/* ------------------------- WPA SUPPORT ------------------------- */
-+
-+/*
-+ * Extended data structure for get/set encoding (this is used with
-+ * SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_*
-+ * flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and
-+ * only the data contents changes (key data -> this structure, including
-+ * key data).
-+ *
-+ * If the new key is the first group key, it will be set as the default
-+ * TX key. Otherwise, default TX key index is only changed if
-+ * IW_ENCODE_EXT_SET_TX_KEY flag is set.
-+ *
-+ * Key will be changed with SIOCSIWENCODEEXT in all cases except for
-+ * special "change TX key index" operation which is indicated by setting
-+ * key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY.
-+ *
-+ * tx_seq/rx_seq are only used when respective
-+ * IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal
-+ * TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start
-+ * TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally
-+ * used only by an Authenticator (AP or an IBSS station) to get the
-+ * current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and
-+ * RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for
-+ * debugging/testing.
-+ */
-+struct iw_encode_ext
-+{
-+ __u32 ext_flags; /* IW_ENCODE_EXT_* */
-+ __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast
-+ * (group) keys or unicast address for
-+ * individual keys */
-+ __u16 alg; /* IW_ENCODE_ALG_* */
-+ __u16 key_len;
-+ __u8 key[0];
-+};
-+
-+/* SIOCSIWMLME data */
-+struct iw_mlme
-+{
-+ __u16 cmd; /* IW_MLME_* */
-+ __u16 reason_code;
-+ struct sockaddr addr;
-+};
-+
-+/* SIOCSIWPMKSA data */
-+#define IW_PMKSA_ADD 1
-+#define IW_PMKSA_REMOVE 2
-+#define IW_PMKSA_FLUSH 3
-+
-+#define IW_PMKID_LEN 16
-+
-+struct iw_pmksa
-+{
-+ __u32 cmd; /* IW_PMKSA_* */
-+ struct sockaddr bssid;
-+ __u8 pmkid[IW_PMKID_LEN];
-+};
-+
-+/* IWEVMICHAELMICFAILURE data */
-+struct iw_michaelmicfailure
-+{
-+ __u32 flags;
-+ struct sockaddr src_addr;
-+ __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+};
-+
-+/* IWEVPMKIDCAND data */
-+#define IW_PMKID_CAND_PREAUTH 0x00000001 /* RNS pre-authentication enabled */
-+struct iw_pmkid_cand
-+{
-+ __u32 flags; /* IW_PMKID_CAND_* */
-+ __u32 index; /* the smaller the index, the higher the
-+ * priority */
-+ struct sockaddr bssid;
-+};
-+
- /* ------------------------ WIRELESS STATS ------------------------ */
- /*
- * Wireless statistics (used for /proc/net/wireless)
-@@ -725,6 +1000,8 @@ struct iw_range
- struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */
- /* Note : this frequency list doesn't need to fit channel numbers,
- * because each entry contain its channel index */
-+
-+ __u32 enc_capa; /* IW_ENC_CAPA_* bit field */
- };
-
- /*
-diff -upr linux-2.6.11/net/core/wireless.c linux-2.6.11-WE18/net/core/wireless.c
---- linux-2.6.11/net/core/wireless.c 2005-03-04 15:55:29.000000000 -0800
-+++ linux-2.6.11-WE18/net/core/wireless.c 2005-03-12 09:11:24.000000000 -0800
-@@ -2,7 +2,7 @@
- * This file implement the Wireless Extensions APIs.
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2004 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- *
- * (As all part of the Linux kernel, this file is GPL)
- */
-@@ -187,6 +187,12 @@ static const struct iw_ioctl_description
- .header_type = IW_HEADER_TYPE_ADDR,
- .flags = IW_DESCR_FLAG_DUMP,
- },
-+ [SIOCSIWMLME - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_mlme),
-+ .max_tokens = sizeof(struct iw_mlme),
-+ },
- [SIOCGIWAPLIST - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_POINT,
- .token_size = sizeof(struct sockaddr) +
-@@ -195,7 +201,10 @@ static const struct iw_ioctl_description
- .flags = IW_DESCR_FLAG_NOMAX,
- },
- [SIOCSIWSCAN - SIOCIWFIRST] = {
-- .header_type = IW_HEADER_TYPE_PARAM,
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = 0,
-+ .max_tokens = sizeof(struct iw_scan_req),
- },
- [SIOCGIWSCAN - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_POINT,
-@@ -273,6 +282,42 @@ static const struct iw_ioctl_description
- [SIOCGIWPOWER - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_PARAM,
- },
-+ [SIOCSIWGENIE - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [SIOCGIWGENIE - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [SIOCSIWAUTH - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_PARAM,
-+ },
-+ [SIOCGIWAUTH - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_PARAM,
-+ },
-+ [SIOCSIWENCODEEXT - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_encode_ext),
-+ .max_tokens = sizeof(struct iw_encode_ext) +
-+ IW_ENCODING_TOKEN_MAX,
-+ },
-+ [SIOCGIWENCODEEXT - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_encode_ext),
-+ .max_tokens = sizeof(struct iw_encode_ext) +
-+ IW_ENCODING_TOKEN_MAX,
-+ },
-+ [SIOCSIWPMKSA - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_pmksa),
-+ .max_tokens = sizeof(struct iw_pmksa),
-+ },
- };
- static const int standard_ioctl_num = (sizeof(standard_ioctl) /
- sizeof(struct iw_ioctl_description));
-@@ -299,6 +344,31 @@ static const struct iw_ioctl_description
- [IWEVEXPIRED - IWEVFIRST] = {
- .header_type = IW_HEADER_TYPE_ADDR,
- },
-+ [IWEVGENIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVMICHAELMICFAILURE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = sizeof(struct iw_michaelmicfailure),
-+ },
-+ [IWEVASSOCREQIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVASSOCRESPIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVPMKIDCAND - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = sizeof(struct iw_pmkid_cand),
-+ },
- };
- static const int standard_event_num = (sizeof(standard_event) /
- sizeof(struct iw_ioctl_description));
diff --git a/packages/linux/linux-dht-walnut-2.6.12.6/linux-2.6.12-mppe-mppc-1.3.patch b/packages/linux/linux-dht-walnut-2.6.12.6/linux-2.6.12-mppe-mppc-1.3.patch
deleted file mode 100644
index aa430252c7..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12.6/linux-2.6.12-mppe-mppc-1.3.patch
+++ /dev/null
@@ -1,1559 +0,0 @@
-diff -ruN linux-2.6.12.orig/drivers/net/Kconfig linux-2.6.12/drivers/net/Kconfig
---- linux-2.6.12.orig/drivers/net/Kconfig 2005-06-28 19:57:16.000000000 +0200
-+++ linux-2.6.12/drivers/net/Kconfig 2005-06-28 20:07:01.000000000 +0200
-@@ -2417,6 +2417,32 @@
- module; it is called bsd_comp and will show up in the directory
- modules once you have said "make modules". If unsure, say N.
-
-+config PPP_MPPE_MPPC
-+ tristate "Microsoft PPP compression/encryption (MPPC/MPPE)"
-+ depends on PPP
-+ select CRYPTO_SHA1
-+ select CRYPTO_ARC4
-+ ---help---
-+ Support for the Microsoft Point-To-Point Compression (RFC2118) and
-+ Microsoft Point-To-Point Encryption (RFC3078). These protocols are
-+ supported by Microsoft Windows and wide range of "hardware" access
-+ servers. MPPE is common protocol in Virtual Private Networks. According
-+ to RFC3078, MPPE supports 40, 56 and 128-bit key lengths. Depending on
-+ PPP daemon configuration on both ends of the link, following scenarios
-+ are possible:
-+ - only compression (MPPC) is used,
-+ - only encryption (MPPE) is used,
-+ - compression and encryption (MPPC+MPPE) are used.
-+
-+ Please note that Hi/Fn (http://www.hifn.com) holds patent on MPPC so
-+ you should check if this patent is valid in your country in order to
-+ avoid legal problems.
-+
-+ For more information please visit http://free.polbox.pl/h/hs001
-+
-+ To compile this driver as a module, choose M here. The module will
-+ be called ppp_mppe_mppc.ko.
-+
- config PPPOE
- tristate "PPP over Ethernet (EXPERIMENTAL)"
- depends on EXPERIMENTAL && PPP
-diff -ruN linux-2.6.12.orig/drivers/net/Makefile linux-2.6.12/drivers/net/Makefile
---- linux-2.6.12.orig/drivers/net/Makefile 2005-06-28 19:57:16.000000000 +0200
-+++ linux-2.6.12/drivers/net/Makefile 2005-06-28 20:07:01.000000000 +0200
-@@ -105,6 +105,7 @@
- obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o
- obj-$(CONFIG_PPP_DEFLATE) += ppp_deflate.o
- obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o
-+obj-$(CONFIG_PPP_MPPE_MPPC) += ppp_mppe_mppc.o
- obj-$(CONFIG_PPPOE) += pppox.o pppoe.o
-
- obj-$(CONFIG_SLIP) += slip.o
-diff -ruN linux-2.6.12.orig/drivers/net/ppp_generic.c linux-2.6.12/drivers/net/ppp_generic.c
---- linux-2.6.12.orig/drivers/net/ppp_generic.c 2005-06-28 19:57:20.000000000 +0200
-+++ linux-2.6.12/drivers/net/ppp_generic.c 2005-06-28 20:07:01.000000000 +0200
-@@ -19,7 +19,7 @@
- * PPP driver, written by Michael Callahan and Al Longyear, and
- * subsequently hacked by Paul Mackerras.
- *
-- * ==FILEVERSION 20041108==
-+ * ==FILEVERSION 20050110==
- */
-
- #include <linux/config.h>
-@@ -105,6 +105,7 @@
- spinlock_t rlock; /* lock for receive side 58 */
- spinlock_t wlock; /* lock for transmit side 5c */
- int mru; /* max receive unit 60 */
-+ int mru_alloc; /* MAX(1500,MRU) for dev_alloc_skb() */
- unsigned int flags; /* control bits 64 */
- unsigned int xstate; /* transmit state bits 68 */
- unsigned int rstate; /* receive state bits 6c */
-@@ -632,7 +633,9 @@
- case PPPIOCSMRU:
- if (get_user(val, p))
- break;
-- ppp->mru = val;
-+ ppp->mru_alloc = ppp->mru = val;
-+ if (ppp->mru_alloc < PPP_MRU)
-+ ppp->mru_alloc = PPP_MRU; /* increase for broken peers */
- err = 0;
- break;
-
-@@ -1107,14 +1110,37 @@
- case PPP_CCP:
- /* peek at outbound CCP frames */
- ppp_ccp_peek(ppp, skb, 0);
-+ /*
-+ * When LZS or MPPE/MPPC has been negotiated we don't send
-+ * CCP_RESETACK after receiving CCP_RESETREQ; in fact pppd
-+ * sends such a packet but we silently discard it here
-+ */
-+ if (CCP_CODE(skb->data+2) == CCP_RESETACK
-+ && (ppp->xcomp->compress_proto == CI_MPPE
-+ || ppp->xcomp->compress_proto == CI_LZS)) {
-+ --ppp->stats.tx_packets;
-+ ppp->stats.tx_bytes -= skb->len - 2;
-+ kfree_skb(skb);
-+ return;
-+ }
- break;
- }
-
- /* try to do packet compression */
- if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
- && proto != PPP_LCP && proto != PPP_CCP) {
-- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
-- GFP_ATOMIC);
-+ int comp_ovhd = 0;
-+ /*
-+ * because of possible data expansion when MPPC or LZS
-+ * is used, allocate compressor's buffer 12.5% bigger
-+ * than MTU
-+ */
-+ if (ppp->xcomp->compress_proto == CI_MPPE)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + MPPE_OVHD;
-+ else if (ppp->xcomp->compress_proto == CI_LZS)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + LZS_OVHD;
-+ new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len
-+ + comp_ovhd, GFP_ATOMIC);
- if (new_skb == 0) {
- printk(KERN_ERR "PPP: no memory (comp pkt)\n");
- goto drop;
-@@ -1132,9 +1158,21 @@
- skb = new_skb;
- skb_put(skb, len);
- skb_pull(skb, 2); /* pull off A/C bytes */
-- } else {
-+ } else if (len == 0) {
- /* didn't compress, or CCP not up yet */
- kfree_skb(new_skb);
-+ } else {
-+ /*
-+ * (len < 0)
-+ * MPPE requires that we do not send unencrypted
-+ * frames. The compressor will return -1 if we
-+ * should drop the frame. We cannot simply test
-+ * the compress_proto because MPPE and MPPC share
-+ * the same number.
-+ */
-+ printk(KERN_ERR "ppp: compressor dropped pkt\n");
-+ kfree_skb(new_skb);
-+ goto drop;
- }
- }
-
-@@ -1640,14 +1678,15 @@
- goto err;
-
- if (proto == PPP_COMP) {
-- ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
-+ ns = dev_alloc_skb(ppp->mru_alloc + PPP_HDRLEN);
- if (ns == 0) {
- printk(KERN_ERR "ppp_decompress_frame: no memory\n");
- goto err;
- }
- /* the decompressor still expects the A/C bytes in the hdr */
- len = ppp->rcomp->decompress(ppp->rc_state, skb->data - 2,
-- skb->len + 2, ns->data, ppp->mru + PPP_HDRLEN);
-+ skb->len + 2, ns->data,
-+ ppp->mru_alloc + PPP_HDRLEN);
- if (len < 0) {
- /* Pass the compressed frame to pppd as an
- error indication. */
-@@ -1673,7 +1712,14 @@
- return skb;
-
- err:
-- ppp->rstate |= SC_DC_ERROR;
-+ if (ppp->rcomp->compress_proto != CI_MPPE
-+ && ppp->rcomp->compress_proto != CI_LZS) {
-+ /*
-+ * If decompression protocol isn't MPPE/MPPC or LZS, we set
-+ * SC_DC_ERROR flag and wait for CCP_RESETACK
-+ */
-+ ppp->rstate |= SC_DC_ERROR;
-+ }
- ppp_receive_error(ppp);
- return skb;
- }
-@@ -2349,6 +2395,7 @@
- memset(ppp, 0, sizeof(struct ppp));
-
- ppp->mru = PPP_MRU;
-+ ppp->mru_alloc = PPP_MRU;
- init_ppp_file(&ppp->file, INTERFACE);
- ppp->file.hdrlen = PPP_HDRLEN - 2; /* don't count proto bytes */
- for (i = 0; i < NUM_NP; ++i)
-diff -ruN linux-2.6.12.orig/drivers/net/ppp_mppe_mppc.c linux-2.6.12/drivers/net/ppp_mppe_mppc.c
---- linux-2.6.12.orig/drivers/net/ppp_mppe_mppc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12/drivers/net/ppp_mppe_mppc.c 2005-06-28 20:07:01.000000000 +0200
-@@ -0,0 +1,1299 @@
-+/*
-+ * ppp_mppe_mppc.c - MPPC/MPPE "compressor/decompressor" module.
-+ *
-+ * Copyright (c) 1994 rpd Magosnyi <mag@bunuel.tii.matav.hu>
-+ * Copyright (c) 1999 Tim Hockin, Cobalt Networks Inc. <thockin@cobaltnet.com>
-+ * Copyright (c) 2002-2004 Jan Dubiec <jdx@slackware.pl>
-+ *
-+ * Permission to use, copy, modify, and distribute this software and its
-+ * documentation is hereby granted, provided that the above copyright
-+ * notice appears in all copies. This software is provided without any
-+ * warranty, express or implied.
-+ *
-+ * The code is based on MPPE kernel module written by rpd Magosnyi and
-+ * Tim Hockin which can be found on http://planetmirror.com/pub/mppe/.
-+ * I have added MPPC and 56 bit session keys support in MPPE.
-+ *
-+ * WARNING! Although this is open source code, its usage in some countries
-+ * (in particular in the USA) may violate Stac Inc. patent for MPPC.
-+ *
-+ * ==FILEVERSION 20041123==
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include <asm/scatterlist.h>
-+#include <linux/vmalloc.h>
-+#include <linux/crypto.h>
-+
-+#include <linux/ppp_defs.h>
-+#include <linux/ppp-comp.h>
-+
-+/*
-+ * State for a mppc/mppe "(de)compressor".
-+ */
-+struct ppp_mppe_state {
-+ struct crypto_tfm *arc4_tfm;
-+ struct crypto_tfm *sha1_tfm;
-+ u8 *sha1_digest;
-+ u8 master_key[MPPE_MAX_KEY_LEN];
-+ u8 session_key[MPPE_MAX_KEY_LEN];
-+ u8 mppc; /* do we use compression (MPPC)? */
-+ u8 mppe; /* do we use encryption (MPPE)? */
-+ u8 keylen; /* key length in bytes */
-+ u8 bitkeylen; /* key length in bits */
-+ u16 ccount; /* coherency counter */
-+ u16 bits; /* MPPC/MPPE control bits */
-+ u8 stateless; /* do we use stateless mode? */
-+ u8 nextflushed; /* set A bit in the next outgoing packet;
-+ used only by compressor*/
-+ u8 flushexpected; /* drop packets until A bit is received;
-+ used only by decompressor*/
-+ u8 *hist; /* MPPC history */
-+ u16 *hash; /* Hash table; used only by compressor */
-+ u16 histptr; /* history "cursor" */
-+ int unit;
-+ int debug;
-+ int mru;
-+ struct compstat stats;
-+};
-+
-+#define MPPE_HIST_LEN 8192 /* MPPC history size */
-+#define MPPE_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define MPPE_BIT_FLUSHED 0x80 /* bit A */
-+#define MPPE_BIT_RESET 0x40 /* bit B */
-+#define MPPE_BIT_COMP 0x20 /* bit C */
-+#define MPPE_BIT_ENCRYPTED 0x10 /* bit D */
-+
-+#define MPPE_SALT0 0xD1 /* values used in MPPE key derivation */
-+#define MPPE_SALT1 0x26 /* according to RFC3079 */
-+#define MPPE_SALT2 0x9E
-+
-+#define MPPE_CCOUNT(x) ((((x)[4] & 0x0f) << 8) + (x)[5])
-+#define MPPE_BITS(x) ((x)[4] & 0xf0)
-+#define MPPE_CTRLHI(x) ((((x)->ccount & 0xf00)>>8)|((x)->bits))
-+#define MPPE_CTRLLO(x) ((x)->ccount & 0xff)
-+
-+/*
-+ * Kernel Crypto API needs its arguments to be in kmalloc'd memory, not in the
-+ * module static data area. That means sha_pad needs to be kmalloc'd. It is done
-+ * in mppe_module_init(). This has been pointed out on 30th July 2004 by Oleg
-+ * Makarenko on pptpclient-devel mailing list.
-+ */
-+#define SHA1_PAD_SIZE 40
-+struct sha_pad {
-+ unsigned char sha_pad1[SHA1_PAD_SIZE];
-+ unsigned char sha_pad2[SHA1_PAD_SIZE];
-+};
-+static struct sha_pad *sha_pad;
-+
-+static inline void
-+setup_sg(struct scatterlist *sg, const void *address, unsigned int length)
-+{
-+ sg[0].page = virt_to_page(address);
-+ sg[0].offset = offset_in_page(address);
-+ sg[0].length = length;
-+}
-+
-+static inline void
-+arc4_setkey(struct ppp_mppe_state *state, const unsigned char *key,
-+ const unsigned int keylen)
-+{
-+ crypto_cipher_setkey(state->arc4_tfm, key, keylen);
-+}
-+
-+static inline void
-+arc4_encrypt(struct ppp_mppe_state *state, const unsigned char *in,
-+ const unsigned int len, unsigned char *out)
-+{
-+ struct scatterlist sgin[4], sgout[4];
-+
-+ setup_sg(sgin, in, len);
-+ setup_sg(sgout, out, len);
-+ crypto_cipher_encrypt(state->arc4_tfm, sgout, sgin, len);
-+}
-+
-+#define arc4_decrypt arc4_encrypt
-+
-+/*
-+ * Key Derivation, from RFC 3078, RFC 3079.
-+ * Equivalent to Get_Key() for MS-CHAP as described in RFC 3079.
-+ */
-+static void
-+get_new_key_from_sha(struct ppp_mppe_state *state, unsigned char *interim_key)
-+{
-+ struct scatterlist sg[4];
-+
-+ setup_sg(&sg[0], state->master_key, state->keylen);
-+ setup_sg(&sg[1], sha_pad->sha_pad1, sizeof(sha_pad->sha_pad1));
-+ setup_sg(&sg[2], state->session_key, state->keylen);
-+ setup_sg(&sg[3], sha_pad->sha_pad2, sizeof(sha_pad->sha_pad2));
-+
-+ crypto_digest_digest (state->sha1_tfm, sg, 4, state->sha1_digest);
-+
-+ memcpy(interim_key, state->sha1_digest, state->keylen);
-+}
-+
-+static void
-+mppe_change_key(struct ppp_mppe_state *state, int initialize)
-+{
-+ unsigned char interim_key[MPPE_MAX_KEY_LEN];
-+
-+ get_new_key_from_sha(state, interim_key);
-+ if (initialize) {
-+ memcpy(state->session_key, interim_key, state->keylen);
-+ } else {
-+ arc4_setkey(state, interim_key, state->keylen);
-+ arc4_encrypt(state, interim_key, state->keylen, state->session_key);
-+ }
-+ if (state->keylen == 8) {
-+ if (state->bitkeylen == 40) {
-+ state->session_key[0] = MPPE_SALT0;
-+ state->session_key[1] = MPPE_SALT1;
-+ state->session_key[2] = MPPE_SALT2;
-+ } else {
-+ state->session_key[0] = MPPE_SALT0;
-+ }
-+ }
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+/* increase 12-bit coherency counter */
-+static inline void
-+mppe_increase_ccount(struct ppp_mppe_state *state)
-+{
-+ state->ccount = (state->ccount + 1) & MPPE_MAX_CCOUNT;
-+ if (state->mppe) {
-+ if (state->stateless) {
-+ mppe_change_key(state, 0);
-+ state->nextflushed = 1;
-+ } else {
-+ if ((state->ccount & 0xff) == 0xff) {
-+ mppe_change_key(state, 0);
-+ }
-+ }
-+ }
-+}
-+
-+/* allocate space for a MPPE/MPPC (de)compressor. */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static void *
-+mppe_alloc(unsigned char *options, int opt_len, int comp)
-+{
-+ struct ppp_mppe_state *state;
-+ unsigned int digestsize;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_alloc" : "mppe_decomp_alloc";
-+
-+ /*
-+ * Hack warning - additionally to the standard MPPC/MPPE configuration
-+ * options, pppd passes to the (de)copressor 8 or 16 byte session key.
-+ * Therefore options[1] contains MPPC/MPPE configuration option length
-+ * (CILEN_MPPE = 6), but the real options length, depending on the key
-+ * length, is 6+8 or 6+16.
-+ */
-+ if (opt_len < CILEN_MPPE) {
-+ printk(KERN_WARNING "%s: wrong options length: %u\n", fname, opt_len);
-+ return NULL;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname, options[0],
-+ options[1], options[2], options[3], options[4], options[5]);
-+ return NULL;
-+ }
-+
-+ state = (struct ppp_mppe_state *)kmalloc(sizeof(*state), GFP_KERNEL);
-+ if (state == NULL) {
-+ printk(KERN_ERR "%s: cannot allocate space for %scompressor\n", fname,
-+ comp ? "" : "de");
-+ return NULL;
-+ }
-+ memset(state, 0, sizeof(struct ppp_mppe_state));
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+
-+ if (state->mppc) {
-+ /* allocate MPPC history */
-+ state->hist = (u8*)vmalloc(2*MPPE_HIST_LEN*sizeof(u8));
-+ if (state->hist == NULL) {
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+
-+ /* allocate hashtable for MPPC compressor */
-+ if (comp) {
-+ state->hash = (u16*)vmalloc(MPPE_HIST_LEN*sizeof(u16));
-+ if (state->hash == NULL) {
-+ vfree(state->hist);
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+ }
-+ }
-+
-+ if (state->mppe) { /* specific for MPPE */
-+ /* Load ARC4 algorithm */
-+ state->arc4_tfm = crypto_alloc_tfm("arc4", 0);
-+ if (state->arc4_tfm == NULL) {
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load ARC4 module\n", fname);
-+ return NULL;
-+ }
-+
-+ /* Load SHA1 algorithm */
-+ state->sha1_tfm = crypto_alloc_tfm("sha1", 0);
-+ if (state->sha1_tfm == NULL) {
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load SHA1 module\n", fname);
-+ return NULL;
-+ }
-+
-+ digestsize = crypto_tfm_alg_digestsize(state->sha1_tfm);
-+ if (digestsize < MPPE_MAX_KEY_LEN) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: CryptoAPI SHA1 digest size too small\n", fname);
-+ }
-+
-+ state->sha1_digest = kmalloc(digestsize, GFP_KERNEL);
-+ if (!state->sha1_digest) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for SHA1 digest\n", fname);
-+ }
-+
-+ memcpy(state->master_key, options+CILEN_MPPE, MPPE_MAX_KEY_LEN);
-+ memcpy(state->session_key, state->master_key, MPPE_MAX_KEY_LEN);
-+ /* initial key generation is done in mppe_init() */
-+ }
-+
-+ return (void *) state;
-+}
-+
-+static void *
-+mppe_comp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 1);
-+}
-+
-+static void *
-+mppe_decomp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 0);
-+}
-+
-+/* cleanup the (de)compressor */
-+static void
-+mppe_comp_free(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+
-+ if (state != NULL) {
-+ if (state->mppe) {
-+ if (state->sha1_digest != NULL)
-+ kfree(state->sha1_digest);
-+ if (state->sha1_tfm != NULL)
-+ crypto_free_tfm(state->sha1_tfm);
-+ if (state->arc4_tfm != NULL)
-+ crypto_free_tfm(state->arc4_tfm);
-+ }
-+ if (state->hist != NULL)
-+ vfree(state->hist);
-+ if (state->hash != NULL)
-+ vfree(state->hash);
-+ kfree(state);
-+ }
-+}
-+
-+/* init MPPC/MPPE (de)compresor */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static int
-+mppe_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug, int comp)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_init" : "mppe_decomp_init";
-+
-+ if (opt_len < CILEN_MPPE) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: wrong options length: %u\n",
-+ fname, opt_len);
-+ return 0;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname,
-+ options[0], options[1], options[2], options[3], options[4],
-+ options[5]);
-+ return 0;
-+ }
-+
-+ if ((options[5] & ~MPPE_MPPC) != MPPE_128BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_56BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_40BIT &&
-+ (options[5] & MPPE_MPPC) != MPPE_MPPC) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: don't know what to do: o[5]=%02x\n",
-+ fname, options[5]);
-+ return 0;
-+ }
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+ state->stateless = options[2] & MPPE_STATELESS; /* Do we use stateless mode? */
-+
-+ switch (state->mppe) {
-+ case MPPE_40BIT: /* 40 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 40;
-+ break;
-+ case MPPE_56BIT: /* 56 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 56;
-+ break;
-+ case MPPE_128BIT: /* 128 bit key */
-+ state->keylen = 16;
-+ state->bitkeylen = 128;
-+ break;
-+ default:
-+ state->keylen = 0;
-+ state->bitkeylen = 0;
-+ }
-+
-+ state->ccount = MPPE_MAX_CCOUNT;
-+ state->bits = 0;
-+ state->unit = unit;
-+ state->debug = debug;
-+ state->histptr = MPPE_HIST_LEN;
-+ if (state->mppc) { /* reset history if MPPC was negotiated */
-+ memset(state->hist, 0, 2*MPPE_HIST_LEN*sizeof(u8));
-+ }
-+
-+ if (state->mppe) { /* generate initial session keys */
-+ mppe_change_key(state, 1);
-+ }
-+
-+ if (comp) { /* specific for compressor */
-+ state->nextflushed = 1;
-+ } else { /* specific for decompressor */
-+ state->mru = mru;
-+ state->flushexpected = 1;
-+ }
-+
-+ return 1;
-+}
-+
-+static int
-+mppe_comp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, 0, debug, 1);
-+}
-+
-+
-+static int
-+mppe_decomp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, mru, debug, 0);
-+}
-+
-+static void
-+mppe_comp_reset(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: resetting MPPC/MPPE compressor\n",
-+ __FUNCTION__, state->unit);
-+
-+ state->nextflushed = 1;
-+ if (state->mppe)
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+static void
-+mppe_decomp_reset(void *arg)
-+{
-+ /* When MPPC/MPPE is in use, we shouldn't receive any CCP Reset-Ack.
-+ But when we receive such a packet, we just ignore it. */
-+ return;
-+}
-+
-+static void
-+mppe_stats(void *arg, struct compstat *stats)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ *stats = state->stats;
-+}
-+
-+/***************************/
-+/**** Compression stuff ****/
-+/***************************/
-+/* inserts 1 to 8 bits into the output buffer */
-+static inline void putbits8(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ val <<= *l;
-+ *buf = *buf | (val & 0xff);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 9 to 16 bits into the output buffer */
-+static inline void putbits16(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 8) {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 17 to 24 bits into the output buffer */
-+static inline void putbits24(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 16) {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++; (*i)++;
-+ *l = 24 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 24) & 0xff);
-+ *(++buf) = (val >> 16) & 0xff;
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+static int
-+mppc_compress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, idx, i, l;
-+ u8 *hist, *sbuf, *p, *q, *r, *s;
-+
-+ /*
-+ At this point, to avoid possible buffer overflow caused by packet
-+ expansion during/after compression, we should make sure that
-+ osize >= (((isize*9)/8)+1)+2, but we don't do that because in
-+ ppp_generic.c we simply allocate bigger obuf.
-+
-+ Maximum MPPC packet expansion is 12.5%. This is the worst case when
-+ all octets in the input buffer are >= 0x80 and we cannot find any
-+ repeated tokens. Additionally we have to reserve 2 bytes for MPPE/MPPC
-+ status bits and coherency counter.
-+ */
-+
-+ hist = state->hist + MPPE_HIST_LEN;
-+ /* check if there is enough room at the end of the history */
-+ if (state->histptr + isize >= 2*MPPE_HIST_LEN) {
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memcpy(state->hist, hist, MPPE_HIST_LEN);
-+ }
-+ /* add packet to the history; isize must be <= MPPE_HIST_LEN */
-+ sbuf = state->hist + state->histptr;
-+ memcpy(sbuf, ibuf, isize);
-+ state->histptr += isize;
-+
-+ /* compress data */
-+ r = sbuf + isize;
-+ *obuf = olen = i = 0;
-+ l = 8;
-+ while (i < isize - 2) {
-+ s = q = sbuf + i;
-+ idx = ((40543*((((s[0]<<4)^s[1])<<4)^s[2]))>>4) & 0x1fff;
-+ p = hist + state->hash[idx];
-+ state->hash[idx] = (u16) (s - hist);
-+ off = s - p;
-+ if (off > MPPE_HIST_LEN - 1 || off < 1 || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++) {
-+ /* no match found; encode literal byte */
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i]&0x7f)), 9, &olen, &l);
-+ }
-+ ++i;
-+ continue;
-+ }
-+ if (r - q >= 64) {
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++;
-+ if (s - q == 64) {
-+ p--; s--;
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ } else {
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ len = s - q - 1;
-+ i += len;
-+
-+ /* at least 3 character match found; code data */
-+ /* encode offset */
-+ if (off < 64) { /* 10-bit offset; 0 <= offset < 64 */
-+ putbits16(obuf, 0x3c0|off, 10, &olen, &l);
-+ } else if (off < 320) { /* 12-bit offset; 64 <= offset < 320 */
-+ putbits16(obuf, 0xe00|(off-64), 12, &olen, &l);
-+ } else if (off < 8192) { /* 16-bit offset; 320 <= offset < 8192 */
-+ putbits16(obuf, 0xc000|(off-320), 16, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and we send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return 0;
-+ }
-+ /* encode length of match */
-+ if (len < 4) { /* length = 3 */
-+ putbits8(obuf, 0, 1, &olen, &l);
-+ } else if (len < 8) { /* 4 <= length < 8 */
-+ putbits8(obuf, 0x08|(len&0x03), 4, &olen, &l);
-+ } else if (len < 16) { /* 8 <= length < 16 */
-+ putbits8(obuf, 0x30|(len&0x07), 6, &olen, &l);
-+ } else if (len < 32) { /* 16 <= length < 32 */
-+ putbits8(obuf, 0xe0|(len&0x0f), 8, &olen, &l);
-+ } else if (len < 64) { /* 32 <= length < 64 */
-+ putbits16(obuf, 0x3c0|(len&0x1f), 10, &olen, &l);
-+ } else if (len < 128) { /* 64 <= length < 128 */
-+ putbits16(obuf, 0xf80|(len&0x3f), 12, &olen, &l);
-+ } else if (len < 256) { /* 128 <= length < 256 */
-+ putbits16(obuf, 0x3f00|(len&0x7f), 14, &olen, &l);
-+ } else if (len < 512) { /* 256 <= length < 512 */
-+ putbits16(obuf, 0xfe00|(len&0xff), 16, &olen, &l);
-+ } else if (len < 1024) { /* 512 <= length < 1024 */
-+ putbits24(obuf, 0x3fc00|(len&0x1ff), 18, &olen, &l);
-+ } else if (len < 2048) { /* 1024 <= length < 2048 */
-+ putbits24(obuf, 0xff800|(len&0x3ff), 20, &olen, &l);
-+ } else if (len < 4096) { /* 2048 <= length < 4096 */
-+ putbits24(obuf, 0x3ff000|(len&0x7ff), 22, &olen, &l);
-+ } else if (len < 8192) { /* 4096 <= length < 8192 */
-+ putbits24(obuf, 0xffe000|(len&0xfff), 24, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length of match value: %d\n",
-+ __FUNCTION__, state->unit, len);
-+ return 0;
-+ }
-+ }
-+
-+ /* Add remaining octets to the output */
-+ while(isize - i > 0) {
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i++], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i++]&0x7f)), 9, &olen, &l);
-+ }
-+ }
-+ /* Reset unused bits of the last output octet */
-+ if ((l != 0) && (l != 8)) {
-+ putbits8(obuf, 0, l, &olen, &l);
-+ }
-+
-+ return (int) olen;
-+}
-+
-+int
-+mppe_compress(void *arg, unsigned char *ibuf, unsigned char *obuf,
-+ int isize, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ int proto, olen, complen, off;
-+ unsigned char *wptr;
-+
-+ /* Check that the protocol is in the range we handle. */
-+ proto = PPP_PROTOCOL(ibuf);
-+ if (proto < 0x0021 || proto > 0x00fa)
-+ return 0;
-+
-+ wptr = obuf;
-+ /* Copy over the PPP header */
-+ wptr[0] = PPP_ADDRESS(ibuf);
-+ wptr[1] = PPP_CONTROL(ibuf);
-+ wptr[2] = PPP_COMP >> 8;
-+ wptr[3] = PPP_COMP;
-+ wptr += PPP_HDRLEN + (MPPE_OVHD / 2); /* Leave two octets for MPPE/MPPC bits */
-+
-+ /*
-+ * In ver. 0.99 protocol field was compressed. Deflate and BSD compress
-+ * do PFC before actual compression, RCF2118 and RFC3078 are not precise
-+ * on this topic so I decided to do PFC. Unfortunately this change caused
-+ * incompatibility with older/other MPPE/MPPC modules. I have received
-+ * a lot of complaints from unexperienced users so I have decided to revert
-+ * to previous state, i.e. the protocol field is sent uncompressed now.
-+ * Although this may be changed in the future.
-+ *
-+ * Receiving side (mppe_decompress()) still accepts packets with compressed
-+ * and uncompressed protocol field so you shouldn't get "Unsupported protocol
-+ * 0x2145 received" messages anymore.
-+ */
-+ //off = (proto > 0xff) ? 2 : 3; /* PFC - skip first protocol byte if 0 */
-+ off = 2;
-+
-+ ibuf += off;
-+
-+ mppe_increase_ccount(state);
-+
-+ if (state->nextflushed) {
-+ state->bits |= MPPE_BIT_FLUSHED;
-+ state->nextflushed = 0;
-+ if (state->mppe && !state->stateless) {
-+ /*
-+ * If this is the flag packet, the key has been already changed in
-+ * mppe_increase_ccount() so we dont't do it once again.
-+ */
-+ if ((state->ccount & 0xff) != 0xff) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+ if (state->mppc) { /* reset history */
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ }
-+ }
-+
-+ if (state->mppc && !state->mppe) { /* Do only compression */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be better to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ memcpy(wptr, ibuf, isize - off);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ } else { /* Do encryption with or without compression */
-+ state->bits |= MPPE_BIT_ENCRYPTED;
-+ if (!state->mppc && state->mppe) { /* Do only encryption */
-+ /* read from ibuf, write to wptr, adjust for PPP_HDRLEN */
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else { /* Do compression and then encryption - RFC3078 */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be good to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ /* Hack warning !!! RC4 implementation which we use does
-+ encryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice.
-+ I used to use ibuf as temporary buffer here, but it led
-+ packet sniffers into error. Thanks to Wilfried Weissmann
-+ for pointing that. */
-+ arc4_encrypt(state, wptr, complen, wptr);
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ }
-+ }
-+
-+ /* write status bits and coherency counter into the output buffer */
-+ wptr = obuf + PPP_HDRLEN;
-+ wptr[0] = MPPE_CTRLHI(state);
-+ wptr[1] = MPPE_CTRLLO(state);
-+
-+ state->bits = 0;
-+
-+ (state->stats).unc_bytes += isize;
-+ (state->stats).unc_packets++;
-+
-+ return olen;
-+}
-+
-+/***************************/
-+/*** Decompression stuff ***/
-+/***************************/
-+static inline u32 getbits(const u8 *buf, const u32 n, u32 *i, u32 *l)
-+{
-+ static const u32 m[] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
-+ u32 res, ol;
-+
-+ ol = *l;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ res = (buf[*i] & m[ol]) >> (*l);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ }
-+ } else {
-+ *l = 8 - n + (*l);
-+ res = (buf[(*i)++] & m[ol]) << 8;
-+ res = (res | buf[*i]) >> (*l);
-+ }
-+
-+ return res;
-+}
-+
-+static inline u32 getbyte(const u8 *buf, const u32 i, const u32 l)
-+{
-+ if (l == 8) {
-+ return buf[i];
-+ } else {
-+ return (((buf[i] << 8) | buf[i+1]) >> l) & 0xff;
-+ }
-+}
-+
-+static inline void lamecopy(u8 *dst, u8 *src, u32 len)
-+{
-+ while (len--)
-+ *dst++ = *src++;
-+}
-+
-+static int
-+mppc_decompress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, bits, val, sig, i, l;
-+ u8 *history, *s;
-+
-+ history = state->hist + state->histptr;
-+ olen = len = i = 0;
-+ l = 8;
-+ bits = isize * 8;
-+ while (bits >= 8) {
-+ val = getbyte(ibuf, i++, l);
-+ if (val < 0x80) { /* literal byte < 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] = (u8) val;
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 8;
-+ continue;
-+ }
-+
-+ sig = val & 0xc0;
-+ if (sig == 0x80) { /* literal byte >= 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] =
-+ (u8) (0x80|((val&0x3f)<<1)|getbits(ibuf, 1 , &i ,&l));
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 9;
-+ continue;
-+ }
-+
-+ /* Not a literal byte so it must be an (offset,length) pair */
-+ /* decode offset */
-+ sig = val & 0xf0;
-+ if (sig == 0xf0) { /* 10-bit offset; 0 <= offset < 64 */
-+ off = (((val&0x0f)<<2)|getbits(ibuf, 2 , &i ,&l));
-+ bits -= 10;
-+ } else {
-+ if (sig == 0xe0) { /* 12-bit offset; 64 <= offset < 320 */
-+ off = ((((val&0x0f)<<4)|getbits(ibuf, 4 , &i ,&l))+64);
-+ bits -= 12;
-+ } else {
-+ if ((sig&0xe0) == 0xc0) {/* 16-bit offset; 320 <= offset < 8192 */
-+ off = ((((val&0x1f)<<8)|getbyte(ibuf, i++, l))+320);
-+ bits -= 16;
-+ if (off > MPPE_HIST_LEN - 1) {
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: too big offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return DECOMP_ERROR;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: cannot decode offset value\n",
-+ __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ /* decode length of match */
-+ val = getbyte(ibuf, i, l);
-+ if ((val & 0x80) == 0x00) { /* len = 3 */
-+ len = 3;
-+ bits--;
-+ getbits(ibuf, 1 , &i ,&l);
-+ } else if ((val & 0xc0) == 0x80) { /* 4 <= len < 8 */
-+ len = 0x04 | ((val>>4) & 0x03);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xe0) == 0xc0) { /* 8 <= len < 16 */
-+ len = 0x08 | ((val>>2) & 0x07);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xf0) == 0xe0) { /* 16 <= len < 32 */
-+ len = 0x10 | (val & 0x0f);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xf800) == 0xf000) { /* 32 <= len < 64 */
-+ len = 0x0020 | ((val >> 6) & 0x001f);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xfc00) == 0xf800) { /* 64 <= len < 128 */
-+ len = 0x0040 | ((val >> 4) & 0x003f);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xfe00) == 0xfc00) { /* 128 <= len < 256 */
-+ len = 0x0080 | ((val >> 2) & 0x007f);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xff00) == 0xfe00) { /* 256 <= len < 512 */
-+ len = 0x0100 | (val & 0x00ff);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xff8000) == 0xff0000) { /* 512 <= len < 1024 */
-+ len = 0x000200 | ((val >> 6) & 0x0001ff);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xffc000) == 0xff8000) {/* 1024 <= len < 2048 */
-+ len = 0x000400 | ((val >> 4) & 0x0003ff);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xffe000) == 0xffc000) {/* 2048 <= len < 4096 */
-+ len = 0x000800 | ((val >> 2) & 0x0007ff);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xfff000) == 0xffe000) {/* 4096 <= len < 8192 */
-+ len = 0x001000 | (val & 0x000fff);
-+ bits -= 8;
-+ i++;
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length code: 0x%X\n",
-+ __FUNCTION__, state->unit, val);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ s = state->hist + state->histptr;
-+ state->histptr += len;
-+ olen += len;
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed bytes to the history */
-+
-+ /* In some cases len may be greater than off. It means that memory
-+ * areas pointed by s and s-off overlap. I had used memmove() here
-+ * because I thought that it acts as libc's version. Unfortunately,
-+ * I was wrong. :-) I got strange errors sometimes. Wilfried suggested
-+ * using of byte by byte copying here and strange errors disappeared.
-+ */
-+ lamecopy(s, s - off, len);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ /* Do PFC decompression */
-+ len = olen;
-+ if ((history[0] & 0x01) != 0) {
-+ obuf[0] = 0;
-+ obuf++;
-+ len++;
-+ }
-+
-+ if (len <= osize) {
-+ /* copy uncompressed packet to the output buffer */
-+ memcpy(obuf, history, olen);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: too big uncompressed packet: %d\n",
-+ __FUNCTION__, state->unit, len + (PPP_HDRLEN / 2));
-+ return DECOMP_ERROR;
-+ }
-+
-+ return (int) len;
-+}
-+
-+int
-+mppe_decompress(void *arg, unsigned char *ibuf, int isize,
-+ unsigned char *obuf, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+ int seq, bits, uncomplen;
-+
-+ if (isize <= PPP_HDRLEN + MPPE_OVHD) {
-+ if (state->debug) {
-+ printk(KERN_DEBUG "%s%d: short packet (len=%d)\n", __FUNCTION__,
-+ state->unit, isize);
-+ }
-+ return DECOMP_ERROR;
-+ }
-+
-+ /* Get coherency counter and control bits from input buffer */
-+ seq = MPPE_CCOUNT(ibuf);
-+ bits = MPPE_BITS(ibuf);
-+
-+ if (state->stateless) {
-+ /* RFC 3078, sec 8.1. */
-+ mppe_increase_ccount(state);
-+ if ((seq != state->ccount) && state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ } else {
-+ /* RFC 3078, sec 8.2. */
-+ if (state->flushexpected) { /* discard state */
-+ if ((bits & MPPE_BIT_FLUSHED)) { /* we received expected FLUSH bit */
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ state->flushexpected = 0;
-+ } else /* drop packet*/
-+ return DECOMP_ERROR;
-+ } else { /* normal state */
-+ mppe_increase_ccount(state);
-+ if (seq != state->ccount) {
-+ /* Packet loss detected, enter the discard state. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ if (state->mppe && (bits & MPPE_BIT_FLUSHED)) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+
-+ if (state->mppc && (bits & (MPPE_BIT_FLUSHED | MPPE_BIT_RESET))) {
-+ state->histptr = MPPE_HIST_LEN;
-+ if ((bits & MPPE_BIT_FLUSHED)) {
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ } else
-+ if ((bits & MPPE_BIT_RESET)) {
-+ memcpy(state->hist, state->hist + MPPE_HIST_LEN, MPPE_HIST_LEN);
-+ }
-+ }
-+
-+ /* Fill in the first part of the PPP header. The protocol field
-+ comes from the decompressed data. */
-+ obuf[0] = PPP_ADDRESS(ibuf);
-+ obuf[1] = PPP_CONTROL(ibuf);
-+ obuf += PPP_HDRLEN / 2;
-+
-+ if (state->mppe) { /* process encrypted packet */
-+ if ((bits & MPPE_BIT_ENCRYPTED)) {
-+ /* OK, packet encrypted, so decrypt it */
-+ if (state->mppc && (bits & MPPE_BIT_COMP)) {
-+ /* Hack warning !!! RC4 implementation which we use does
-+ decryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2), ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2));
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ uncomplen = isize - MPPE_OVHD;
-+ /* Decrypt the first byte in order to check if it is
-+ compressed or uncompressed protocol field */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), 1, obuf);
-+ /* Do PFC decompression */
-+ if ((obuf[0] & 0x01) != 0) {
-+ obuf[1] = obuf[0];
-+ obuf[0] = 0;
-+ obuf++;
-+ uncomplen++;
-+ }
-+ /* And finally, decrypt the rest of the frame. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2) + 1,
-+ isize - PPP_HDRLEN - (MPPE_OVHD / 2) - 1, obuf + 1);
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: encryption negotiated but not an "
-+ "encrypted packet received\n", __FUNCTION__, state->unit);
-+ mppe_change_key(state, 0);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ } else {
-+ if (state->mppc) { /* no MPPE, only MPPC */
-+ if ((bits & MPPE_BIT_COMP)) {
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ memcpy(obuf, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2));
-+ uncomplen = isize - MPPE_OVHD;
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: error - not an MPPC or MPPE frame "
-+ "received\n", __FUNCTION__, state->unit);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ (state->stats).unc_bytes += uncomplen;
-+ (state->stats).unc_packets++;
-+
-+ return uncomplen;
-+}
-+
-+
-+/************************************************************
-+ * Module interface table
-+ ************************************************************/
-+
-+/* These are in ppp_generic.c */
-+extern int ppp_register_compressor (struct compressor *cp);
-+extern void ppp_unregister_compressor (struct compressor *cp);
-+
-+/*
-+ * Functions exported to ppp_generic.c.
-+ *
-+ * In case of MPPC/MPPE there is no need to process incompressible data
-+ * because such a data is sent in MPPC/MPPE frame. Therefore the (*incomp)
-+ * callback function isn't needed.
-+ */
-+struct compressor ppp_mppe = {
-+ .compress_proto = CI_MPPE,
-+ .comp_alloc = mppe_comp_alloc,
-+ .comp_free = mppe_comp_free,
-+ .comp_init = mppe_comp_init,
-+ .comp_reset = mppe_comp_reset,
-+ .compress = mppe_compress,
-+ .comp_stat = mppe_stats,
-+ .decomp_alloc = mppe_decomp_alloc,
-+ .decomp_free = mppe_comp_free,
-+ .decomp_init = mppe_decomp_init,
-+ .decomp_reset = mppe_decomp_reset,
-+ .decompress = mppe_decompress,
-+ .incomp = NULL,
-+ .decomp_stat = mppe_stats,
-+ .owner = THIS_MODULE
-+};
-+
-+/************************************************************
-+ * Module support routines
-+ ************************************************************/
-+
-+int __init mppe_module_init(void)
-+{
-+ int answer;
-+
-+ if (!(crypto_alg_available("arc4", 0) && crypto_alg_available("sha1", 0))) {
-+ printk(KERN_ERR "Kernel doesn't provide ARC4 and/or SHA1 algorithms "
-+ "required by MPPE/MPPC. Check CryptoAPI configuration.\n");
-+ return -ENODEV;
-+ }
-+
-+ /* Allocate space for SHAPad1, SHAPad2 and ... */
-+ sha_pad = kmalloc(sizeof(struct sha_pad), GFP_KERNEL);
-+ if (sha_pad == NULL)
-+ return -ENOMEM;
-+ /* ... initialize them */
-+ memset(sha_pad->sha_pad1, 0x00, sizeof(sha_pad->sha_pad1));
-+ memset(sha_pad->sha_pad2, 0xf2, sizeof(sha_pad->sha_pad2));
-+
-+ answer = ppp_register_compressor(&ppp_mppe);
-+ if (answer == 0) {
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module registered\n");
-+ }
-+ return answer;
-+}
-+
-+void __exit mppe_module_cleanup(void)
-+{
-+ kfree(sha_pad);
-+ ppp_unregister_compressor(&ppp_mppe);
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module unregistered\n");
-+}
-+
-+module_init(mppe_module_init);
-+module_exit(mppe_module_cleanup);
-+
-+MODULE_AUTHOR("Jan Dubiec <jdx@slackware.pl>");
-+MODULE_DESCRIPTION("MPPE/MPPC encryption/compression module for Linux");
-+MODULE_VERSION("1.2");
-+MODULE_LICENSE("Dual BSD/GPL");
-+MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE));
-diff -ruN linux-2.6.12.orig/include/linux/ppp-comp.h linux-2.6.12/include/linux/ppp-comp.h
---- linux-2.6.12.orig/include/linux/ppp-comp.h 2004-12-24 22:33:47.000000000 +0100
-+++ linux-2.6.12/include/linux/ppp-comp.h 2005-06-28 20:07:01.000000000 +0200
-@@ -28,7 +28,7 @@
- */
-
- /*
-- * ==FILEVERSION 980319==
-+ * ==FILEVERSION 20040509==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -80,7 +80,7 @@
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
-- unsigned char *obuf, int isize, int osize);
-+ unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-@@ -101,7 +101,7 @@
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
-- unsigned char *obuf, int osize);
-+ unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-@@ -191,6 +191,42 @@
- #define DEFLATE_CHK_SEQUENCE 0
-
- /*
-+ * Definitions for MPPE/MPPC.
-+ */
-+
-+#define CI_MPPE 18 /* config option for MPPE */
-+#define CILEN_MPPE 6 /* length of config option */
-+
-+#define MPPE_OVHD 4 /* MPPE overhead */
-+#define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */
-+
-+#define MPPE_STATELESS 0x01 /* configuration bit H */
-+#define MPPE_40BIT 0x20 /* configuration bit L */
-+#define MPPE_56BIT 0x80 /* configuration bit M */
-+#define MPPE_128BIT 0x40 /* configuration bit S */
-+#define MPPE_MPPC 0x01 /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
-+/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-
diff --git a/packages/linux/linux-dht-walnut-2.6.12.6/ppc_40x_uboot.patch b/packages/linux/linux-dht-walnut-2.6.12.6/ppc_40x_uboot.patch
deleted file mode 100644
index fcb700c5b4..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12.6/ppc_40x_uboot.patch
+++ /dev/null
@@ -1,693 +0,0 @@
-diff-tree 3e9e7c1d0b7a36fb8affb973a054c5098e27baa8 (from 90eb2665841d7b444602736e2141a01c948f75b1)
-Author: Matt Porter <mporter@kernel.crashing.org>
-Date: Mon Nov 7 00:58:15 2005 -0800
-
- [PATCH] ppc32: cleanup AMCC PPC40x eval boards to support U-Boot
-
- Cleanup PPC40x eval boards (bubinga, walnut and sycamore) to support U-Boot
- as bootloader. The OpenBIOS bd_info struct is not used in the kernel
- anymore (only U-Boot now).
-
- uImage (U-Boot) tested on walnut, sycamore and bubinga
- zImage (OpenBIOS) tested on sycamore, bubinga and ebony
-
- Signed-off-by: Stefan Roese <sr@denx.de>
- Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
- Signed-off-by: Andrew Morton <akpm@osdl.org>
- Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
-diff --git a/arch/ppc/boot/simple/Makefile b/arch/ppc/boot/simple/Makefile
-index ff0904e..82df88b 100644
---- a/arch/ppc/boot/simple/Makefile
-+++ b/arch/ppc/boot/simple/Makefile
-@@ -67,6 +67,12 @@ zimageinitrd-$(CONFIG_BAMBOO) := zImage
- entrypoint-$(CONFIG_BAMBOO) := 0x01000000
- extra.o-$(CONFIG_BAMBOO) := pibs.o
-
-+ zimage-$(CONFIG_BUBINGA) := zImage-TREE
-+zimageinitrd-$(CONFIG_BUBINGA) := zImage.initrd-TREE
-+ end-$(CONFIG_BUBINGA) := bubinga
-+ entrypoint-$(CONFIG_BUBINGA) := 0x01000000
-+ extra.o-$(CONFIG_BUBINGA) := openbios.o
-+
- zimage-$(CONFIG_EBONY) := zImage-TREE
- zimageinitrd-$(CONFIG_EBONY) := zImage.initrd-TREE
- end-$(CONFIG_EBONY) := ebony
-@@ -91,6 +97,18 @@ zimageinitrd-$(CONFIG_OCOTEA) := zImage
- entrypoint-$(CONFIG_OCOTEA) := 0x01000000
- extra.o-$(CONFIG_OCOTEA) := pibs.o
-
-+ zimage-$(CONFIG_SYCAMORE) := zImage-TREE
-+zimageinitrd-$(CONFIG_SYCAMORE) := zImage.initrd-TREE
-+ end-$(CONFIG_SYCAMORE) := sycamore
-+ entrypoint-$(CONFIG_SYCAMORE) := 0x01000000
-+ extra.o-$(CONFIG_SYCAMORE) := openbios.o
-+
-+ zimage-$(CONFIG_WALNUT) := zImage-TREE
-+zimageinitrd-$(CONFIG_WALNUT) := zImage.initrd-TREE
-+ end-$(CONFIG_WALNUT) := walnut
-+ entrypoint-$(CONFIG_WALNUT) := 0x01000000
-+ extra.o-$(CONFIG_WALNUT) := openbios.o
-+
- extra.o-$(CONFIG_EV64260) := misc-ev64260.o
- end-$(CONFIG_EV64260) := ev64260
- cacheflag-$(CONFIG_EV64260) := -include $(clear_L2_L3)
-@@ -168,7 +186,8 @@ OBJCOPY_ARGS := -O elf32-powerpc
-
- # head.o and relocate.o must be at the start.
- boot-y := head.o relocate.o $(extra.o-y) $(misc-y)
--boot-$(CONFIG_40x) += embed_config.o
-+boot-$(CONFIG_REDWOOD_5) += embed_config.o
-+boot-$(CONFIG_REDWOOD_6) += embed_config.o
- boot-$(CONFIG_8xx) += embed_config.o
- boot-$(CONFIG_8260) += embed_config.o
- boot-$(CONFIG_BSEIP) += iic.o
-diff --git a/arch/ppc/boot/simple/misc.c b/arch/ppc/boot/simple/misc.c
-index e02de5b..f415d6c 100644
---- a/arch/ppc/boot/simple/misc.c
-+++ b/arch/ppc/boot/simple/misc.c
-@@ -23,7 +23,7 @@
- #include <asm/page.h>
- #include <asm/mmu.h>
- #include <asm/bootinfo.h>
--#ifdef CONFIG_44x
-+#ifdef CONFIG_4xx
- #include <asm/ibm4xx.h>
- #endif
- #include <asm/reg.h>
-@@ -88,6 +88,14 @@ get_mem_size(void)
- return 0;
- }
-
-+#if defined(CONFIG_40x)
-+#define PPC4xx_EMAC0_MR0 EMAC0_BASE
-+#endif
-+
-+#if defined(CONFIG_44x) && defined(PPC44x_EMAC0_MR0)
-+#define PPC4xx_EMAC0_MR0 PPC44x_EMAC0_MR0
-+#endif
-+
- struct bi_record *
- decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
- {
-@@ -103,13 +111,13 @@ decompress_kernel(unsigned long load_add
- com_port = serial_init(0, NULL);
- #endif
-
--#if defined(CONFIG_44x) && defined(PPC44x_EMAC0_MR0)
-+#if defined(PPC4xx_EMAC0_MR0)
- /* Reset MAL */
- mtdcr(DCRN_MALCR(DCRN_MAL_BASE), MALCR_MMSR);
- /* Wait for reset */
- while (mfdcr(DCRN_MALCR(DCRN_MAL_BASE)) & MALCR_MMSR) {};
- /* Reset EMAC */
-- *(volatile unsigned long *)PPC44x_EMAC0_MR0 = 0x20000000;
-+ *(volatile unsigned long *)PPC4xx_EMAC0_MR0 = 0x20000000;
- __asm__ __volatile__("eieio");
- #endif
-
-@@ -164,7 +172,9 @@ decompress_kernel(unsigned long load_add
- puts(" "); puthex((unsigned long)(&__ramdisk_end));puts("\n");
- }
-
-+#ifndef CONFIG_40x /* don't overwrite the 40x image located at 0x00400000! */
- avail_ram = (char *)0x00400000;
-+#endif
- end_avail = (char *)0x00800000;
- puts("avail ram: "); puthex((unsigned long)avail_ram); puts(" ");
- puthex((unsigned long)end_avail); puts("\n");
-diff --git a/arch/ppc/boot/simple/openbios.c b/arch/ppc/boot/simple/openbios.c
-index c732b6d..81f11d8 100644
---- a/arch/ppc/boot/simple/openbios.c
-+++ b/arch/ppc/boot/simple/openbios.c
-@@ -1,19 +1,43 @@
- /*
- * arch/ppc/boot/simple/openbios.c
- *
-- * 2005 (c) SYSGO AG - g.jaeger@sysgo.com
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * 2005 (c) SYSGO AG - g.jaeger@sysgo.com
-+ *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without
- * any warranty of any kind, whether express or implied.
- *
-- * Derived from arch/ppc/boot/simple/pibs.c (from MontaVista)
- */
-
- #include <linux/types.h>
- #include <linux/config.h>
- #include <linux/string.h>
- #include <asm/ppcboot.h>
--#include <platforms/4xx/ebony.h>
-+#include <asm/ibm4xx.h>
-+#include <asm/reg.h>
-+#ifdef CONFIG_40x
-+#include <asm/io.h>
-+#endif
-+
-+#if defined(CONFIG_BUBINGA)
-+#define BOARD_INFO_VECTOR 0xFFF80B50 /* openbios 1.19 moved this vector down - armin */
-+#else
-+#define BOARD_INFO_VECTOR 0xFFFE0B50
-+#endif
-+
-+#ifdef CONFIG_40x
-+/* Supply a default Ethernet address for those eval boards that don't
-+ * ship with one. This is an address from the MBX board I have, so
-+ * it is unlikely you will find it on your network.
-+ */
-+static ushort def_enet_addr[] = { 0x0800, 0x3e26, 0x1559 };
-+
-+extern unsigned long timebase_period_ns;
-+#endif /* CONFIG_40x */
-
- extern unsigned long decompress_kernel(unsigned long load_addr, int num_words,
- unsigned long cksum);
-@@ -23,15 +47,85 @@ extern unsigned long decompress_kernel(u
- bd_t hold_resid_buf __attribute__ ((__section__ (".data.boot")));
- bd_t *hold_residual = &hold_resid_buf;
-
-+typedef struct openbios_board_info {
-+ unsigned char bi_s_version[4]; /* Version of this structure */
-+ unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-+ unsigned int bi_memsize; /* DRAM installed, in bytes */
-+#ifdef CONFIG_405EP
-+ unsigned char bi_enetaddr[2][6]; /* Local Ethernet MAC address */
-+#else /* CONFIG_405EP */
-+ unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-+#endif /* CONFIG_405EP */
-+ unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-+ unsigned int bi_intfreq; /* Processor speed, in Hz */
-+ unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-+ unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
-+#ifdef CONFIG_405EP
-+ unsigned int bi_opb_busfreq; /* OPB Bus speed, in Hz */
-+ unsigned int bi_pllouta_freq; /* PLL OUTA speed, in Hz */
-+#endif /* CONFIG_405EP */
-+} openbios_bd_t;
-+
- void *
- load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
- void *ign1, void *ign2)
- {
-- decompress_kernel(load_addr, num_words, cksum);
-+#ifdef CONFIG_40x
-+ openbios_bd_t *openbios_bd = NULL;
-+ openbios_bd_t *(*get_board_info)(void) =
-+ (openbios_bd_t *(*)(void))(*(unsigned long *)BOARD_INFO_VECTOR);
-+
-+ /*
-+ * On 40x platforms we not only need the MAC-addresses, but also the
-+ * clocks and memsize. Now try to get all values using the OpenBIOS
-+ * "get_board_info()" callback.
-+ */
-+ if ((openbios_bd = get_board_info()) != NULL) {
-+ /*
-+ * Copy bd_info from OpenBIOS struct into U-Boot struct
-+ * used by kernel
-+ */
-+ hold_residual->bi_memsize = openbios_bd->bi_memsize;
-+ hold_residual->bi_intfreq = openbios_bd->bi_intfreq;
-+ hold_residual->bi_busfreq = openbios_bd->bi_busfreq;
-+ hold_residual->bi_pci_busfreq = openbios_bd->bi_pci_busfreq;
-+ memcpy(hold_residual->bi_pci_enetaddr, openbios_bd->bi_pci_enetaddr, 6);
-+#ifdef CONFIG_405EP
-+ memcpy(hold_residual->bi_enetaddr, openbios_bd->bi_enetaddr[0], 6);
-+ memcpy(hold_residual->bi_enet1addr, openbios_bd->bi_enetaddr[1], 6);
-+ hold_residual->bi_opbfreq = openbios_bd->bi_opb_busfreq;
-+ hold_residual->bi_procfreq = openbios_bd->bi_pllouta_freq;
-+#else /* CONFIG_405EP */
-+ memcpy(hold_residual->bi_enetaddr, openbios_bd->bi_enetaddr, 6);
-+#endif /* CONFIG_405EP */
-+ } else {
-+ /* Hmmm...better try to stuff some defaults.
-+ */
-+ hold_residual->bi_memsize = 16 * 1024 * 1024;
-+ hold_residual->bi_intfreq = 200000000;
-+ hold_residual->bi_busfreq = 100000000;
-+ hold_residual->bi_pci_busfreq = 66666666;
-+
-+ /*
-+ * Only supply one mac-address in this fallback
-+ */
-+ memcpy(hold_residual->bi_enetaddr, (void *)def_enet_addr, 6);
-+#ifdef CONFIG_405EP
-+ hold_residual->bi_opbfreq = 50000000;
-+ hold_residual->bi_procfreq = 200000000;
-+#endif /* CONFIG_405EP */
-+ }
-+
-+ timebase_period_ns = 1000000000 / hold_residual->bi_intfreq;
-+#endif /* CONFIG_40x */
-
-+#ifdef CONFIG_440GP
- /* simply copy the MAC addresses */
-- memcpy(hold_residual->bi_enetaddr, (char *)EBONY_OPENBIOS_MAC_BASE, 6);
-- memcpy(hold_residual->bi_enet1addr, (char *)(EBONY_OPENBIOS_MAC_BASE+EBONY_OPENBIOS_MAC_OFFSET), 6);
-+ memcpy(hold_residual->bi_enetaddr, (char *)OPENBIOS_MAC_BASE, 6);
-+ memcpy(hold_residual->bi_enet1addr, (char *)(OPENBIOS_MAC_BASE+OPENBIOS_MAC_OFFSET), 6);
-+#endif /* CONFIG_440GP */
-+
-+ decompress_kernel(load_addr, num_words, cksum);
-
- return (void *)hold_residual;
- }
-diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig
-index e70e4c6..d883791 100644
---- a/arch/ppc/platforms/4xx/Kconfig
-+++ b/arch/ppc/platforms/4xx/Kconfig
-@@ -225,7 +225,7 @@ config EMBEDDEDBOOT
-
- config IBM_OPENBIOS
- bool
-- depends on ASH || BUBINGA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
-+ depends on ASH || REDWOOD_5 || REDWOOD_6
- default y
-
- config PPC4xx_DMA
-diff --git a/arch/ppc/platforms/4xx/bubinga.c b/arch/ppc/platforms/4xx/bubinga.c
-index 3678abf..8110f55 100644
---- a/arch/ppc/platforms/4xx/bubinga.c
-+++ b/arch/ppc/platforms/4xx/bubinga.c
-@@ -89,7 +89,7 @@ bubinga_early_serial_map(void)
- * by 16.
- */
- uart_div = (mfdcr(DCRN_CPC0_UCR_BASE) & DCRN_CPC0_UCR_U0DIV);
-- uart_clock = __res.bi_pllouta_freq / uart_div;
-+ uart_clock = __res.bi_procfreq / uart_div;
-
- /* Setup serial port access */
- memset(&port, 0, sizeof(port));
-diff --git a/arch/ppc/platforms/4xx/bubinga.h b/arch/ppc/platforms/4xx/bubinga.h
-index b1df856..b5380cf 100644
---- a/arch/ppc/platforms/4xx/bubinga.h
-+++ b/arch/ppc/platforms/4xx/bubinga.h
-@@ -1,52 +1,34 @@
- /*
-- * Support for IBM PPC 405EP evaluation board (Bubinga).
-+ * arch/ppc/platforms/4xx/bubinga.h
- *
-- * Author: SAW (IBM), derived from walnut.h.
-- * Maintained by MontaVista Software <source@mvista.com>
-+ * Bubinga board definitions
-+ *
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * SAW (IBM)
-+ * 2003 (c) MontaVista Softare Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2003 (c) MontaVista Softare Inc. This file is licensed under the
-- * terms of the GNU General Public License version 2. This program is
-- * licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __BUBINGA_H__
- #define __BUBINGA_H__
-
--/* 405EP */
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405ep.h>
--
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[2][6]; /* Local Ethernet MAC address */ unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
-- unsigned int bi_opb_busfreq; /* OPB Bus speed, in Hz */
-- unsigned int bi_pllouta_freq; /* PLL OUTA speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
-+#include <asm/ppcboot.h>
-
- /* Memory map for the Bubinga board.
- * Generic 4xx plus RTC.
- */
-
--extern void *bubinga_rtc_base;
- #define BUBINGA_RTC_PADDR ((uint)0xf0000000)
- #define BUBINGA_RTC_VADDR BUBINGA_RTC_PADDR
- #define BUBINGA_RTC_SIZE ((uint)8*1024)
-@@ -58,12 +40,18 @@ extern void *bubinga_rtc_base;
- * for typical configurations at various CPU speeds.
- * The base baud is calculated as (FWDA / EXT UART DIV / 16)
- */
--#define BASE_BAUD 0
-+#define BASE_BAUD 0
-
--#define BUBINGA_FPGA_BASE 0xF0300000
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 1 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-
--#define PPC4xx_MACHINE_NAME "IBM Bubinga"
-+#define PPC4xx_MACHINE_NAME "IBM Bubinga"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __BUBINGA_H__ */
- #endif /* __KERNEL__ */
-diff --git a/arch/ppc/platforms/4xx/ebony.h b/arch/ppc/platforms/4xx/ebony.h
-index d08faa4..b91ad42 100644
---- a/arch/ppc/platforms/4xx/ebony.h
-+++ b/arch/ppc/platforms/4xx/ebony.h
-@@ -24,8 +24,8 @@
- #define PPC44x_EMAC0_MR0 0xE0000800
-
- /* Where to find the MAC info */
--#define EBONY_OPENBIOS_MAC_BASE 0xfffffe0c
--#define EBONY_OPENBIOS_MAC_OFFSET 0x0c
-+#define OPENBIOS_MAC_BASE 0xfffffe0c
-+#define OPENBIOS_MAC_OFFSET 0x0c
-
- /* Default clock rates for Rev. B and Rev. C silicon */
- #define EBONY_440GP_RB_SYSCLK 33000000
-diff --git a/arch/ppc/platforms/4xx/sycamore.c b/arch/ppc/platforms/4xx/sycamore.c
-index d8019ee..281b4a2 100644
---- a/arch/ppc/platforms/4xx/sycamore.c
-+++ b/arch/ppc/platforms/4xx/sycamore.c
-@@ -88,9 +88,6 @@ ppc405_map_irq(struct pci_dev *dev, unsi
- void __init
- sycamore_setup_arch(void)
- {
--#define SYCAMORE_PS2_BASE 0xF0100000
--#define SYCAMORE_FPGA_BASE 0xF0300000
--
- void *fpga_brdc;
- unsigned char fpga_brdc_data;
- void *fpga_enable;
-@@ -100,7 +97,7 @@ sycamore_setup_arch(void)
-
- ppc4xx_setup_arch();
-
-- ibm_ocp_set_emac(0, 1);
-+ ibm_ocp_set_emac(0, 0);
-
- kb_data = ioremap(SYCAMORE_PS2_BASE, 8);
- if (!kb_data) {
-@@ -111,7 +108,7 @@ sycamore_setup_arch(void)
-
- kb_cs = kb_data + 1;
-
-- fpga_status = ioremap(SYCAMORE_FPGA_BASE, 8);
-+ fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
- if (!fpga_status) {
- printk(KERN_CRIT
- "sycamore_setup_arch() fpga_status ioremap failed\n");
-diff --git a/arch/ppc/platforms/4xx/sycamore.h b/arch/ppc/platforms/4xx/sycamore.h
-index 3e7b4e2..1cd6c82 100644
---- a/arch/ppc/platforms/4xx/sycamore.h
-+++ b/arch/ppc/platforms/4xx/sycamore.h
-@@ -1,67 +1,52 @@
- /*
- * arch/ppc/platforms/4xx/sycamore.h
- *
-- * Macros, definitions, and data structures specific to the IBM PowerPC
-- * 405GPr "Sycamore" evaluation board.
-+ * Sycamore board definitions
- *
-- * Author: Armin Kuster <akuster@mvista.com>
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * Armin Kuster <akuster@mvista.com>
-+ * 2000 (c) MontaVista, Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2000 (c) MontaVista, Software, Inc. This file is licensed under
-- * the terms of the GNU General Public License version 2. This program
-- * is licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __ASM_SYCAMORE_H__
- #define __ASM_SYCAMORE_H__
-
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405gpr.h>
-+#include <asm/ppcboot.h>
-
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's "Sycamore" evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-- unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
--
--/* Memory map for the IBM "Sycamore" 405GP evaluation board.
-+/* Memory map for the IBM "Sycamore" 405GPr evaluation board.
- * Generic 4xx plus RTC.
- */
-
--extern void *sycamore_rtc_base;
- #define SYCAMORE_RTC_PADDR ((uint)0xf0000000)
- #define SYCAMORE_RTC_VADDR SYCAMORE_RTC_PADDR
--#define SYCAMORE_RTC_SIZE ((uint)8*1024)
-+#define SYCAMORE_RTC_SIZE ((uint)8*1024)
-
--#ifdef CONFIG_PPC405GP_INTERNAL_CLOCK
--#define BASE_BAUD 201600
--#else
- #define BASE_BAUD 691200
--#endif
-
--#define SYCAMORE_PS2_BASE 0xF0100000
--#define SYCAMORE_FPGA_BASE 0xF0300000
-+#define SYCAMORE_PS2_BASE 0xF0100000
-+
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 5 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-
- #define PPC4xx_MACHINE_NAME "IBM Sycamore"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __ASM_SYCAMORE_H__ */
- #endif /* __KERNEL__ */
-diff --git a/arch/ppc/platforms/4xx/walnut.c b/arch/ppc/platforms/4xx/walnut.c
-index a33eda4..74cb331 100644
---- a/arch/ppc/platforms/4xx/walnut.c
-+++ b/arch/ppc/platforms/4xx/walnut.c
-@@ -90,7 +90,7 @@ walnut_setup_arch(void)
-
- kb_cs = kb_data + 1;
-
-- fpga_status = ioremap(WALNUT_FPGA_BASE, 8);
-+ fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
- if (!fpga_status) {
- printk(KERN_CRIT
- "walnut_setup_arch() fpga_status ioremap failed\n");
-diff --git a/arch/ppc/platforms/4xx/walnut.h b/arch/ppc/platforms/4xx/walnut.h
-index 04cfbf3..dcf2691 100644
---- a/arch/ppc/platforms/4xx/walnut.h
-+++ b/arch/ppc/platforms/4xx/walnut.h
-@@ -1,72 +1,55 @@
- /*
- * arch/ppc/platforms/4xx/walnut.h
- *
-- * Macros, definitions, and data structures specific to the IBM PowerPC
-- * 405GP "Walnut" evaluation board.
-+ * Walnut board definitions
- *
-- * Authors: Grant Erickson <grant@lcse.umn.edu>, Frank Rowand
-- * <frank_rowand@mvista.com>, Debbie Chu <debbie_chu@mvista.com> or
-- * source@mvista.com
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
- *
-- * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
-+ * Based on original work by
-+ * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
-+ * Frank Rowand <frank_rowand@mvista.com>
-+ * Debbie Chu <debbie_chu@mvista.com>
-+ * 2000 (c) MontaVista, Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2000 (c) MontaVista, Software, Inc. This file is licensed under
-- * the terms of the GNU General Public License version 2. This program
-- * is licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __ASM_WALNUT_H__
- #define __ASM_WALNUT_H__
-
--/* We have a 405GP core */
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405gp.h>
--
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's "Walnut" evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-- unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
-+#include <asm/ppcboot.h>
-
- /* Memory map for the IBM "Walnut" 405GP evaluation board.
- * Generic 4xx plus RTC.
- */
-
--extern void *walnut_rtc_base;
- #define WALNUT_RTC_PADDR ((uint)0xf0000000)
- #define WALNUT_RTC_VADDR WALNUT_RTC_PADDR
- #define WALNUT_RTC_SIZE ((uint)8*1024)
-
--#ifdef CONFIG_PPC405GP_INTERNAL_CLOCK
--#define BASE_BAUD 201600
--#else
- #define BASE_BAUD 691200
--#endif
-
- #define WALNUT_PS2_BASE 0xF0100000
--#define WALNUT_FPGA_BASE 0xF0300000
-+
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 5 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-+#define WALNUT_FPGA_BASE PPC40x_FPGA_BASE
-
- #define PPC4xx_MACHINE_NAME "IBM Walnut"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __ASM_WALNUT_H__ */
- #endif /* __KERNEL__ */
-diff --git a/include/asm-ppc/ibm_ocp.h b/include/asm-ppc/ibm_ocp.h
-index 6f10a25..9c21de1 100644
---- a/include/asm-ppc/ibm_ocp.h
-+++ b/include/asm-ppc/ibm_ocp.h
-@@ -131,9 +131,22 @@ static inline void ibm_ocp_set_emac(int
- /* Copy MAC addresses to EMAC additions */
- for (i=start; i<=end; i++) {
- def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, i);
-- memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-- &__res.bi_enetaddr[i],
-- 6);
-+ if (i == 0)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enetaddr, 6);
-+#if defined(CONFIG_405EP) || defined(CONFIG_44x)
-+ else if (i == 1)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet1addr, 6);
-+#endif
-+#if defined(CONFIG_440GX)
-+ else if (i == 2)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet2addr, 6);
-+ else if (i == 3)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet3addr, 6);
-+#endif
- }
- }
- #endif
-diff --git a/include/asm-ppc/ppcboot.h b/include/asm-ppc/ppcboot.h
-index fe24e45..6b7b63f 100644
---- a/include/asm-ppc/ppcboot.h
-+++ b/include/asm-ppc/ppcboot.h
-@@ -73,8 +73,8 @@ typedef struct bd_info {
- #if defined(CONFIG_HYMOD)
- hymod_conf_t bi_hymod_conf; /* hymod configuration information */
- #endif
--#if defined(CONFIG_EVB64260) || defined(CONFIG_44x) || defined(CONFIG_85xx) ||\
-- defined(CONFIG_83xx)
-+#if defined(CONFIG_EVB64260) || defined(CONFIG_405EP) || defined(CONFIG_44x) || \
-+ defined(CONFIG_85xx) || defined(CONFIG_83xx)
- /* second onboard ethernet port */
- unsigned char bi_enet1addr[6];
- #endif
-@@ -96,5 +96,7 @@ typedef struct bd_info {
- #endif
- } bd_t;
-
-+#define bi_tbfreq bi_intfreq
-+
- #endif /* __ASSEMBLY__ */
- #endif /* __ASM_PPCBOOT_H__ */
diff --git a/packages/linux/linux-dht-walnut-2.6.12/dht-walnut_defconfig b/packages/linux/linux-dht-walnut-2.6.12/dht-walnut_defconfig
deleted file mode 100644
index 3cd0837ceb..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12/dht-walnut_defconfig
+++ /dev/null
@@ -1,1963 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12
-# Sat May 13 19:38:16 2006
-#
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_HAVE_DEC_LOCK=y
-CONFIG_PPC=y
-CONFIG_PPC32=y
-CONFIG_GENERIC_NVRAM=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-# CONFIG_EPOLL is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Processor
-#
-# CONFIG_6xx is not set
-CONFIG_40x=y
-# CONFIG_44x is not set
-# CONFIG_POWER3 is not set
-# CONFIG_POWER4 is not set
-# CONFIG_8xx is not set
-# CONFIG_E500 is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_CPU_FREQ is not set
-CONFIG_4xx=y
-
-#
-# IBM 4xx options
-#
-# CONFIG_ASH is not set
-# CONFIG_BUBINGA is not set
-# CONFIG_CPCI405 is not set
-# CONFIG_EP405 is not set
-# CONFIG_OAK is not set
-# CONFIG_REDWOOD_5 is not set
-# CONFIG_REDWOOD_6 is not set
-# CONFIG_SYCAMORE is not set
-CONFIG_WALNUT=y
-# CONFIG_XILINX_ML300 is not set
-CONFIG_IBM405_ERR77=y
-CONFIG_IBM405_ERR51=y
-CONFIG_IBM_OCP=y
-CONFIG_BIOS_FIXUP=y
-CONFIG_405GP=y
-# CONFIG_PPC4xx_DMA is not set
-CONFIG_PPC_GEN550=y
-# CONFIG_PM is not set
-CONFIG_UART0_TTYS0=y
-# CONFIG_UART0_TTYS1 is not set
-CONFIG_NOT_COHERENT_CACHE=y
-
-#
-# Platform options
-#
-# CONFIG_PC_KEYBOARD is not set
-# CONFIG_SMP is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="ip=on"
-CONFIG_ISA_DMA_API=y
-
-#
-# Bus options
-#
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_LEGACY_PROC=y
-# CONFIG_PCI_NAMES is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_TCIC=m
-CONFIG_PCCARD_NONSTATIC=m
-
-#
-# Advanced setup
-#
-# CONFIG_ADVANCED_OPTIONS is not set
-
-#
-# Default settings for advanced configuration options are used
-#
-CONFIG_HIGHMEM_START=0xfe000000
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_KERNEL_START=0xc0000000
-CONFIG_TASK_SIZE=0x80000000
-CONFIG_CONSISTENT_START=0xff100000
-CONFIG_CONSISTENT_SIZE=0x00200000
-CONFIG_BOOT_LOAD=0x00400000
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-# CONFIG_STANDALONE is not set
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-# CONFIG_NFTL_RW is not set
-CONFIG_INFTL=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_AMDSTD_RETRY=0
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x4000000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_WALNUT=m
-CONFIG_MTD_PCI=m
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-CONFIG_MTD_PMC551_BUGFIX=y
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_PC_PCMCIA is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=m
-CONFIG_PARIDE=m
-CONFIG_PARIDE_PARPORT=m
-
-#
-# Parallel IDE high-level drivers
-#
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-
-#
-# Parallel IDE protocol modules
-#
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_BPCK6=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-# CONFIG_CISS_SCSI_TAPE is not set
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_SX8=m
-CONFIG_BLK_DEV_UB=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-CONFIG_BLK_DEV_IDESCSI=m
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_IDEPCI_SHARE_IRQ is not set
-CONFIG_BLK_DEV_OFFBOARD=y
-CONFIG_BLK_DEV_GENERIC=y
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_SL82C105=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_WDC_ALI15X3 is not set
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT34X=m
-# CONFIG_HPT34X_AUTODMA is not set
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-# CONFIG_PDC202XX_BURST is not set
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-# CONFIG_PDC202XX_FORCE is not set
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-# CONFIG_IDE_ARM is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=y
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_MEGARAID_NEWGEN is not set
-CONFIG_MEGARAID_LEGACY=m
-# CONFIG_SCSI_SATA is not set
-CONFIG_SCSI_BUSLOGIC=m
-# CONFIG_SCSI_OMIT_FLASHPOINT is not set
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_FC=m
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
-CONFIG_SCSI_QLOGIC_1280=m
-# CONFIG_SCSI_QLOGIC_1280_1040 is not set
-CONFIG_SCSI_QLA2XXX=y
-CONFIG_SCSI_QLA21XX=m
-CONFIG_SCSI_QLA22XX=m
-CONFIG_SCSI_QLA2300=m
-CONFIG_SCSI_QLA2322=m
-CONFIG_SCSI_QLA6312=m
-CONFIG_SCSI_LPFC=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
-CONFIG_SCSI_DEBUG=m
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID5=m
-CONFIG_MD_RAID6=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-CONFIG_FUSION=m
-CONFIG_FUSION_MAX_SGE=40
-CONFIG_FUSION_CTL=m
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_IEEE1394=m
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
-CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
-
-#
-# Device Drivers
-#
-CONFIG_IEEE1394_PCILYNX=m
-CONFIG_IEEE1394_OHCI1394=m
-
-#
-# Protocol Drivers
-#
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_SBP2=m
-CONFIG_IEEE1394_SBP2_PHYS_DMA=y
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_DV1394=m
-CONFIG_IEEE1394_RAWIO=m
-CONFIG_IEEE1394_CMP=m
-CONFIG_IEEE1394_AMDTP=m
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Macintosh device drivers
-#
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_FWMARK is not set
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_PIMSM_V1 is not set
-# CONFIG_IP_PIMSM_V2 is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_TUNNEL=m
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_TARGET_NOTRACK=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-# CONFIG_IP6_NF_MATCH_PHYSDEV is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-# CONFIG_DEV_APPLETALK is not set
-CONFIG_X25=m
-CONFIG_LAPB=m
-# CONFIG_NET_DIVERT is not set
-CONFIG_ECONET=m
-# CONFIG_ECONET_AUNUDP is not set
-# CONFIG_ECONET_NATIVE is not set
-CONFIG_WAN_ROUTER=m
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# CONFIG_NET_SCH_CLK_CPU is not set
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-# CONFIG_NET_CLS_IND is not set
-# CONFIG_CLS_U32_MARK is not set
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-CONFIG_NET_CLS_POLICE=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-
-#
-# Tulip family network device support
-#
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_PCMCIA_XIRTULIP=m
-CONFIG_HP100=m
-CONFIG_IBM_EMAC=y
-# CONFIG_IBM_EMAC_ERRMSG is not set
-CONFIG_IBM_EMAC_RXB=128
-CONFIG_IBM_EMAC_TXB=64
-CONFIG_IBM_EMAC_FGAP=8
-CONFIG_IBM_EMAC_SKBRES=0
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-# CONFIG_AMD8111E_NAPI is not set
-CONFIG_ADAPTEC_STARFIRE=m
-# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_DGRS=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-# CONFIG_E1000_NAPI is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-# CONFIG_R8169_VLAN is not set
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-CONFIG_STRIP=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-CONFIG_PCMCIA_RAYCS=m
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_PCMCIA_WL3501=m
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-CONFIG_PRISM54=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-
-#
-# Wan interfaces
-#
-CONFIG_WAN=y
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_LANMEDIA=m
-CONFIG_SYNCLINK_SYNCPPP=m
-CONFIG_HDLC=m
-# CONFIG_HDLC_RAW is not set
-# CONFIG_HDLC_RAW_ETH is not set
-# CONFIG_HDLC_CISCO is not set
-# CONFIG_HDLC_FR is not set
-# CONFIG_HDLC_PPP is not set
-# CONFIG_HDLC_X25 is not set
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-
-#
-# Cyclades-PC300 MLPPP support is disabled.
-#
-
-#
-# Refer to the file README.mlppp, provided by PC300 package.
-#
-CONFIG_FARSYNC=m
-CONFIG_DLCI=m
-CONFIG_DLCI_COUNT=24
-CONFIG_DLCI_MAX=8
-# CONFIG_WAN_ROUTER_DRIVERS is not set
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-
-#
-# ATM drivers
-#
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E_MAYBE is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE_MPPC=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_NET_FC is not set
-CONFIG_SHAPER=m
-CONFIG_NETCONSOLE=m
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=y
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_I8042 is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_CS is not set
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_TIPAR=m
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-# CONFIG_WDT_501_PCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_NVRAM=m
-CONFIG_GEN_RTC=m
-# CONFIG_GEN_RTC_X is not set
-CONFIG_DTLK=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-
-#
-# Ftape, the floppy tape device driver
-#
-CONFIG_AGP=m
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-
-#
-# TPM devices
-#
-CONFIG_TCG_TPM=m
-CONFIG_TCG_NSC=m
-CONFIG_TCG_ATMEL=m
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCF=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-CONFIG_I2C_IBM_IIC=y
-CONFIG_I2C_ISA=m
-# CONFIG_I2C_MPC is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Hardware Sensors Chip support
-#
-CONFIG_I2C_SENSOR=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83627HF=m
-
-#
-# Other I2C Chip support
-#
-CONFIG_SENSORS_DS1337=m
-CONFIG_SENSORS_EEPROM=m
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_RTC8564=m
-CONFIG_SENSORS_M41T00=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_DVB is not set
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-# CONFIG_VIDEO_CX88_DVB is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-
-#
-# Radio Adapters
-#
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-
-#
-# Digital Video Broadcasting Devices
-#
-CONFIG_DVB=y
-CONFIG_DVB_CORE=m
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_DVB_AV7110=m
-# CONFIG_DVB_AV7110_FIRMWARE is not set
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_DIBUSB=m
-# CONFIG_DVB_DIBUSB_MISDESIGNED_DEVICES is not set
-# CONFIG_DVB_DIBCOM_DEBUG is not set
-CONFIG_DVB_CINERGYT2=m
-# CONFIG_DVB_CINERGYT2_TUNING is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-CONFIG_DVB_B2C2_SKYSTAR=m
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA80XX=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_VES1X93=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_ATMEL_AT76C651=m
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terresterial DTV) frontends
-#
-CONFIG_DVB_NXT2002=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_VIDEOBUF=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_SOFT_CURSOR=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_CT65550 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-CONFIG_FB_MATROX=y
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-# CONFIG_FB_RADEON_OLD is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_BLUETOOTH_TTY is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=y
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_EGALAX is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-CONFIG_USB_PEGASUS=y
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET=y
-
-#
-# USB Host-to-Host Cables
-#
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_GENESYS=y
-CONFIG_USB_NET1080=y
-CONFIG_USB_PL2301=y
-CONFIG_USB_KC2190=y
-
-#
-# Intelligent USB Devices/Gadgets
-#
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_ZAURUS=y
-CONFIG_USB_CDCETHER=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_AX8817X=y
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB ATM/DSL drivers
-#
-# CONFIG_USB_ATM is not set
-# CONFIG_USB_SPEEDTOUCH is not set
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-CONFIG_MINIX_FS=m
-CONFIG_ROMFS_FS=m
-CONFIG_QUOTA=y
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=y
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_SYSFS=y
-CONFIG_DEVFS_FS=y
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=0
-# CONFIG_JFFS_PROC_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_VXFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-CONFIG_NCP_FS=m
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_CODA_FS=m
-# CONFIG_CODA_FS_OLD_API is not set
-CONFIG_AFS_FS=m
-CONFIG_RXRPC=m
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# IBM 40x options
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_SERIAL_TEXT_DEBUG is not set
-CONFIG_PPC_OCP=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_CAPABILITIES=m
-CONFIG_SECURITY_ROOTPLUG=m
-CONFIG_SECURITY_SECLVL=m
-# CONFIG_SECURITY_SELINUX is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
diff --git a/packages/linux/linux-dht-walnut-2.6.12/iw_we18-5.diff b/packages/linux/linux-dht-walnut-2.6.12/iw_we18-5.diff
deleted file mode 100644
index 85fcdd1224..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12/iw_we18-5.diff
+++ /dev/null
@@ -1,462 +0,0 @@
-diff -upr linux-2.6.11/include/linux/wireless.h linux-2.6.11-WE18/include/linux/wireless.h
---- linux-2.6.11/include/linux/wireless.h 2004-12-24 13:35:01.000000000 -0800
-+++ linux-2.6.11-WE18/include/linux/wireless.h 2005-03-12 09:53:02.000000000 -0800
-@@ -1,10 +1,10 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 17 21.6.04
-+ * Version : 18 12.3.05
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2004 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _LINUX_WIRELESS_H
-@@ -82,7 +82,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 17
-+#define WIRELESS_EXT 18
-
- /*
- * Changes :
-@@ -182,6 +182,21 @@
- * - Document (struct iw_quality *)->updated, add new flags (INVALID)
- * - Wireless Event capability in struct iw_range
- * - Add support for relative TxPower (yick !)
-+ *
-+ * V17 to V18 (From Jouni Malinen <jkmaline@cc.hut.fi>)
-+ * ----------
-+ * - Add support for WPA/WPA2
-+ * - Add extended encoding configuration (SIOCSIWENCODEEXT and
-+ * SIOCGIWENCODEEXT)
-+ * - Add SIOCSIWGENIE/SIOCGIWGENIE
-+ * - Add SIOCSIWMLME
-+ * - Add SIOCSIWPMKSA
-+ * - Add struct iw_range bit field for supported encoding capabilities
-+ * - Add optional scan request parameters for SIOCSIWSCAN
-+ * - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA
-+ * related parameters (extensible up to 4096 parameter values)
-+ * - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE,
-+ * IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -256,6 +271,30 @@
- #define SIOCSIWPOWER 0x8B2C /* set Power Management settings */
- #define SIOCGIWPOWER 0x8B2D /* get Power Management settings */
-
-+/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM).
-+ * This ioctl uses struct iw_point and data buffer that includes IE id and len
-+ * fields. More than one IE may be included in the request. Setting the generic
-+ * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers
-+ * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers
-+ * are required to report the used IE as a wireless event, e.g., when
-+ * associating with an AP. */
-+#define SIOCSIWGENIE 0x8B30 /* set generic IE */
-+#define SIOCGIWGENIE 0x8B31 /* get generic IE */
-+
-+/* WPA : IEEE 802.11 MLME requests */
-+#define SIOCSIWMLME 0x8B16 /* request MLME operation; uses
-+ * struct iw_mlme */
-+/* WPA : Authentication mode parameters */
-+#define SIOCSIWAUTH 0x8B32 /* set authentication mode params */
-+#define SIOCGIWAUTH 0x8B33 /* get authentication mode params */
-+
-+/* WPA : Extended version of encoding configuration */
-+#define SIOCSIWENCODEEXT 0x8B34 /* set encoding token & mode */
-+#define SIOCGIWENCODEEXT 0x8B35 /* get encoding token & mode */
-+
-+/* WPA2 : PMKSA cache management */
-+#define SIOCSIWPMKSA 0x8B36 /* PMKSA cache operation */
-+
- /* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
-
- /* These 32 ioctl are wireless device private, for 16 commands.
-@@ -297,6 +336,34 @@
- #define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
- #define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
- #define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
-+#define IWEVGENIE 0x8C05 /* Generic IE (WPA, RSN, WMM, ..)
-+ * (scan results); This includes id and
-+ * length fields. One IWEVGENIE may
-+ * contain more than one IE. Scan
-+ * results may contain one or more
-+ * IWEVGENIE events. */
-+#define IWEVMICHAELMICFAILURE 0x8C06 /* Michael MIC failure
-+ * (struct iw_michaelmicfailure)
-+ */
-+#define IWEVASSOCREQIE 0x8C07 /* IEs used in (Re)Association Request.
-+ * The data includes id and length
-+ * fields and may contain more than one
-+ * IE. This event is required in
-+ * Managed mode if the driver
-+ * generates its own WPA/RSN IE. This
-+ * should be sent just before
-+ * IWEVREGISTERED event for the
-+ * association. */
-+#define IWEVASSOCRESPIE 0x8C08 /* IEs used in (Re)Association
-+ * Response. The data includes id and
-+ * length fields and may contain more
-+ * than one IE. This may be sent
-+ * between IWEVASSOCREQIE and
-+ * IWEVREGISTERED events for the
-+ * association. */
-+#define IWEVPMKIDCAND 0x8C09 /* PMKID candidate for RSN
-+ * pre-authentication
-+ * (struct iw_pmkid_cand) */
-
- #define IWEVFIRST 0x8C00
-
-@@ -432,12 +499,94 @@
- #define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */
- #define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */
- #define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */
-+/* struct iw_scan_req scan_type */
-+#define IW_SCAN_TYPE_ACTIVE 0
-+#define IW_SCAN_TYPE_PASSIVE 1
- /* Maximum size of returned data */
- #define IW_SCAN_MAX_DATA 4096 /* In bytes */
-
- /* Max number of char in custom event - use multiple of them if needed */
- #define IW_CUSTOM_MAX 256 /* In bytes */
-
-+/* Generic information element */
-+#define IW_GENERIC_IE_MAX 1024
-+
-+/* MLME requests (SIOCSIWMLME / struct iw_mlme) */
-+#define IW_MLME_DEAUTH 0
-+#define IW_MLME_DISASSOC 1
-+
-+/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */
-+#define IW_AUTH_INDEX 0x0FFF
-+#define IW_AUTH_FLAGS 0xF000
-+/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095)
-+ * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the
-+ * parameter that is being set/get to; value will be read/written to
-+ * struct iw_param value field) */
-+#define IW_AUTH_WPA_VERSION 0
-+#define IW_AUTH_CIPHER_PAIRWISE 1
-+#define IW_AUTH_CIPHER_GROUP 2
-+#define IW_AUTH_KEY_MGMT 3
-+#define IW_AUTH_TKIP_COUNTERMEASURES 4
-+#define IW_AUTH_DROP_UNENCRYPTED 5
-+#define IW_AUTH_80211_AUTH_ALG 6
-+#define IW_AUTH_WPA_ENABLED 7
-+#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
-+#define IW_AUTH_ROAMING_CONTROL 9
-+#define IW_AUTH_PRIVACY_INVOKED 10
-+
-+/* IW_AUTH_WPA_VERSION values (bit field) */
-+#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
-+#define IW_AUTH_WPA_VERSION_WPA 0x00000002
-+#define IW_AUTH_WPA_VERSION_WPA2 0x00000004
-+
-+/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */
-+#define IW_AUTH_CIPHER_NONE 0x00000001
-+#define IW_AUTH_CIPHER_WEP40 0x00000002
-+#define IW_AUTH_CIPHER_TKIP 0x00000004
-+#define IW_AUTH_CIPHER_CCMP 0x00000008
-+#define IW_AUTH_CIPHER_WEP104 0x00000010
-+
-+/* IW_AUTH_KEY_MGMT values (bit field) */
-+#define IW_AUTH_KEY_MGMT_802_1X 1
-+#define IW_AUTH_KEY_MGMT_PSK 2
-+
-+/* IW_AUTH_80211_AUTH_ALG values (bit field) */
-+#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
-+#define IW_AUTH_ALG_SHARED_KEY 0x00000002
-+#define IW_AUTH_ALG_LEAP 0x00000004
-+
-+/* IW_AUTH_ROAMING_CONTROL values */
-+#define IW_AUTH_ROAMING_ENABLE 0 /* driver/firmware based roaming */
-+#define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming
-+ * control */
-+
-+/* SIOCSIWENCODEEXT definitions */
-+#define IW_ENCODE_SEQ_MAX_SIZE 8
-+/* struct iw_encode_ext ->alg */
-+#define IW_ENCODE_ALG_NONE 0
-+#define IW_ENCODE_ALG_WEP 1
-+#define IW_ENCODE_ALG_TKIP 2
-+#define IW_ENCODE_ALG_CCMP 3
-+/* struct iw_encode_ext ->ext_flags */
-+#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001
-+#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002
-+#define IW_ENCODE_EXT_GROUP_KEY 0x00000004
-+#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008
-+
-+/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */
-+#define IW_MICFAILURE_KEY_ID 0x00000003 /* Key ID 0..3 */
-+#define IW_MICFAILURE_GROUP 0x00000004
-+#define IW_MICFAILURE_PAIRWISE 0x00000008
-+#define IW_MICFAILURE_STAKEY 0x00000010
-+#define IW_MICFAILURE_COUNT 0x00000060 /* 1 or 2 (0 = count not supported)
-+ */
-+
-+/* Bit field values for enc_capa in struct iw_range */
-+#define IW_ENC_CAPA_WPA 0x00000001
-+#define IW_ENC_CAPA_WPA2 0x00000002
-+#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004
-+#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
-+
- /* Event capability macros - in (struct iw_range *)->event_capa
- * Because we have more than 32 possible events, we use an array of
- * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */
-@@ -546,6 +695,132 @@ struct iw_thrspy
- struct iw_quality high; /* High threshold */
- };
-
-+/*
-+ * Optional data for scan request
-+ *
-+ * Note: these optional parameters are controlling parameters for the
-+ * scanning behavior, these do not apply to getting scan results
-+ * (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and
-+ * provide a merged results with all BSSes even if the previous scan
-+ * request limited scanning to a subset, e.g., by specifying an SSID.
-+ * Especially, scan results are required to include an entry for the
-+ * current BSS if the driver is in Managed mode and associated with an AP.
-+ */
-+struct iw_scan_req
-+{
-+ __u8 scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */
-+ __u8 essid_len;
-+ __u8 num_channels; /* num entries in channel_list;
-+ * 0 = scan all allowed channels */
-+ __u8 flags; /* reserved as padding; use zero, this may
-+ * be used in the future for adding flags
-+ * to request different scan behavior */
-+ struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or
-+ * individual address of a specific BSS */
-+
-+ /*
-+ * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using
-+ * the current ESSID. This allows scan requests for specific ESSID
-+ * without having to change the current ESSID and potentially breaking
-+ * the current association.
-+ */
-+ __u8 essid[IW_ESSID_MAX_SIZE];
-+
-+ /*
-+ * Optional parameters for changing the default scanning behavior.
-+ * These are based on the MLME-SCAN.request from IEEE Std 802.11.
-+ * TU is 1.024 ms. If these are set to 0, driver is expected to use
-+ * reasonable default values. min_channel_time defines the time that
-+ * will be used to wait for the first reply on each channel. If no
-+ * replies are received, next channel will be scanned after this. If
-+ * replies are received, total time waited on the channel is defined by
-+ * max_channel_time.
-+ */
-+ __u32 min_channel_time; /* in TU */
-+ __u32 max_channel_time; /* in TU */
-+
-+ struct iw_freq channel_list[IW_MAX_FREQUENCIES];
-+};
-+
-+/* ------------------------- WPA SUPPORT ------------------------- */
-+
-+/*
-+ * Extended data structure for get/set encoding (this is used with
-+ * SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_*
-+ * flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and
-+ * only the data contents changes (key data -> this structure, including
-+ * key data).
-+ *
-+ * If the new key is the first group key, it will be set as the default
-+ * TX key. Otherwise, default TX key index is only changed if
-+ * IW_ENCODE_EXT_SET_TX_KEY flag is set.
-+ *
-+ * Key will be changed with SIOCSIWENCODEEXT in all cases except for
-+ * special "change TX key index" operation which is indicated by setting
-+ * key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY.
-+ *
-+ * tx_seq/rx_seq are only used when respective
-+ * IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal
-+ * TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start
-+ * TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally
-+ * used only by an Authenticator (AP or an IBSS station) to get the
-+ * current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and
-+ * RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for
-+ * debugging/testing.
-+ */
-+struct iw_encode_ext
-+{
-+ __u32 ext_flags; /* IW_ENCODE_EXT_* */
-+ __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast
-+ * (group) keys or unicast address for
-+ * individual keys */
-+ __u16 alg; /* IW_ENCODE_ALG_* */
-+ __u16 key_len;
-+ __u8 key[0];
-+};
-+
-+/* SIOCSIWMLME data */
-+struct iw_mlme
-+{
-+ __u16 cmd; /* IW_MLME_* */
-+ __u16 reason_code;
-+ struct sockaddr addr;
-+};
-+
-+/* SIOCSIWPMKSA data */
-+#define IW_PMKSA_ADD 1
-+#define IW_PMKSA_REMOVE 2
-+#define IW_PMKSA_FLUSH 3
-+
-+#define IW_PMKID_LEN 16
-+
-+struct iw_pmksa
-+{
-+ __u32 cmd; /* IW_PMKSA_* */
-+ struct sockaddr bssid;
-+ __u8 pmkid[IW_PMKID_LEN];
-+};
-+
-+/* IWEVMICHAELMICFAILURE data */
-+struct iw_michaelmicfailure
-+{
-+ __u32 flags;
-+ struct sockaddr src_addr;
-+ __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+};
-+
-+/* IWEVPMKIDCAND data */
-+#define IW_PMKID_CAND_PREAUTH 0x00000001 /* RNS pre-authentication enabled */
-+struct iw_pmkid_cand
-+{
-+ __u32 flags; /* IW_PMKID_CAND_* */
-+ __u32 index; /* the smaller the index, the higher the
-+ * priority */
-+ struct sockaddr bssid;
-+};
-+
- /* ------------------------ WIRELESS STATS ------------------------ */
- /*
- * Wireless statistics (used for /proc/net/wireless)
-@@ -725,6 +1000,8 @@ struct iw_range
- struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */
- /* Note : this frequency list doesn't need to fit channel numbers,
- * because each entry contain its channel index */
-+
-+ __u32 enc_capa; /* IW_ENC_CAPA_* bit field */
- };
-
- /*
-diff -upr linux-2.6.11/net/core/wireless.c linux-2.6.11-WE18/net/core/wireless.c
---- linux-2.6.11/net/core/wireless.c 2005-03-04 15:55:29.000000000 -0800
-+++ linux-2.6.11-WE18/net/core/wireless.c 2005-03-12 09:11:24.000000000 -0800
-@@ -2,7 +2,7 @@
- * This file implement the Wireless Extensions APIs.
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2004 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- *
- * (As all part of the Linux kernel, this file is GPL)
- */
-@@ -187,6 +187,12 @@ static const struct iw_ioctl_description
- .header_type = IW_HEADER_TYPE_ADDR,
- .flags = IW_DESCR_FLAG_DUMP,
- },
-+ [SIOCSIWMLME - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_mlme),
-+ .max_tokens = sizeof(struct iw_mlme),
-+ },
- [SIOCGIWAPLIST - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_POINT,
- .token_size = sizeof(struct sockaddr) +
-@@ -195,7 +201,10 @@ static const struct iw_ioctl_description
- .flags = IW_DESCR_FLAG_NOMAX,
- },
- [SIOCSIWSCAN - SIOCIWFIRST] = {
-- .header_type = IW_HEADER_TYPE_PARAM,
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = 0,
-+ .max_tokens = sizeof(struct iw_scan_req),
- },
- [SIOCGIWSCAN - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_POINT,
-@@ -273,6 +282,42 @@ static const struct iw_ioctl_description
- [SIOCGIWPOWER - SIOCIWFIRST] = {
- .header_type = IW_HEADER_TYPE_PARAM,
- },
-+ [SIOCSIWGENIE - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [SIOCGIWGENIE - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [SIOCSIWAUTH - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_PARAM,
-+ },
-+ [SIOCGIWAUTH - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_PARAM,
-+ },
-+ [SIOCSIWENCODEEXT - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_encode_ext),
-+ .max_tokens = sizeof(struct iw_encode_ext) +
-+ IW_ENCODING_TOKEN_MAX,
-+ },
-+ [SIOCGIWENCODEEXT - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_encode_ext),
-+ .max_tokens = sizeof(struct iw_encode_ext) +
-+ IW_ENCODING_TOKEN_MAX,
-+ },
-+ [SIOCSIWPMKSA - SIOCIWFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .min_tokens = sizeof(struct iw_pmksa),
-+ .max_tokens = sizeof(struct iw_pmksa),
-+ },
- };
- static const int standard_ioctl_num = (sizeof(standard_ioctl) /
- sizeof(struct iw_ioctl_description));
-@@ -299,6 +344,31 @@ static const struct iw_ioctl_description
- [IWEVEXPIRED - IWEVFIRST] = {
- .header_type = IW_HEADER_TYPE_ADDR,
- },
-+ [IWEVGENIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVMICHAELMICFAILURE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = sizeof(struct iw_michaelmicfailure),
-+ },
-+ [IWEVASSOCREQIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVASSOCRESPIE - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = IW_GENERIC_IE_MAX,
-+ },
-+ [IWEVPMKIDCAND - IWEVFIRST] = {
-+ .header_type = IW_HEADER_TYPE_POINT,
-+ .token_size = 1,
-+ .max_tokens = sizeof(struct iw_pmkid_cand),
-+ },
- };
- static const int standard_event_num = (sizeof(standard_event) /
- sizeof(struct iw_ioctl_description));
diff --git a/packages/linux/linux-dht-walnut-2.6.12/linux-2.6.12-mppe-mppc-1.3.patch b/packages/linux/linux-dht-walnut-2.6.12/linux-2.6.12-mppe-mppc-1.3.patch
deleted file mode 100644
index aa430252c7..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12/linux-2.6.12-mppe-mppc-1.3.patch
+++ /dev/null
@@ -1,1559 +0,0 @@
-diff -ruN linux-2.6.12.orig/drivers/net/Kconfig linux-2.6.12/drivers/net/Kconfig
---- linux-2.6.12.orig/drivers/net/Kconfig 2005-06-28 19:57:16.000000000 +0200
-+++ linux-2.6.12/drivers/net/Kconfig 2005-06-28 20:07:01.000000000 +0200
-@@ -2417,6 +2417,32 @@
- module; it is called bsd_comp and will show up in the directory
- modules once you have said "make modules". If unsure, say N.
-
-+config PPP_MPPE_MPPC
-+ tristate "Microsoft PPP compression/encryption (MPPC/MPPE)"
-+ depends on PPP
-+ select CRYPTO_SHA1
-+ select CRYPTO_ARC4
-+ ---help---
-+ Support for the Microsoft Point-To-Point Compression (RFC2118) and
-+ Microsoft Point-To-Point Encryption (RFC3078). These protocols are
-+ supported by Microsoft Windows and wide range of "hardware" access
-+ servers. MPPE is common protocol in Virtual Private Networks. According
-+ to RFC3078, MPPE supports 40, 56 and 128-bit key lengths. Depending on
-+ PPP daemon configuration on both ends of the link, following scenarios
-+ are possible:
-+ - only compression (MPPC) is used,
-+ - only encryption (MPPE) is used,
-+ - compression and encryption (MPPC+MPPE) are used.
-+
-+ Please note that Hi/Fn (http://www.hifn.com) holds patent on MPPC so
-+ you should check if this patent is valid in your country in order to
-+ avoid legal problems.
-+
-+ For more information please visit http://free.polbox.pl/h/hs001
-+
-+ To compile this driver as a module, choose M here. The module will
-+ be called ppp_mppe_mppc.ko.
-+
- config PPPOE
- tristate "PPP over Ethernet (EXPERIMENTAL)"
- depends on EXPERIMENTAL && PPP
-diff -ruN linux-2.6.12.orig/drivers/net/Makefile linux-2.6.12/drivers/net/Makefile
---- linux-2.6.12.orig/drivers/net/Makefile 2005-06-28 19:57:16.000000000 +0200
-+++ linux-2.6.12/drivers/net/Makefile 2005-06-28 20:07:01.000000000 +0200
-@@ -105,6 +105,7 @@
- obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o
- obj-$(CONFIG_PPP_DEFLATE) += ppp_deflate.o
- obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o
-+obj-$(CONFIG_PPP_MPPE_MPPC) += ppp_mppe_mppc.o
- obj-$(CONFIG_PPPOE) += pppox.o pppoe.o
-
- obj-$(CONFIG_SLIP) += slip.o
-diff -ruN linux-2.6.12.orig/drivers/net/ppp_generic.c linux-2.6.12/drivers/net/ppp_generic.c
---- linux-2.6.12.orig/drivers/net/ppp_generic.c 2005-06-28 19:57:20.000000000 +0200
-+++ linux-2.6.12/drivers/net/ppp_generic.c 2005-06-28 20:07:01.000000000 +0200
-@@ -19,7 +19,7 @@
- * PPP driver, written by Michael Callahan and Al Longyear, and
- * subsequently hacked by Paul Mackerras.
- *
-- * ==FILEVERSION 20041108==
-+ * ==FILEVERSION 20050110==
- */
-
- #include <linux/config.h>
-@@ -105,6 +105,7 @@
- spinlock_t rlock; /* lock for receive side 58 */
- spinlock_t wlock; /* lock for transmit side 5c */
- int mru; /* max receive unit 60 */
-+ int mru_alloc; /* MAX(1500,MRU) for dev_alloc_skb() */
- unsigned int flags; /* control bits 64 */
- unsigned int xstate; /* transmit state bits 68 */
- unsigned int rstate; /* receive state bits 6c */
-@@ -632,7 +633,9 @@
- case PPPIOCSMRU:
- if (get_user(val, p))
- break;
-- ppp->mru = val;
-+ ppp->mru_alloc = ppp->mru = val;
-+ if (ppp->mru_alloc < PPP_MRU)
-+ ppp->mru_alloc = PPP_MRU; /* increase for broken peers */
- err = 0;
- break;
-
-@@ -1107,14 +1110,37 @@
- case PPP_CCP:
- /* peek at outbound CCP frames */
- ppp_ccp_peek(ppp, skb, 0);
-+ /*
-+ * When LZS or MPPE/MPPC has been negotiated we don't send
-+ * CCP_RESETACK after receiving CCP_RESETREQ; in fact pppd
-+ * sends such a packet but we silently discard it here
-+ */
-+ if (CCP_CODE(skb->data+2) == CCP_RESETACK
-+ && (ppp->xcomp->compress_proto == CI_MPPE
-+ || ppp->xcomp->compress_proto == CI_LZS)) {
-+ --ppp->stats.tx_packets;
-+ ppp->stats.tx_bytes -= skb->len - 2;
-+ kfree_skb(skb);
-+ return;
-+ }
- break;
- }
-
- /* try to do packet compression */
- if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
- && proto != PPP_LCP && proto != PPP_CCP) {
-- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
-- GFP_ATOMIC);
-+ int comp_ovhd = 0;
-+ /*
-+ * because of possible data expansion when MPPC or LZS
-+ * is used, allocate compressor's buffer 12.5% bigger
-+ * than MTU
-+ */
-+ if (ppp->xcomp->compress_proto == CI_MPPE)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + MPPE_OVHD;
-+ else if (ppp->xcomp->compress_proto == CI_LZS)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + LZS_OVHD;
-+ new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len
-+ + comp_ovhd, GFP_ATOMIC);
- if (new_skb == 0) {
- printk(KERN_ERR "PPP: no memory (comp pkt)\n");
- goto drop;
-@@ -1132,9 +1158,21 @@
- skb = new_skb;
- skb_put(skb, len);
- skb_pull(skb, 2); /* pull off A/C bytes */
-- } else {
-+ } else if (len == 0) {
- /* didn't compress, or CCP not up yet */
- kfree_skb(new_skb);
-+ } else {
-+ /*
-+ * (len < 0)
-+ * MPPE requires that we do not send unencrypted
-+ * frames. The compressor will return -1 if we
-+ * should drop the frame. We cannot simply test
-+ * the compress_proto because MPPE and MPPC share
-+ * the same number.
-+ */
-+ printk(KERN_ERR "ppp: compressor dropped pkt\n");
-+ kfree_skb(new_skb);
-+ goto drop;
- }
- }
-
-@@ -1640,14 +1678,15 @@
- goto err;
-
- if (proto == PPP_COMP) {
-- ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
-+ ns = dev_alloc_skb(ppp->mru_alloc + PPP_HDRLEN);
- if (ns == 0) {
- printk(KERN_ERR "ppp_decompress_frame: no memory\n");
- goto err;
- }
- /* the decompressor still expects the A/C bytes in the hdr */
- len = ppp->rcomp->decompress(ppp->rc_state, skb->data - 2,
-- skb->len + 2, ns->data, ppp->mru + PPP_HDRLEN);
-+ skb->len + 2, ns->data,
-+ ppp->mru_alloc + PPP_HDRLEN);
- if (len < 0) {
- /* Pass the compressed frame to pppd as an
- error indication. */
-@@ -1673,7 +1712,14 @@
- return skb;
-
- err:
-- ppp->rstate |= SC_DC_ERROR;
-+ if (ppp->rcomp->compress_proto != CI_MPPE
-+ && ppp->rcomp->compress_proto != CI_LZS) {
-+ /*
-+ * If decompression protocol isn't MPPE/MPPC or LZS, we set
-+ * SC_DC_ERROR flag and wait for CCP_RESETACK
-+ */
-+ ppp->rstate |= SC_DC_ERROR;
-+ }
- ppp_receive_error(ppp);
- return skb;
- }
-@@ -2349,6 +2395,7 @@
- memset(ppp, 0, sizeof(struct ppp));
-
- ppp->mru = PPP_MRU;
-+ ppp->mru_alloc = PPP_MRU;
- init_ppp_file(&ppp->file, INTERFACE);
- ppp->file.hdrlen = PPP_HDRLEN - 2; /* don't count proto bytes */
- for (i = 0; i < NUM_NP; ++i)
-diff -ruN linux-2.6.12.orig/drivers/net/ppp_mppe_mppc.c linux-2.6.12/drivers/net/ppp_mppe_mppc.c
---- linux-2.6.12.orig/drivers/net/ppp_mppe_mppc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12/drivers/net/ppp_mppe_mppc.c 2005-06-28 20:07:01.000000000 +0200
-@@ -0,0 +1,1299 @@
-+/*
-+ * ppp_mppe_mppc.c - MPPC/MPPE "compressor/decompressor" module.
-+ *
-+ * Copyright (c) 1994 rpd Magosnyi <mag@bunuel.tii.matav.hu>
-+ * Copyright (c) 1999 Tim Hockin, Cobalt Networks Inc. <thockin@cobaltnet.com>
-+ * Copyright (c) 2002-2004 Jan Dubiec <jdx@slackware.pl>
-+ *
-+ * Permission to use, copy, modify, and distribute this software and its
-+ * documentation is hereby granted, provided that the above copyright
-+ * notice appears in all copies. This software is provided without any
-+ * warranty, express or implied.
-+ *
-+ * The code is based on MPPE kernel module written by rpd Magosnyi and
-+ * Tim Hockin which can be found on http://planetmirror.com/pub/mppe/.
-+ * I have added MPPC and 56 bit session keys support in MPPE.
-+ *
-+ * WARNING! Although this is open source code, its usage in some countries
-+ * (in particular in the USA) may violate Stac Inc. patent for MPPC.
-+ *
-+ * ==FILEVERSION 20041123==
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include <asm/scatterlist.h>
-+#include <linux/vmalloc.h>
-+#include <linux/crypto.h>
-+
-+#include <linux/ppp_defs.h>
-+#include <linux/ppp-comp.h>
-+
-+/*
-+ * State for a mppc/mppe "(de)compressor".
-+ */
-+struct ppp_mppe_state {
-+ struct crypto_tfm *arc4_tfm;
-+ struct crypto_tfm *sha1_tfm;
-+ u8 *sha1_digest;
-+ u8 master_key[MPPE_MAX_KEY_LEN];
-+ u8 session_key[MPPE_MAX_KEY_LEN];
-+ u8 mppc; /* do we use compression (MPPC)? */
-+ u8 mppe; /* do we use encryption (MPPE)? */
-+ u8 keylen; /* key length in bytes */
-+ u8 bitkeylen; /* key length in bits */
-+ u16 ccount; /* coherency counter */
-+ u16 bits; /* MPPC/MPPE control bits */
-+ u8 stateless; /* do we use stateless mode? */
-+ u8 nextflushed; /* set A bit in the next outgoing packet;
-+ used only by compressor*/
-+ u8 flushexpected; /* drop packets until A bit is received;
-+ used only by decompressor*/
-+ u8 *hist; /* MPPC history */
-+ u16 *hash; /* Hash table; used only by compressor */
-+ u16 histptr; /* history "cursor" */
-+ int unit;
-+ int debug;
-+ int mru;
-+ struct compstat stats;
-+};
-+
-+#define MPPE_HIST_LEN 8192 /* MPPC history size */
-+#define MPPE_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define MPPE_BIT_FLUSHED 0x80 /* bit A */
-+#define MPPE_BIT_RESET 0x40 /* bit B */
-+#define MPPE_BIT_COMP 0x20 /* bit C */
-+#define MPPE_BIT_ENCRYPTED 0x10 /* bit D */
-+
-+#define MPPE_SALT0 0xD1 /* values used in MPPE key derivation */
-+#define MPPE_SALT1 0x26 /* according to RFC3079 */
-+#define MPPE_SALT2 0x9E
-+
-+#define MPPE_CCOUNT(x) ((((x)[4] & 0x0f) << 8) + (x)[5])
-+#define MPPE_BITS(x) ((x)[4] & 0xf0)
-+#define MPPE_CTRLHI(x) ((((x)->ccount & 0xf00)>>8)|((x)->bits))
-+#define MPPE_CTRLLO(x) ((x)->ccount & 0xff)
-+
-+/*
-+ * Kernel Crypto API needs its arguments to be in kmalloc'd memory, not in the
-+ * module static data area. That means sha_pad needs to be kmalloc'd. It is done
-+ * in mppe_module_init(). This has been pointed out on 30th July 2004 by Oleg
-+ * Makarenko on pptpclient-devel mailing list.
-+ */
-+#define SHA1_PAD_SIZE 40
-+struct sha_pad {
-+ unsigned char sha_pad1[SHA1_PAD_SIZE];
-+ unsigned char sha_pad2[SHA1_PAD_SIZE];
-+};
-+static struct sha_pad *sha_pad;
-+
-+static inline void
-+setup_sg(struct scatterlist *sg, const void *address, unsigned int length)
-+{
-+ sg[0].page = virt_to_page(address);
-+ sg[0].offset = offset_in_page(address);
-+ sg[0].length = length;
-+}
-+
-+static inline void
-+arc4_setkey(struct ppp_mppe_state *state, const unsigned char *key,
-+ const unsigned int keylen)
-+{
-+ crypto_cipher_setkey(state->arc4_tfm, key, keylen);
-+}
-+
-+static inline void
-+arc4_encrypt(struct ppp_mppe_state *state, const unsigned char *in,
-+ const unsigned int len, unsigned char *out)
-+{
-+ struct scatterlist sgin[4], sgout[4];
-+
-+ setup_sg(sgin, in, len);
-+ setup_sg(sgout, out, len);
-+ crypto_cipher_encrypt(state->arc4_tfm, sgout, sgin, len);
-+}
-+
-+#define arc4_decrypt arc4_encrypt
-+
-+/*
-+ * Key Derivation, from RFC 3078, RFC 3079.
-+ * Equivalent to Get_Key() for MS-CHAP as described in RFC 3079.
-+ */
-+static void
-+get_new_key_from_sha(struct ppp_mppe_state *state, unsigned char *interim_key)
-+{
-+ struct scatterlist sg[4];
-+
-+ setup_sg(&sg[0], state->master_key, state->keylen);
-+ setup_sg(&sg[1], sha_pad->sha_pad1, sizeof(sha_pad->sha_pad1));
-+ setup_sg(&sg[2], state->session_key, state->keylen);
-+ setup_sg(&sg[3], sha_pad->sha_pad2, sizeof(sha_pad->sha_pad2));
-+
-+ crypto_digest_digest (state->sha1_tfm, sg, 4, state->sha1_digest);
-+
-+ memcpy(interim_key, state->sha1_digest, state->keylen);
-+}
-+
-+static void
-+mppe_change_key(struct ppp_mppe_state *state, int initialize)
-+{
-+ unsigned char interim_key[MPPE_MAX_KEY_LEN];
-+
-+ get_new_key_from_sha(state, interim_key);
-+ if (initialize) {
-+ memcpy(state->session_key, interim_key, state->keylen);
-+ } else {
-+ arc4_setkey(state, interim_key, state->keylen);
-+ arc4_encrypt(state, interim_key, state->keylen, state->session_key);
-+ }
-+ if (state->keylen == 8) {
-+ if (state->bitkeylen == 40) {
-+ state->session_key[0] = MPPE_SALT0;
-+ state->session_key[1] = MPPE_SALT1;
-+ state->session_key[2] = MPPE_SALT2;
-+ } else {
-+ state->session_key[0] = MPPE_SALT0;
-+ }
-+ }
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+/* increase 12-bit coherency counter */
-+static inline void
-+mppe_increase_ccount(struct ppp_mppe_state *state)
-+{
-+ state->ccount = (state->ccount + 1) & MPPE_MAX_CCOUNT;
-+ if (state->mppe) {
-+ if (state->stateless) {
-+ mppe_change_key(state, 0);
-+ state->nextflushed = 1;
-+ } else {
-+ if ((state->ccount & 0xff) == 0xff) {
-+ mppe_change_key(state, 0);
-+ }
-+ }
-+ }
-+}
-+
-+/* allocate space for a MPPE/MPPC (de)compressor. */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static void *
-+mppe_alloc(unsigned char *options, int opt_len, int comp)
-+{
-+ struct ppp_mppe_state *state;
-+ unsigned int digestsize;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_alloc" : "mppe_decomp_alloc";
-+
-+ /*
-+ * Hack warning - additionally to the standard MPPC/MPPE configuration
-+ * options, pppd passes to the (de)copressor 8 or 16 byte session key.
-+ * Therefore options[1] contains MPPC/MPPE configuration option length
-+ * (CILEN_MPPE = 6), but the real options length, depending on the key
-+ * length, is 6+8 or 6+16.
-+ */
-+ if (opt_len < CILEN_MPPE) {
-+ printk(KERN_WARNING "%s: wrong options length: %u\n", fname, opt_len);
-+ return NULL;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname, options[0],
-+ options[1], options[2], options[3], options[4], options[5]);
-+ return NULL;
-+ }
-+
-+ state = (struct ppp_mppe_state *)kmalloc(sizeof(*state), GFP_KERNEL);
-+ if (state == NULL) {
-+ printk(KERN_ERR "%s: cannot allocate space for %scompressor\n", fname,
-+ comp ? "" : "de");
-+ return NULL;
-+ }
-+ memset(state, 0, sizeof(struct ppp_mppe_state));
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+
-+ if (state->mppc) {
-+ /* allocate MPPC history */
-+ state->hist = (u8*)vmalloc(2*MPPE_HIST_LEN*sizeof(u8));
-+ if (state->hist == NULL) {
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+
-+ /* allocate hashtable for MPPC compressor */
-+ if (comp) {
-+ state->hash = (u16*)vmalloc(MPPE_HIST_LEN*sizeof(u16));
-+ if (state->hash == NULL) {
-+ vfree(state->hist);
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+ }
-+ }
-+
-+ if (state->mppe) { /* specific for MPPE */
-+ /* Load ARC4 algorithm */
-+ state->arc4_tfm = crypto_alloc_tfm("arc4", 0);
-+ if (state->arc4_tfm == NULL) {
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load ARC4 module\n", fname);
-+ return NULL;
-+ }
-+
-+ /* Load SHA1 algorithm */
-+ state->sha1_tfm = crypto_alloc_tfm("sha1", 0);
-+ if (state->sha1_tfm == NULL) {
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load SHA1 module\n", fname);
-+ return NULL;
-+ }
-+
-+ digestsize = crypto_tfm_alg_digestsize(state->sha1_tfm);
-+ if (digestsize < MPPE_MAX_KEY_LEN) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: CryptoAPI SHA1 digest size too small\n", fname);
-+ }
-+
-+ state->sha1_digest = kmalloc(digestsize, GFP_KERNEL);
-+ if (!state->sha1_digest) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for SHA1 digest\n", fname);
-+ }
-+
-+ memcpy(state->master_key, options+CILEN_MPPE, MPPE_MAX_KEY_LEN);
-+ memcpy(state->session_key, state->master_key, MPPE_MAX_KEY_LEN);
-+ /* initial key generation is done in mppe_init() */
-+ }
-+
-+ return (void *) state;
-+}
-+
-+static void *
-+mppe_comp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 1);
-+}
-+
-+static void *
-+mppe_decomp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 0);
-+}
-+
-+/* cleanup the (de)compressor */
-+static void
-+mppe_comp_free(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+
-+ if (state != NULL) {
-+ if (state->mppe) {
-+ if (state->sha1_digest != NULL)
-+ kfree(state->sha1_digest);
-+ if (state->sha1_tfm != NULL)
-+ crypto_free_tfm(state->sha1_tfm);
-+ if (state->arc4_tfm != NULL)
-+ crypto_free_tfm(state->arc4_tfm);
-+ }
-+ if (state->hist != NULL)
-+ vfree(state->hist);
-+ if (state->hash != NULL)
-+ vfree(state->hash);
-+ kfree(state);
-+ }
-+}
-+
-+/* init MPPC/MPPE (de)compresor */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static int
-+mppe_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug, int comp)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_init" : "mppe_decomp_init";
-+
-+ if (opt_len < CILEN_MPPE) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: wrong options length: %u\n",
-+ fname, opt_len);
-+ return 0;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname,
-+ options[0], options[1], options[2], options[3], options[4],
-+ options[5]);
-+ return 0;
-+ }
-+
-+ if ((options[5] & ~MPPE_MPPC) != MPPE_128BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_56BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_40BIT &&
-+ (options[5] & MPPE_MPPC) != MPPE_MPPC) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: don't know what to do: o[5]=%02x\n",
-+ fname, options[5]);
-+ return 0;
-+ }
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+ state->stateless = options[2] & MPPE_STATELESS; /* Do we use stateless mode? */
-+
-+ switch (state->mppe) {
-+ case MPPE_40BIT: /* 40 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 40;
-+ break;
-+ case MPPE_56BIT: /* 56 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 56;
-+ break;
-+ case MPPE_128BIT: /* 128 bit key */
-+ state->keylen = 16;
-+ state->bitkeylen = 128;
-+ break;
-+ default:
-+ state->keylen = 0;
-+ state->bitkeylen = 0;
-+ }
-+
-+ state->ccount = MPPE_MAX_CCOUNT;
-+ state->bits = 0;
-+ state->unit = unit;
-+ state->debug = debug;
-+ state->histptr = MPPE_HIST_LEN;
-+ if (state->mppc) { /* reset history if MPPC was negotiated */
-+ memset(state->hist, 0, 2*MPPE_HIST_LEN*sizeof(u8));
-+ }
-+
-+ if (state->mppe) { /* generate initial session keys */
-+ mppe_change_key(state, 1);
-+ }
-+
-+ if (comp) { /* specific for compressor */
-+ state->nextflushed = 1;
-+ } else { /* specific for decompressor */
-+ state->mru = mru;
-+ state->flushexpected = 1;
-+ }
-+
-+ return 1;
-+}
-+
-+static int
-+mppe_comp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, 0, debug, 1);
-+}
-+
-+
-+static int
-+mppe_decomp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, mru, debug, 0);
-+}
-+
-+static void
-+mppe_comp_reset(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: resetting MPPC/MPPE compressor\n",
-+ __FUNCTION__, state->unit);
-+
-+ state->nextflushed = 1;
-+ if (state->mppe)
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+static void
-+mppe_decomp_reset(void *arg)
-+{
-+ /* When MPPC/MPPE is in use, we shouldn't receive any CCP Reset-Ack.
-+ But when we receive such a packet, we just ignore it. */
-+ return;
-+}
-+
-+static void
-+mppe_stats(void *arg, struct compstat *stats)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ *stats = state->stats;
-+}
-+
-+/***************************/
-+/**** Compression stuff ****/
-+/***************************/
-+/* inserts 1 to 8 bits into the output buffer */
-+static inline void putbits8(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ val <<= *l;
-+ *buf = *buf | (val & 0xff);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 9 to 16 bits into the output buffer */
-+static inline void putbits16(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 8) {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 17 to 24 bits into the output buffer */
-+static inline void putbits24(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 16) {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++; (*i)++;
-+ *l = 24 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 24) & 0xff);
-+ *(++buf) = (val >> 16) & 0xff;
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+static int
-+mppc_compress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, idx, i, l;
-+ u8 *hist, *sbuf, *p, *q, *r, *s;
-+
-+ /*
-+ At this point, to avoid possible buffer overflow caused by packet
-+ expansion during/after compression, we should make sure that
-+ osize >= (((isize*9)/8)+1)+2, but we don't do that because in
-+ ppp_generic.c we simply allocate bigger obuf.
-+
-+ Maximum MPPC packet expansion is 12.5%. This is the worst case when
-+ all octets in the input buffer are >= 0x80 and we cannot find any
-+ repeated tokens. Additionally we have to reserve 2 bytes for MPPE/MPPC
-+ status bits and coherency counter.
-+ */
-+
-+ hist = state->hist + MPPE_HIST_LEN;
-+ /* check if there is enough room at the end of the history */
-+ if (state->histptr + isize >= 2*MPPE_HIST_LEN) {
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memcpy(state->hist, hist, MPPE_HIST_LEN);
-+ }
-+ /* add packet to the history; isize must be <= MPPE_HIST_LEN */
-+ sbuf = state->hist + state->histptr;
-+ memcpy(sbuf, ibuf, isize);
-+ state->histptr += isize;
-+
-+ /* compress data */
-+ r = sbuf + isize;
-+ *obuf = olen = i = 0;
-+ l = 8;
-+ while (i < isize - 2) {
-+ s = q = sbuf + i;
-+ idx = ((40543*((((s[0]<<4)^s[1])<<4)^s[2]))>>4) & 0x1fff;
-+ p = hist + state->hash[idx];
-+ state->hash[idx] = (u16) (s - hist);
-+ off = s - p;
-+ if (off > MPPE_HIST_LEN - 1 || off < 1 || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++) {
-+ /* no match found; encode literal byte */
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i]&0x7f)), 9, &olen, &l);
-+ }
-+ ++i;
-+ continue;
-+ }
-+ if (r - q >= 64) {
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++;
-+ if (s - q == 64) {
-+ p--; s--;
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ } else {
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ len = s - q - 1;
-+ i += len;
-+
-+ /* at least 3 character match found; code data */
-+ /* encode offset */
-+ if (off < 64) { /* 10-bit offset; 0 <= offset < 64 */
-+ putbits16(obuf, 0x3c0|off, 10, &olen, &l);
-+ } else if (off < 320) { /* 12-bit offset; 64 <= offset < 320 */
-+ putbits16(obuf, 0xe00|(off-64), 12, &olen, &l);
-+ } else if (off < 8192) { /* 16-bit offset; 320 <= offset < 8192 */
-+ putbits16(obuf, 0xc000|(off-320), 16, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and we send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return 0;
-+ }
-+ /* encode length of match */
-+ if (len < 4) { /* length = 3 */
-+ putbits8(obuf, 0, 1, &olen, &l);
-+ } else if (len < 8) { /* 4 <= length < 8 */
-+ putbits8(obuf, 0x08|(len&0x03), 4, &olen, &l);
-+ } else if (len < 16) { /* 8 <= length < 16 */
-+ putbits8(obuf, 0x30|(len&0x07), 6, &olen, &l);
-+ } else if (len < 32) { /* 16 <= length < 32 */
-+ putbits8(obuf, 0xe0|(len&0x0f), 8, &olen, &l);
-+ } else if (len < 64) { /* 32 <= length < 64 */
-+ putbits16(obuf, 0x3c0|(len&0x1f), 10, &olen, &l);
-+ } else if (len < 128) { /* 64 <= length < 128 */
-+ putbits16(obuf, 0xf80|(len&0x3f), 12, &olen, &l);
-+ } else if (len < 256) { /* 128 <= length < 256 */
-+ putbits16(obuf, 0x3f00|(len&0x7f), 14, &olen, &l);
-+ } else if (len < 512) { /* 256 <= length < 512 */
-+ putbits16(obuf, 0xfe00|(len&0xff), 16, &olen, &l);
-+ } else if (len < 1024) { /* 512 <= length < 1024 */
-+ putbits24(obuf, 0x3fc00|(len&0x1ff), 18, &olen, &l);
-+ } else if (len < 2048) { /* 1024 <= length < 2048 */
-+ putbits24(obuf, 0xff800|(len&0x3ff), 20, &olen, &l);
-+ } else if (len < 4096) { /* 2048 <= length < 4096 */
-+ putbits24(obuf, 0x3ff000|(len&0x7ff), 22, &olen, &l);
-+ } else if (len < 8192) { /* 4096 <= length < 8192 */
-+ putbits24(obuf, 0xffe000|(len&0xfff), 24, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length of match value: %d\n",
-+ __FUNCTION__, state->unit, len);
-+ return 0;
-+ }
-+ }
-+
-+ /* Add remaining octets to the output */
-+ while(isize - i > 0) {
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i++], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i++]&0x7f)), 9, &olen, &l);
-+ }
-+ }
-+ /* Reset unused bits of the last output octet */
-+ if ((l != 0) && (l != 8)) {
-+ putbits8(obuf, 0, l, &olen, &l);
-+ }
-+
-+ return (int) olen;
-+}
-+
-+int
-+mppe_compress(void *arg, unsigned char *ibuf, unsigned char *obuf,
-+ int isize, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ int proto, olen, complen, off;
-+ unsigned char *wptr;
-+
-+ /* Check that the protocol is in the range we handle. */
-+ proto = PPP_PROTOCOL(ibuf);
-+ if (proto < 0x0021 || proto > 0x00fa)
-+ return 0;
-+
-+ wptr = obuf;
-+ /* Copy over the PPP header */
-+ wptr[0] = PPP_ADDRESS(ibuf);
-+ wptr[1] = PPP_CONTROL(ibuf);
-+ wptr[2] = PPP_COMP >> 8;
-+ wptr[3] = PPP_COMP;
-+ wptr += PPP_HDRLEN + (MPPE_OVHD / 2); /* Leave two octets for MPPE/MPPC bits */
-+
-+ /*
-+ * In ver. 0.99 protocol field was compressed. Deflate and BSD compress
-+ * do PFC before actual compression, RCF2118 and RFC3078 are not precise
-+ * on this topic so I decided to do PFC. Unfortunately this change caused
-+ * incompatibility with older/other MPPE/MPPC modules. I have received
-+ * a lot of complaints from unexperienced users so I have decided to revert
-+ * to previous state, i.e. the protocol field is sent uncompressed now.
-+ * Although this may be changed in the future.
-+ *
-+ * Receiving side (mppe_decompress()) still accepts packets with compressed
-+ * and uncompressed protocol field so you shouldn't get "Unsupported protocol
-+ * 0x2145 received" messages anymore.
-+ */
-+ //off = (proto > 0xff) ? 2 : 3; /* PFC - skip first protocol byte if 0 */
-+ off = 2;
-+
-+ ibuf += off;
-+
-+ mppe_increase_ccount(state);
-+
-+ if (state->nextflushed) {
-+ state->bits |= MPPE_BIT_FLUSHED;
-+ state->nextflushed = 0;
-+ if (state->mppe && !state->stateless) {
-+ /*
-+ * If this is the flag packet, the key has been already changed in
-+ * mppe_increase_ccount() so we dont't do it once again.
-+ */
-+ if ((state->ccount & 0xff) != 0xff) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+ if (state->mppc) { /* reset history */
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ }
-+ }
-+
-+ if (state->mppc && !state->mppe) { /* Do only compression */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be better to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ memcpy(wptr, ibuf, isize - off);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ } else { /* Do encryption with or without compression */
-+ state->bits |= MPPE_BIT_ENCRYPTED;
-+ if (!state->mppc && state->mppe) { /* Do only encryption */
-+ /* read from ibuf, write to wptr, adjust for PPP_HDRLEN */
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else { /* Do compression and then encryption - RFC3078 */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be good to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ /* Hack warning !!! RC4 implementation which we use does
-+ encryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice.
-+ I used to use ibuf as temporary buffer here, but it led
-+ packet sniffers into error. Thanks to Wilfried Weissmann
-+ for pointing that. */
-+ arc4_encrypt(state, wptr, complen, wptr);
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ }
-+ }
-+
-+ /* write status bits and coherency counter into the output buffer */
-+ wptr = obuf + PPP_HDRLEN;
-+ wptr[0] = MPPE_CTRLHI(state);
-+ wptr[1] = MPPE_CTRLLO(state);
-+
-+ state->bits = 0;
-+
-+ (state->stats).unc_bytes += isize;
-+ (state->stats).unc_packets++;
-+
-+ return olen;
-+}
-+
-+/***************************/
-+/*** Decompression stuff ***/
-+/***************************/
-+static inline u32 getbits(const u8 *buf, const u32 n, u32 *i, u32 *l)
-+{
-+ static const u32 m[] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
-+ u32 res, ol;
-+
-+ ol = *l;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ res = (buf[*i] & m[ol]) >> (*l);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ }
-+ } else {
-+ *l = 8 - n + (*l);
-+ res = (buf[(*i)++] & m[ol]) << 8;
-+ res = (res | buf[*i]) >> (*l);
-+ }
-+
-+ return res;
-+}
-+
-+static inline u32 getbyte(const u8 *buf, const u32 i, const u32 l)
-+{
-+ if (l == 8) {
-+ return buf[i];
-+ } else {
-+ return (((buf[i] << 8) | buf[i+1]) >> l) & 0xff;
-+ }
-+}
-+
-+static inline void lamecopy(u8 *dst, u8 *src, u32 len)
-+{
-+ while (len--)
-+ *dst++ = *src++;
-+}
-+
-+static int
-+mppc_decompress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, bits, val, sig, i, l;
-+ u8 *history, *s;
-+
-+ history = state->hist + state->histptr;
-+ olen = len = i = 0;
-+ l = 8;
-+ bits = isize * 8;
-+ while (bits >= 8) {
-+ val = getbyte(ibuf, i++, l);
-+ if (val < 0x80) { /* literal byte < 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] = (u8) val;
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 8;
-+ continue;
-+ }
-+
-+ sig = val & 0xc0;
-+ if (sig == 0x80) { /* literal byte >= 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] =
-+ (u8) (0x80|((val&0x3f)<<1)|getbits(ibuf, 1 , &i ,&l));
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 9;
-+ continue;
-+ }
-+
-+ /* Not a literal byte so it must be an (offset,length) pair */
-+ /* decode offset */
-+ sig = val & 0xf0;
-+ if (sig == 0xf0) { /* 10-bit offset; 0 <= offset < 64 */
-+ off = (((val&0x0f)<<2)|getbits(ibuf, 2 , &i ,&l));
-+ bits -= 10;
-+ } else {
-+ if (sig == 0xe0) { /* 12-bit offset; 64 <= offset < 320 */
-+ off = ((((val&0x0f)<<4)|getbits(ibuf, 4 , &i ,&l))+64);
-+ bits -= 12;
-+ } else {
-+ if ((sig&0xe0) == 0xc0) {/* 16-bit offset; 320 <= offset < 8192 */
-+ off = ((((val&0x1f)<<8)|getbyte(ibuf, i++, l))+320);
-+ bits -= 16;
-+ if (off > MPPE_HIST_LEN - 1) {
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: too big offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return DECOMP_ERROR;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: cannot decode offset value\n",
-+ __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ /* decode length of match */
-+ val = getbyte(ibuf, i, l);
-+ if ((val & 0x80) == 0x00) { /* len = 3 */
-+ len = 3;
-+ bits--;
-+ getbits(ibuf, 1 , &i ,&l);
-+ } else if ((val & 0xc0) == 0x80) { /* 4 <= len < 8 */
-+ len = 0x04 | ((val>>4) & 0x03);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xe0) == 0xc0) { /* 8 <= len < 16 */
-+ len = 0x08 | ((val>>2) & 0x07);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xf0) == 0xe0) { /* 16 <= len < 32 */
-+ len = 0x10 | (val & 0x0f);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xf800) == 0xf000) { /* 32 <= len < 64 */
-+ len = 0x0020 | ((val >> 6) & 0x001f);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xfc00) == 0xf800) { /* 64 <= len < 128 */
-+ len = 0x0040 | ((val >> 4) & 0x003f);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xfe00) == 0xfc00) { /* 128 <= len < 256 */
-+ len = 0x0080 | ((val >> 2) & 0x007f);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xff00) == 0xfe00) { /* 256 <= len < 512 */
-+ len = 0x0100 | (val & 0x00ff);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xff8000) == 0xff0000) { /* 512 <= len < 1024 */
-+ len = 0x000200 | ((val >> 6) & 0x0001ff);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xffc000) == 0xff8000) {/* 1024 <= len < 2048 */
-+ len = 0x000400 | ((val >> 4) & 0x0003ff);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xffe000) == 0xffc000) {/* 2048 <= len < 4096 */
-+ len = 0x000800 | ((val >> 2) & 0x0007ff);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xfff000) == 0xffe000) {/* 4096 <= len < 8192 */
-+ len = 0x001000 | (val & 0x000fff);
-+ bits -= 8;
-+ i++;
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length code: 0x%X\n",
-+ __FUNCTION__, state->unit, val);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ s = state->hist + state->histptr;
-+ state->histptr += len;
-+ olen += len;
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed bytes to the history */
-+
-+ /* In some cases len may be greater than off. It means that memory
-+ * areas pointed by s and s-off overlap. I had used memmove() here
-+ * because I thought that it acts as libc's version. Unfortunately,
-+ * I was wrong. :-) I got strange errors sometimes. Wilfried suggested
-+ * using of byte by byte copying here and strange errors disappeared.
-+ */
-+ lamecopy(s, s - off, len);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ /* Do PFC decompression */
-+ len = olen;
-+ if ((history[0] & 0x01) != 0) {
-+ obuf[0] = 0;
-+ obuf++;
-+ len++;
-+ }
-+
-+ if (len <= osize) {
-+ /* copy uncompressed packet to the output buffer */
-+ memcpy(obuf, history, olen);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: too big uncompressed packet: %d\n",
-+ __FUNCTION__, state->unit, len + (PPP_HDRLEN / 2));
-+ return DECOMP_ERROR;
-+ }
-+
-+ return (int) len;
-+}
-+
-+int
-+mppe_decompress(void *arg, unsigned char *ibuf, int isize,
-+ unsigned char *obuf, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+ int seq, bits, uncomplen;
-+
-+ if (isize <= PPP_HDRLEN + MPPE_OVHD) {
-+ if (state->debug) {
-+ printk(KERN_DEBUG "%s%d: short packet (len=%d)\n", __FUNCTION__,
-+ state->unit, isize);
-+ }
-+ return DECOMP_ERROR;
-+ }
-+
-+ /* Get coherency counter and control bits from input buffer */
-+ seq = MPPE_CCOUNT(ibuf);
-+ bits = MPPE_BITS(ibuf);
-+
-+ if (state->stateless) {
-+ /* RFC 3078, sec 8.1. */
-+ mppe_increase_ccount(state);
-+ if ((seq != state->ccount) && state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ } else {
-+ /* RFC 3078, sec 8.2. */
-+ if (state->flushexpected) { /* discard state */
-+ if ((bits & MPPE_BIT_FLUSHED)) { /* we received expected FLUSH bit */
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ state->flushexpected = 0;
-+ } else /* drop packet*/
-+ return DECOMP_ERROR;
-+ } else { /* normal state */
-+ mppe_increase_ccount(state);
-+ if (seq != state->ccount) {
-+ /* Packet loss detected, enter the discard state. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ if (state->mppe && (bits & MPPE_BIT_FLUSHED)) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+
-+ if (state->mppc && (bits & (MPPE_BIT_FLUSHED | MPPE_BIT_RESET))) {
-+ state->histptr = MPPE_HIST_LEN;
-+ if ((bits & MPPE_BIT_FLUSHED)) {
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ } else
-+ if ((bits & MPPE_BIT_RESET)) {
-+ memcpy(state->hist, state->hist + MPPE_HIST_LEN, MPPE_HIST_LEN);
-+ }
-+ }
-+
-+ /* Fill in the first part of the PPP header. The protocol field
-+ comes from the decompressed data. */
-+ obuf[0] = PPP_ADDRESS(ibuf);
-+ obuf[1] = PPP_CONTROL(ibuf);
-+ obuf += PPP_HDRLEN / 2;
-+
-+ if (state->mppe) { /* process encrypted packet */
-+ if ((bits & MPPE_BIT_ENCRYPTED)) {
-+ /* OK, packet encrypted, so decrypt it */
-+ if (state->mppc && (bits & MPPE_BIT_COMP)) {
-+ /* Hack warning !!! RC4 implementation which we use does
-+ decryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2), ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2));
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ uncomplen = isize - MPPE_OVHD;
-+ /* Decrypt the first byte in order to check if it is
-+ compressed or uncompressed protocol field */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), 1, obuf);
-+ /* Do PFC decompression */
-+ if ((obuf[0] & 0x01) != 0) {
-+ obuf[1] = obuf[0];
-+ obuf[0] = 0;
-+ obuf++;
-+ uncomplen++;
-+ }
-+ /* And finally, decrypt the rest of the frame. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2) + 1,
-+ isize - PPP_HDRLEN - (MPPE_OVHD / 2) - 1, obuf + 1);
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: encryption negotiated but not an "
-+ "encrypted packet received\n", __FUNCTION__, state->unit);
-+ mppe_change_key(state, 0);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ } else {
-+ if (state->mppc) { /* no MPPE, only MPPC */
-+ if ((bits & MPPE_BIT_COMP)) {
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ memcpy(obuf, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2));
-+ uncomplen = isize - MPPE_OVHD;
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: error - not an MPPC or MPPE frame "
-+ "received\n", __FUNCTION__, state->unit);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ (state->stats).unc_bytes += uncomplen;
-+ (state->stats).unc_packets++;
-+
-+ return uncomplen;
-+}
-+
-+
-+/************************************************************
-+ * Module interface table
-+ ************************************************************/
-+
-+/* These are in ppp_generic.c */
-+extern int ppp_register_compressor (struct compressor *cp);
-+extern void ppp_unregister_compressor (struct compressor *cp);
-+
-+/*
-+ * Functions exported to ppp_generic.c.
-+ *
-+ * In case of MPPC/MPPE there is no need to process incompressible data
-+ * because such a data is sent in MPPC/MPPE frame. Therefore the (*incomp)
-+ * callback function isn't needed.
-+ */
-+struct compressor ppp_mppe = {
-+ .compress_proto = CI_MPPE,
-+ .comp_alloc = mppe_comp_alloc,
-+ .comp_free = mppe_comp_free,
-+ .comp_init = mppe_comp_init,
-+ .comp_reset = mppe_comp_reset,
-+ .compress = mppe_compress,
-+ .comp_stat = mppe_stats,
-+ .decomp_alloc = mppe_decomp_alloc,
-+ .decomp_free = mppe_comp_free,
-+ .decomp_init = mppe_decomp_init,
-+ .decomp_reset = mppe_decomp_reset,
-+ .decompress = mppe_decompress,
-+ .incomp = NULL,
-+ .decomp_stat = mppe_stats,
-+ .owner = THIS_MODULE
-+};
-+
-+/************************************************************
-+ * Module support routines
-+ ************************************************************/
-+
-+int __init mppe_module_init(void)
-+{
-+ int answer;
-+
-+ if (!(crypto_alg_available("arc4", 0) && crypto_alg_available("sha1", 0))) {
-+ printk(KERN_ERR "Kernel doesn't provide ARC4 and/or SHA1 algorithms "
-+ "required by MPPE/MPPC. Check CryptoAPI configuration.\n");
-+ return -ENODEV;
-+ }
-+
-+ /* Allocate space for SHAPad1, SHAPad2 and ... */
-+ sha_pad = kmalloc(sizeof(struct sha_pad), GFP_KERNEL);
-+ if (sha_pad == NULL)
-+ return -ENOMEM;
-+ /* ... initialize them */
-+ memset(sha_pad->sha_pad1, 0x00, sizeof(sha_pad->sha_pad1));
-+ memset(sha_pad->sha_pad2, 0xf2, sizeof(sha_pad->sha_pad2));
-+
-+ answer = ppp_register_compressor(&ppp_mppe);
-+ if (answer == 0) {
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module registered\n");
-+ }
-+ return answer;
-+}
-+
-+void __exit mppe_module_cleanup(void)
-+{
-+ kfree(sha_pad);
-+ ppp_unregister_compressor(&ppp_mppe);
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module unregistered\n");
-+}
-+
-+module_init(mppe_module_init);
-+module_exit(mppe_module_cleanup);
-+
-+MODULE_AUTHOR("Jan Dubiec <jdx@slackware.pl>");
-+MODULE_DESCRIPTION("MPPE/MPPC encryption/compression module for Linux");
-+MODULE_VERSION("1.2");
-+MODULE_LICENSE("Dual BSD/GPL");
-+MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE));
-diff -ruN linux-2.6.12.orig/include/linux/ppp-comp.h linux-2.6.12/include/linux/ppp-comp.h
---- linux-2.6.12.orig/include/linux/ppp-comp.h 2004-12-24 22:33:47.000000000 +0100
-+++ linux-2.6.12/include/linux/ppp-comp.h 2005-06-28 20:07:01.000000000 +0200
-@@ -28,7 +28,7 @@
- */
-
- /*
-- * ==FILEVERSION 980319==
-+ * ==FILEVERSION 20040509==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -80,7 +80,7 @@
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
-- unsigned char *obuf, int isize, int osize);
-+ unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-@@ -101,7 +101,7 @@
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
-- unsigned char *obuf, int osize);
-+ unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-@@ -191,6 +191,42 @@
- #define DEFLATE_CHK_SEQUENCE 0
-
- /*
-+ * Definitions for MPPE/MPPC.
-+ */
-+
-+#define CI_MPPE 18 /* config option for MPPE */
-+#define CILEN_MPPE 6 /* length of config option */
-+
-+#define MPPE_OVHD 4 /* MPPE overhead */
-+#define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */
-+
-+#define MPPE_STATELESS 0x01 /* configuration bit H */
-+#define MPPE_40BIT 0x20 /* configuration bit L */
-+#define MPPE_56BIT 0x80 /* configuration bit M */
-+#define MPPE_128BIT 0x40 /* configuration bit S */
-+#define MPPE_MPPC 0x01 /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
-+/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-
diff --git a/packages/linux/linux-dht-walnut-2.6.12/ppc_40x_uboot.patch b/packages/linux/linux-dht-walnut-2.6.12/ppc_40x_uboot.patch
deleted file mode 100644
index fcb700c5b4..0000000000
--- a/packages/linux/linux-dht-walnut-2.6.12/ppc_40x_uboot.patch
+++ /dev/null
@@ -1,693 +0,0 @@
-diff-tree 3e9e7c1d0b7a36fb8affb973a054c5098e27baa8 (from 90eb2665841d7b444602736e2141a01c948f75b1)
-Author: Matt Porter <mporter@kernel.crashing.org>
-Date: Mon Nov 7 00:58:15 2005 -0800
-
- [PATCH] ppc32: cleanup AMCC PPC40x eval boards to support U-Boot
-
- Cleanup PPC40x eval boards (bubinga, walnut and sycamore) to support U-Boot
- as bootloader. The OpenBIOS bd_info struct is not used in the kernel
- anymore (only U-Boot now).
-
- uImage (U-Boot) tested on walnut, sycamore and bubinga
- zImage (OpenBIOS) tested on sycamore, bubinga and ebony
-
- Signed-off-by: Stefan Roese <sr@denx.de>
- Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
- Signed-off-by: Andrew Morton <akpm@osdl.org>
- Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
-diff --git a/arch/ppc/boot/simple/Makefile b/arch/ppc/boot/simple/Makefile
-index ff0904e..82df88b 100644
---- a/arch/ppc/boot/simple/Makefile
-+++ b/arch/ppc/boot/simple/Makefile
-@@ -67,6 +67,12 @@ zimageinitrd-$(CONFIG_BAMBOO) := zImage
- entrypoint-$(CONFIG_BAMBOO) := 0x01000000
- extra.o-$(CONFIG_BAMBOO) := pibs.o
-
-+ zimage-$(CONFIG_BUBINGA) := zImage-TREE
-+zimageinitrd-$(CONFIG_BUBINGA) := zImage.initrd-TREE
-+ end-$(CONFIG_BUBINGA) := bubinga
-+ entrypoint-$(CONFIG_BUBINGA) := 0x01000000
-+ extra.o-$(CONFIG_BUBINGA) := openbios.o
-+
- zimage-$(CONFIG_EBONY) := zImage-TREE
- zimageinitrd-$(CONFIG_EBONY) := zImage.initrd-TREE
- end-$(CONFIG_EBONY) := ebony
-@@ -91,6 +97,18 @@ zimageinitrd-$(CONFIG_OCOTEA) := zImage
- entrypoint-$(CONFIG_OCOTEA) := 0x01000000
- extra.o-$(CONFIG_OCOTEA) := pibs.o
-
-+ zimage-$(CONFIG_SYCAMORE) := zImage-TREE
-+zimageinitrd-$(CONFIG_SYCAMORE) := zImage.initrd-TREE
-+ end-$(CONFIG_SYCAMORE) := sycamore
-+ entrypoint-$(CONFIG_SYCAMORE) := 0x01000000
-+ extra.o-$(CONFIG_SYCAMORE) := openbios.o
-+
-+ zimage-$(CONFIG_WALNUT) := zImage-TREE
-+zimageinitrd-$(CONFIG_WALNUT) := zImage.initrd-TREE
-+ end-$(CONFIG_WALNUT) := walnut
-+ entrypoint-$(CONFIG_WALNUT) := 0x01000000
-+ extra.o-$(CONFIG_WALNUT) := openbios.o
-+
- extra.o-$(CONFIG_EV64260) := misc-ev64260.o
- end-$(CONFIG_EV64260) := ev64260
- cacheflag-$(CONFIG_EV64260) := -include $(clear_L2_L3)
-@@ -168,7 +186,8 @@ OBJCOPY_ARGS := -O elf32-powerpc
-
- # head.o and relocate.o must be at the start.
- boot-y := head.o relocate.o $(extra.o-y) $(misc-y)
--boot-$(CONFIG_40x) += embed_config.o
-+boot-$(CONFIG_REDWOOD_5) += embed_config.o
-+boot-$(CONFIG_REDWOOD_6) += embed_config.o
- boot-$(CONFIG_8xx) += embed_config.o
- boot-$(CONFIG_8260) += embed_config.o
- boot-$(CONFIG_BSEIP) += iic.o
-diff --git a/arch/ppc/boot/simple/misc.c b/arch/ppc/boot/simple/misc.c
-index e02de5b..f415d6c 100644
---- a/arch/ppc/boot/simple/misc.c
-+++ b/arch/ppc/boot/simple/misc.c
-@@ -23,7 +23,7 @@
- #include <asm/page.h>
- #include <asm/mmu.h>
- #include <asm/bootinfo.h>
--#ifdef CONFIG_44x
-+#ifdef CONFIG_4xx
- #include <asm/ibm4xx.h>
- #endif
- #include <asm/reg.h>
-@@ -88,6 +88,14 @@ get_mem_size(void)
- return 0;
- }
-
-+#if defined(CONFIG_40x)
-+#define PPC4xx_EMAC0_MR0 EMAC0_BASE
-+#endif
-+
-+#if defined(CONFIG_44x) && defined(PPC44x_EMAC0_MR0)
-+#define PPC4xx_EMAC0_MR0 PPC44x_EMAC0_MR0
-+#endif
-+
- struct bi_record *
- decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
- {
-@@ -103,13 +111,13 @@ decompress_kernel(unsigned long load_add
- com_port = serial_init(0, NULL);
- #endif
-
--#if defined(CONFIG_44x) && defined(PPC44x_EMAC0_MR0)
-+#if defined(PPC4xx_EMAC0_MR0)
- /* Reset MAL */
- mtdcr(DCRN_MALCR(DCRN_MAL_BASE), MALCR_MMSR);
- /* Wait for reset */
- while (mfdcr(DCRN_MALCR(DCRN_MAL_BASE)) & MALCR_MMSR) {};
- /* Reset EMAC */
-- *(volatile unsigned long *)PPC44x_EMAC0_MR0 = 0x20000000;
-+ *(volatile unsigned long *)PPC4xx_EMAC0_MR0 = 0x20000000;
- __asm__ __volatile__("eieio");
- #endif
-
-@@ -164,7 +172,9 @@ decompress_kernel(unsigned long load_add
- puts(" "); puthex((unsigned long)(&__ramdisk_end));puts("\n");
- }
-
-+#ifndef CONFIG_40x /* don't overwrite the 40x image located at 0x00400000! */
- avail_ram = (char *)0x00400000;
-+#endif
- end_avail = (char *)0x00800000;
- puts("avail ram: "); puthex((unsigned long)avail_ram); puts(" ");
- puthex((unsigned long)end_avail); puts("\n");
-diff --git a/arch/ppc/boot/simple/openbios.c b/arch/ppc/boot/simple/openbios.c
-index c732b6d..81f11d8 100644
---- a/arch/ppc/boot/simple/openbios.c
-+++ b/arch/ppc/boot/simple/openbios.c
-@@ -1,19 +1,43 @@
- /*
- * arch/ppc/boot/simple/openbios.c
- *
-- * 2005 (c) SYSGO AG - g.jaeger@sysgo.com
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * 2005 (c) SYSGO AG - g.jaeger@sysgo.com
-+ *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without
- * any warranty of any kind, whether express or implied.
- *
-- * Derived from arch/ppc/boot/simple/pibs.c (from MontaVista)
- */
-
- #include <linux/types.h>
- #include <linux/config.h>
- #include <linux/string.h>
- #include <asm/ppcboot.h>
--#include <platforms/4xx/ebony.h>
-+#include <asm/ibm4xx.h>
-+#include <asm/reg.h>
-+#ifdef CONFIG_40x
-+#include <asm/io.h>
-+#endif
-+
-+#if defined(CONFIG_BUBINGA)
-+#define BOARD_INFO_VECTOR 0xFFF80B50 /* openbios 1.19 moved this vector down - armin */
-+#else
-+#define BOARD_INFO_VECTOR 0xFFFE0B50
-+#endif
-+
-+#ifdef CONFIG_40x
-+/* Supply a default Ethernet address for those eval boards that don't
-+ * ship with one. This is an address from the MBX board I have, so
-+ * it is unlikely you will find it on your network.
-+ */
-+static ushort def_enet_addr[] = { 0x0800, 0x3e26, 0x1559 };
-+
-+extern unsigned long timebase_period_ns;
-+#endif /* CONFIG_40x */
-
- extern unsigned long decompress_kernel(unsigned long load_addr, int num_words,
- unsigned long cksum);
-@@ -23,15 +47,85 @@ extern unsigned long decompress_kernel(u
- bd_t hold_resid_buf __attribute__ ((__section__ (".data.boot")));
- bd_t *hold_residual = &hold_resid_buf;
-
-+typedef struct openbios_board_info {
-+ unsigned char bi_s_version[4]; /* Version of this structure */
-+ unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-+ unsigned int bi_memsize; /* DRAM installed, in bytes */
-+#ifdef CONFIG_405EP
-+ unsigned char bi_enetaddr[2][6]; /* Local Ethernet MAC address */
-+#else /* CONFIG_405EP */
-+ unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-+#endif /* CONFIG_405EP */
-+ unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-+ unsigned int bi_intfreq; /* Processor speed, in Hz */
-+ unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-+ unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
-+#ifdef CONFIG_405EP
-+ unsigned int bi_opb_busfreq; /* OPB Bus speed, in Hz */
-+ unsigned int bi_pllouta_freq; /* PLL OUTA speed, in Hz */
-+#endif /* CONFIG_405EP */
-+} openbios_bd_t;
-+
- void *
- load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
- void *ign1, void *ign2)
- {
-- decompress_kernel(load_addr, num_words, cksum);
-+#ifdef CONFIG_40x
-+ openbios_bd_t *openbios_bd = NULL;
-+ openbios_bd_t *(*get_board_info)(void) =
-+ (openbios_bd_t *(*)(void))(*(unsigned long *)BOARD_INFO_VECTOR);
-+
-+ /*
-+ * On 40x platforms we not only need the MAC-addresses, but also the
-+ * clocks and memsize. Now try to get all values using the OpenBIOS
-+ * "get_board_info()" callback.
-+ */
-+ if ((openbios_bd = get_board_info()) != NULL) {
-+ /*
-+ * Copy bd_info from OpenBIOS struct into U-Boot struct
-+ * used by kernel
-+ */
-+ hold_residual->bi_memsize = openbios_bd->bi_memsize;
-+ hold_residual->bi_intfreq = openbios_bd->bi_intfreq;
-+ hold_residual->bi_busfreq = openbios_bd->bi_busfreq;
-+ hold_residual->bi_pci_busfreq = openbios_bd->bi_pci_busfreq;
-+ memcpy(hold_residual->bi_pci_enetaddr, openbios_bd->bi_pci_enetaddr, 6);
-+#ifdef CONFIG_405EP
-+ memcpy(hold_residual->bi_enetaddr, openbios_bd->bi_enetaddr[0], 6);
-+ memcpy(hold_residual->bi_enet1addr, openbios_bd->bi_enetaddr[1], 6);
-+ hold_residual->bi_opbfreq = openbios_bd->bi_opb_busfreq;
-+ hold_residual->bi_procfreq = openbios_bd->bi_pllouta_freq;
-+#else /* CONFIG_405EP */
-+ memcpy(hold_residual->bi_enetaddr, openbios_bd->bi_enetaddr, 6);
-+#endif /* CONFIG_405EP */
-+ } else {
-+ /* Hmmm...better try to stuff some defaults.
-+ */
-+ hold_residual->bi_memsize = 16 * 1024 * 1024;
-+ hold_residual->bi_intfreq = 200000000;
-+ hold_residual->bi_busfreq = 100000000;
-+ hold_residual->bi_pci_busfreq = 66666666;
-+
-+ /*
-+ * Only supply one mac-address in this fallback
-+ */
-+ memcpy(hold_residual->bi_enetaddr, (void *)def_enet_addr, 6);
-+#ifdef CONFIG_405EP
-+ hold_residual->bi_opbfreq = 50000000;
-+ hold_residual->bi_procfreq = 200000000;
-+#endif /* CONFIG_405EP */
-+ }
-+
-+ timebase_period_ns = 1000000000 / hold_residual->bi_intfreq;
-+#endif /* CONFIG_40x */
-
-+#ifdef CONFIG_440GP
- /* simply copy the MAC addresses */
-- memcpy(hold_residual->bi_enetaddr, (char *)EBONY_OPENBIOS_MAC_BASE, 6);
-- memcpy(hold_residual->bi_enet1addr, (char *)(EBONY_OPENBIOS_MAC_BASE+EBONY_OPENBIOS_MAC_OFFSET), 6);
-+ memcpy(hold_residual->bi_enetaddr, (char *)OPENBIOS_MAC_BASE, 6);
-+ memcpy(hold_residual->bi_enet1addr, (char *)(OPENBIOS_MAC_BASE+OPENBIOS_MAC_OFFSET), 6);
-+#endif /* CONFIG_440GP */
-+
-+ decompress_kernel(load_addr, num_words, cksum);
-
- return (void *)hold_residual;
- }
-diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig
-index e70e4c6..d883791 100644
---- a/arch/ppc/platforms/4xx/Kconfig
-+++ b/arch/ppc/platforms/4xx/Kconfig
-@@ -225,7 +225,7 @@ config EMBEDDEDBOOT
-
- config IBM_OPENBIOS
- bool
-- depends on ASH || BUBINGA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
-+ depends on ASH || REDWOOD_5 || REDWOOD_6
- default y
-
- config PPC4xx_DMA
-diff --git a/arch/ppc/platforms/4xx/bubinga.c b/arch/ppc/platforms/4xx/bubinga.c
-index 3678abf..8110f55 100644
---- a/arch/ppc/platforms/4xx/bubinga.c
-+++ b/arch/ppc/platforms/4xx/bubinga.c
-@@ -89,7 +89,7 @@ bubinga_early_serial_map(void)
- * by 16.
- */
- uart_div = (mfdcr(DCRN_CPC0_UCR_BASE) & DCRN_CPC0_UCR_U0DIV);
-- uart_clock = __res.bi_pllouta_freq / uart_div;
-+ uart_clock = __res.bi_procfreq / uart_div;
-
- /* Setup serial port access */
- memset(&port, 0, sizeof(port));
-diff --git a/arch/ppc/platforms/4xx/bubinga.h b/arch/ppc/platforms/4xx/bubinga.h
-index b1df856..b5380cf 100644
---- a/arch/ppc/platforms/4xx/bubinga.h
-+++ b/arch/ppc/platforms/4xx/bubinga.h
-@@ -1,52 +1,34 @@
- /*
-- * Support for IBM PPC 405EP evaluation board (Bubinga).
-+ * arch/ppc/platforms/4xx/bubinga.h
- *
-- * Author: SAW (IBM), derived from walnut.h.
-- * Maintained by MontaVista Software <source@mvista.com>
-+ * Bubinga board definitions
-+ *
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * SAW (IBM)
-+ * 2003 (c) MontaVista Softare Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2003 (c) MontaVista Softare Inc. This file is licensed under the
-- * terms of the GNU General Public License version 2. This program is
-- * licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __BUBINGA_H__
- #define __BUBINGA_H__
-
--/* 405EP */
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405ep.h>
--
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[2][6]; /* Local Ethernet MAC address */ unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
-- unsigned int bi_opb_busfreq; /* OPB Bus speed, in Hz */
-- unsigned int bi_pllouta_freq; /* PLL OUTA speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
-+#include <asm/ppcboot.h>
-
- /* Memory map for the Bubinga board.
- * Generic 4xx plus RTC.
- */
-
--extern void *bubinga_rtc_base;
- #define BUBINGA_RTC_PADDR ((uint)0xf0000000)
- #define BUBINGA_RTC_VADDR BUBINGA_RTC_PADDR
- #define BUBINGA_RTC_SIZE ((uint)8*1024)
-@@ -58,12 +40,18 @@ extern void *bubinga_rtc_base;
- * for typical configurations at various CPU speeds.
- * The base baud is calculated as (FWDA / EXT UART DIV / 16)
- */
--#define BASE_BAUD 0
-+#define BASE_BAUD 0
-
--#define BUBINGA_FPGA_BASE 0xF0300000
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 1 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-
--#define PPC4xx_MACHINE_NAME "IBM Bubinga"
-+#define PPC4xx_MACHINE_NAME "IBM Bubinga"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __BUBINGA_H__ */
- #endif /* __KERNEL__ */
-diff --git a/arch/ppc/platforms/4xx/ebony.h b/arch/ppc/platforms/4xx/ebony.h
-index d08faa4..b91ad42 100644
---- a/arch/ppc/platforms/4xx/ebony.h
-+++ b/arch/ppc/platforms/4xx/ebony.h
-@@ -24,8 +24,8 @@
- #define PPC44x_EMAC0_MR0 0xE0000800
-
- /* Where to find the MAC info */
--#define EBONY_OPENBIOS_MAC_BASE 0xfffffe0c
--#define EBONY_OPENBIOS_MAC_OFFSET 0x0c
-+#define OPENBIOS_MAC_BASE 0xfffffe0c
-+#define OPENBIOS_MAC_OFFSET 0x0c
-
- /* Default clock rates for Rev. B and Rev. C silicon */
- #define EBONY_440GP_RB_SYSCLK 33000000
-diff --git a/arch/ppc/platforms/4xx/sycamore.c b/arch/ppc/platforms/4xx/sycamore.c
-index d8019ee..281b4a2 100644
---- a/arch/ppc/platforms/4xx/sycamore.c
-+++ b/arch/ppc/platforms/4xx/sycamore.c
-@@ -88,9 +88,6 @@ ppc405_map_irq(struct pci_dev *dev, unsi
- void __init
- sycamore_setup_arch(void)
- {
--#define SYCAMORE_PS2_BASE 0xF0100000
--#define SYCAMORE_FPGA_BASE 0xF0300000
--
- void *fpga_brdc;
- unsigned char fpga_brdc_data;
- void *fpga_enable;
-@@ -100,7 +97,7 @@ sycamore_setup_arch(void)
-
- ppc4xx_setup_arch();
-
-- ibm_ocp_set_emac(0, 1);
-+ ibm_ocp_set_emac(0, 0);
-
- kb_data = ioremap(SYCAMORE_PS2_BASE, 8);
- if (!kb_data) {
-@@ -111,7 +108,7 @@ sycamore_setup_arch(void)
-
- kb_cs = kb_data + 1;
-
-- fpga_status = ioremap(SYCAMORE_FPGA_BASE, 8);
-+ fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
- if (!fpga_status) {
- printk(KERN_CRIT
- "sycamore_setup_arch() fpga_status ioremap failed\n");
-diff --git a/arch/ppc/platforms/4xx/sycamore.h b/arch/ppc/platforms/4xx/sycamore.h
-index 3e7b4e2..1cd6c82 100644
---- a/arch/ppc/platforms/4xx/sycamore.h
-+++ b/arch/ppc/platforms/4xx/sycamore.h
-@@ -1,67 +1,52 @@
- /*
- * arch/ppc/platforms/4xx/sycamore.h
- *
-- * Macros, definitions, and data structures specific to the IBM PowerPC
-- * 405GPr "Sycamore" evaluation board.
-+ * Sycamore board definitions
- *
-- * Author: Armin Kuster <akuster@mvista.com>
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
-+ *
-+ * Based on original work by
-+ * Armin Kuster <akuster@mvista.com>
-+ * 2000 (c) MontaVista, Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2000 (c) MontaVista, Software, Inc. This file is licensed under
-- * the terms of the GNU General Public License version 2. This program
-- * is licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __ASM_SYCAMORE_H__
- #define __ASM_SYCAMORE_H__
-
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405gpr.h>
-+#include <asm/ppcboot.h>
-
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's "Sycamore" evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-- unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
--
--/* Memory map for the IBM "Sycamore" 405GP evaluation board.
-+/* Memory map for the IBM "Sycamore" 405GPr evaluation board.
- * Generic 4xx plus RTC.
- */
-
--extern void *sycamore_rtc_base;
- #define SYCAMORE_RTC_PADDR ((uint)0xf0000000)
- #define SYCAMORE_RTC_VADDR SYCAMORE_RTC_PADDR
--#define SYCAMORE_RTC_SIZE ((uint)8*1024)
-+#define SYCAMORE_RTC_SIZE ((uint)8*1024)
-
--#ifdef CONFIG_PPC405GP_INTERNAL_CLOCK
--#define BASE_BAUD 201600
--#else
- #define BASE_BAUD 691200
--#endif
-
--#define SYCAMORE_PS2_BASE 0xF0100000
--#define SYCAMORE_FPGA_BASE 0xF0300000
-+#define SYCAMORE_PS2_BASE 0xF0100000
-+
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 5 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-
- #define PPC4xx_MACHINE_NAME "IBM Sycamore"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __ASM_SYCAMORE_H__ */
- #endif /* __KERNEL__ */
-diff --git a/arch/ppc/platforms/4xx/walnut.c b/arch/ppc/platforms/4xx/walnut.c
-index a33eda4..74cb331 100644
---- a/arch/ppc/platforms/4xx/walnut.c
-+++ b/arch/ppc/platforms/4xx/walnut.c
-@@ -90,7 +90,7 @@ walnut_setup_arch(void)
-
- kb_cs = kb_data + 1;
-
-- fpga_status = ioremap(WALNUT_FPGA_BASE, 8);
-+ fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
- if (!fpga_status) {
- printk(KERN_CRIT
- "walnut_setup_arch() fpga_status ioremap failed\n");
-diff --git a/arch/ppc/platforms/4xx/walnut.h b/arch/ppc/platforms/4xx/walnut.h
-index 04cfbf3..dcf2691 100644
---- a/arch/ppc/platforms/4xx/walnut.h
-+++ b/arch/ppc/platforms/4xx/walnut.h
-@@ -1,72 +1,55 @@
- /*
- * arch/ppc/platforms/4xx/walnut.h
- *
-- * Macros, definitions, and data structures specific to the IBM PowerPC
-- * 405GP "Walnut" evaluation board.
-+ * Walnut board definitions
- *
-- * Authors: Grant Erickson <grant@lcse.umn.edu>, Frank Rowand
-- * <frank_rowand@mvista.com>, Debbie Chu <debbie_chu@mvista.com> or
-- * source@mvista.com
-+ * Copyright (c) 2005 DENX Software Engineering
-+ * Stefan Roese <sr@denx.de>
- *
-- * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
-+ * Based on original work by
-+ * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
-+ * Frank Rowand <frank_rowand@mvista.com>
-+ * Debbie Chu <debbie_chu@mvista.com>
-+ * 2000 (c) MontaVista, Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
- *
-- * 2000 (c) MontaVista, Software, Inc. This file is licensed under
-- * the terms of the GNU General Public License version 2. This program
-- * is licensed "as is" without any warranty of any kind, whether express
-- * or implied.
- */
-
- #ifdef __KERNEL__
- #ifndef __ASM_WALNUT_H__
- #define __ASM_WALNUT_H__
-
--/* We have a 405GP core */
-+#include <linux/config.h>
- #include <platforms/4xx/ibm405gp.h>
--
--#ifndef __ASSEMBLY__
--/*
-- * Data structure defining board information maintained by the boot
-- * ROM on IBM's "Walnut" evaluation board. An effort has been made to
-- * keep the field names consistent with the 8xx 'bd_t' board info
-- * structures.
-- */
--
--typedef struct board_info {
-- unsigned char bi_s_version[4]; /* Version of this structure */
-- unsigned char bi_r_version[30]; /* Version of the IBM ROM */
-- unsigned int bi_memsize; /* DRAM installed, in bytes */
-- unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */
-- unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
-- unsigned int bi_intfreq; /* Processor speed, in Hz */
-- unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
-- unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
--} bd_t;
--
--/* Some 4xx parts use a different timebase frequency from the internal clock.
--*/
--#define bi_tbfreq bi_intfreq
--
-+#include <asm/ppcboot.h>
-
- /* Memory map for the IBM "Walnut" 405GP evaluation board.
- * Generic 4xx plus RTC.
- */
-
--extern void *walnut_rtc_base;
- #define WALNUT_RTC_PADDR ((uint)0xf0000000)
- #define WALNUT_RTC_VADDR WALNUT_RTC_PADDR
- #define WALNUT_RTC_SIZE ((uint)8*1024)
-
--#ifdef CONFIG_PPC405GP_INTERNAL_CLOCK
--#define BASE_BAUD 201600
--#else
- #define BASE_BAUD 691200
--#endif
-
- #define WALNUT_PS2_BASE 0xF0100000
--#define WALNUT_FPGA_BASE 0xF0300000
-+
-+/* Flash */
-+#define PPC40x_FPGA_BASE 0xF0300000
-+#define PPC40x_FPGA_REG_OFFS 5 /* offset to flash map reg */
-+#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
-+#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
-+#define PPC40x_FLASH_LOW 0xFFF00000
-+#define PPC40x_FLASH_HIGH 0xFFF80000
-+#define PPC40x_FLASH_SIZE 0x80000
-+#define WALNUT_FPGA_BASE PPC40x_FPGA_BASE
-
- #define PPC4xx_MACHINE_NAME "IBM Walnut"
-
--#endif /* !__ASSEMBLY__ */
- #endif /* __ASM_WALNUT_H__ */
- #endif /* __KERNEL__ */
-diff --git a/include/asm-ppc/ibm_ocp.h b/include/asm-ppc/ibm_ocp.h
-index 6f10a25..9c21de1 100644
---- a/include/asm-ppc/ibm_ocp.h
-+++ b/include/asm-ppc/ibm_ocp.h
-@@ -131,9 +131,22 @@ static inline void ibm_ocp_set_emac(int
- /* Copy MAC addresses to EMAC additions */
- for (i=start; i<=end; i++) {
- def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, i);
-- memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-- &__res.bi_enetaddr[i],
-- 6);
-+ if (i == 0)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enetaddr, 6);
-+#if defined(CONFIG_405EP) || defined(CONFIG_44x)
-+ else if (i == 1)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet1addr, 6);
-+#endif
-+#if defined(CONFIG_440GX)
-+ else if (i == 2)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet2addr, 6);
-+ else if (i == 3)
-+ memcpy(((struct ocp_func_emac_data *)def->additions)->mac_addr,
-+ __res.bi_enet3addr, 6);
-+#endif
- }
- }
- #endif
-diff --git a/include/asm-ppc/ppcboot.h b/include/asm-ppc/ppcboot.h
-index fe24e45..6b7b63f 100644
---- a/include/asm-ppc/ppcboot.h
-+++ b/include/asm-ppc/ppcboot.h
-@@ -73,8 +73,8 @@ typedef struct bd_info {
- #if defined(CONFIG_HYMOD)
- hymod_conf_t bi_hymod_conf; /* hymod configuration information */
- #endif
--#if defined(CONFIG_EVB64260) || defined(CONFIG_44x) || defined(CONFIG_85xx) ||\
-- defined(CONFIG_83xx)
-+#if defined(CONFIG_EVB64260) || defined(CONFIG_405EP) || defined(CONFIG_44x) || \
-+ defined(CONFIG_85xx) || defined(CONFIG_83xx)
- /* second onboard ethernet port */
- unsigned char bi_enet1addr[6];
- #endif
-@@ -96,5 +96,7 @@ typedef struct bd_info {
- #endif
- } bd_t;
-
-+#define bi_tbfreq bi_intfreq
-+
- #endif /* __ASSEMBLY__ */
- #endif /* __ASM_PPCBOOT_H__ */
diff --git a/packages/linux/linux-dht-walnut_2.6.12.6.bb b/packages/linux/linux-dht-walnut_2.6.12.6.bb
deleted file mode 100644
index 7c0f434477..0000000000
--- a/packages/linux/linux-dht-walnut_2.6.12.6.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
-LICENSE = "GPL"
-PR = "r2"
-DEPENDS = "u-boot"
-
-KERNEL_CCSUFFIX = "-3.4.4"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://ppc_40x_uboot.patch;patch=1 \
- file://iw_we18-5.diff;patch=1 \
- file://linux-2.6.12-mppe-mppc-1.3.patch;patch=1 \
- file://dht-walnut_defconfig"
-
-
-S = "${WORKDIR}/linux-${PV}"
-
-inherit kernel
-
-
-FILES_kernel-image = "/boot/zImage.elf"
-
-export OS = "Linux"
-ARCH = "ppc"
-KERNEL_IMAGETYPE = "zImage"
-KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
-
-
-
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/dht-walnut_defconfig ${S}/.config
-}
-
-do_stage_append () {
-#need ppc platforms includes + friends in order for external kernel modules to compile
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms
- install -m 0755 arch/ppc/platforms/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/4xx
- install -m 0755 arch/ppc/platforms/4xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/4xx
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/83xx
- install -m 0755 arch/ppc/platforms/83xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/83xx
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/85xx
- install -m 0755 arch/ppc/platforms/85xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/85xx
-
- install -d ${STAGING_KERNEL_DIR}/include/asm-m68k
- install -m 0755 include/asm-m68k/*.h ${STAGING_KERNEL_DIR}/include/asm-m68k
-}
-
-do_install_append () {
- install -d ${DEPLOY_DIR}/images
- install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
- install -m 0755 vmlinux ${DEPLOY_DIR}/images/
- powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
- gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
- mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "owmnr"+${PV}+"-ppc" -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm ${DEPLOY_DIR}/images/vmlinux
- rm ${DEPLOY_DIR}/images/linux.bin.gz
-
-
-}
-
-pkg_postinst_kernel () {
- true
-}
-
-pkg_postrm_kernel () {
- true
-}
-
diff --git a/packages/linux/linux-dht-walnut_2.6.12.bb b/packages/linux/linux-dht-walnut_2.6.12.bb
deleted file mode 100644
index 7d362ea659..0000000000
--- a/packages/linux/linux-dht-walnut_2.6.12.bb
+++ /dev/null
@@ -1,92 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
-LICENSE = "GPL"
-PR = "r0"
-DEPENDS = "u-boot"
-
-KERNEL_CCSUFFIX = "-3.4.4"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://ppc_40x_uboot.patch;patch=1 \
- file://iw_we18-5.diff;patch=1 \
- file://linux-2.6.12-mppe-mppc-1.3.patch;patch=1 \
- file://dht-walnut_defconfig"
-
-
-S = "${WORKDIR}/linux-${PV}"
-
-inherit kernel
-
-
-FILES_kernel-image = "/boot/zImage.elf"
-
-export OS = "Linux"
-ARCH = "ppc"
-KERNEL_IMAGETYPE = "zImage"
-KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
-
-
-
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/dht-walnut_defconfig ${S}/.config
-# oe_machinstall -m 0644 ${S}/arch/ppc/configs/dht-walnut_defconfig ${S}/.config || die "no default configuration for ${MACHINE} available."
-# oe_runmake oldconfig
-}
-
-do_stage_append () {
-#need ppc platforms includes + friends in order for external kernel modules to compile
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms
- install -m 0755 arch/ppc/platforms/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/4xx
- install -m 0755 arch/ppc/platforms/4xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/4xx
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/83xx
- install -m 0755 arch/ppc/platforms/83xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/83xx
-
- install -d ${STAGING_KERNEL_DIR}/arch/ppc/platforms/85xx
- install -m 0755 arch/ppc/platforms/85xx/*.h ${STAGING_KERNEL_DIR}/arch/ppc/platforms/85xx
-
- install -d ${STAGING_KERNEL_DIR}/include/asm-m68k
- install -m 0755 include/asm-m68k/*.h ${STAGING_KERNEL_DIR}/include/asm-m68k
-}
-
-do_install_append () {
- install -d ${DEPLOY_DIR}/images
- install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
- install -m 0755 vmlinux ${DEPLOY_DIR}/images/
- powerpc-linux-uclibc-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
- gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
- mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "owmnr-2.6.12-ppc" -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm ${DEPLOY_DIR}/images/vmlinux
- rm ${DEPLOY_DIR}/images/linux.bin.gz
-
-
-}
-
-pkg_postinst_kernel () {
- true
-}
-
-pkg_postrm_kernel () {
- true
-}
-
-
-
-
-#do_configure_prepend() {
-# install -m 0644 ${WORKDIR}/dht-walnut_defconfig ${S}/.config
-#}
-
-
-#do_deploy() {
-# install -d ${DEPLOY_DIR}/images
-# install -m 0644 arch/${ARCH}/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin}
-
-#do_deploy[dirs] = "${S}"
-
-#addtask deploy before do_build after do_compile
-
diff --git a/packages/linux/linux-dht-walnut_2.6.20.bb b/packages/linux/linux-dht-walnut_2.6.20.bb
index 4a93954dfe..bc876ebf34 100644
--- a/packages/linux/linux-dht-walnut_2.6.20.bb
+++ b/packages/linux/linux-dht-walnut_2.6.20.bb
@@ -1,10 +1,12 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
SECTION = "kernel"
DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
LICENSE = "GPL"
-PR = "r1"
+PR = "r3"
DEPENDS = "u-boot"
-KERNEL_CCSUFFIX = "-3.4.4"
+COMPATIBLE_MACHINE = "dht-walnut"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://dht-walnut_defconfig"
@@ -46,14 +48,17 @@ do_stage_append () {
do_install_append () {
- install -d ${DEPLOY_DIR}/images
- install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
- install -m 0755 vmlinux ${DEPLOY_DIR}/images/
- powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
- gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
- mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "ppc405"+${PV} -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm ${DEPLOY_DIR}/images/vmlinux
- rm ${DEPLOY_DIR}/images/linux.bin.gz
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 arch/ppc/boot/images/zImage.elf \
+ ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ install -m 0755 vmlinux ${DEPLOY_DIR_IMAGE}/
+ powerpc${TARGET_VENDOR}-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S \
+ ${DEPLOY_DIR_IMAGE}/vmlinux ${DEPLOY_DIR_IMAGE}/linux.bin
+ gzip -f -9 ${DEPLOY_DIR_IMAGE}/linux.bin
+ mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "ppc405"+${PV} -d ${DEPLOY_DIR_IMAGE}/linux.bin.gz \
+ ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm ${DEPLOY_DIR_IMAGE}/vmlinux
+ rm ${DEPLOY_DIR_IMAGE}/linux.bin.gz
}
diff --git a/packages/linux/linux-efika/defconfig b/packages/linux/linux-efika/defconfig
index b8a39ffa05..de271da67a 100644
--- a/packages/linux/linux-efika/defconfig
+++ b/packages/linux/linux-efika/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.19-rc6
-# Sun Dec 31 01:46:08 2006
+# Linux kernel version: 2.6.20
+# Sat May 19 17:43:26 2007
#
# CONFIG_PPC64 is not set
CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_IRQ_PER_CPU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,23 +23,25 @@ CONFIG_PPC_OF=y
CONFIG_PPC_UDBG_16550=y
# CONFIG_GENERIC_TBSYNC is not set
CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
# CONFIG_DEFAULT_UIMAGE is not set
#
# Processor support
#
CONFIG_CLASSIC32=y
-# CONFIG_PPC_52xx is not set
# CONFIG_PPC_82xx is not set
# CONFIG_PPC_83xx is not set
# CONFIG_PPC_85xx is not set
# CONFIG_PPC_86xx is not set
+# CONFIG_PPC_8xx is not set
# CONFIG_40x is not set
# CONFIG_44x is not set
-# CONFIG_8xx is not set
# CONFIG_E200 is not set
CONFIG_6xx=y
CONFIG_PPC_FPU=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
# CONFIG_ALTIVEC is not set
CONFIG_PPC_STD_MMU=y
CONFIG_PPC_STD_MMU_32=y
@@ -50,26 +53,23 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+CONFIG_LOCALVERSION="-efika"
+# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -98,8 +98,8 @@ CONFIG_BASE_SMALL=0
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
@@ -107,22 +107,22 @@ CONFIG_KMOD=y
# Block layer
#
CONFIG_BLOCK=y
-CONFIG_LBD=y
+# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_LSF=y
+# CONFIG_LSF is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_IOSCHED="cfq"
#
# Platform support
@@ -131,10 +131,16 @@ CONFIG_PPC_MULTIPLATFORM=y
# CONFIG_EMBEDDED6xx is not set
# CONFIG_APUS is not set
CONFIG_PPC_CHRP=y
+CONFIG_PPC_MPC52xx=y
+CONFIG_PPC_MPC5200=y
+CONFIG_PPC_MPC5200_BUGFIX=y
+CONFIG_PPC_BESTCOMM=y
CONFIG_PPC_EFIKA=y
+CONFIG_PPC_LITE5200=y
# CONFIG_PPC_PMAC is not set
# CONFIG_PPC_CELL is not set
# CONFIG_PPC_CELL_NATIVE is not set
+CONFIG_PPC_NATIVE=y
CONFIG_UDBG_RTAS_CONSOLE=y
CONFIG_PPC_RTAS=y
# CONFIG_RTAS_ERROR_LOGGING is not set
@@ -142,12 +148,12 @@ CONFIG_RTAS_PROC=y
# CONFIG_MMIO_NVRAM is not set
CONFIG_PPC_MPC106=y
# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_TAU is not set
-CONFIG_PPC_MPC52xx=y
# CONFIG_WANT_EARLY_SERIAL is not set
CONFIG_MPIC=y
-CONFIG_USE_MDIO=y
#
# Kernel options
@@ -155,12 +161,12 @@ CONFIG_USE_MDIO=y
# CONFIG_HIGHMEM is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
-# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
-CONFIG_PREEMPT=y
-CONFIG_PREEMPT_BKL=y
+# CONFIG_PREEMPT is not set
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
@@ -176,17 +182,23 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
CONFIG_PROC_DEVICETREE=y
CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="root=/dev/sda1"
-# CONFIG_PM is not set
-# CONFIG_SECCOMP is not set
+CONFIG_CMDLINE="console=ttyS0,9600 console=ttyPSC0,115200"
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
+CONFIG_SECCOMP=y
CONFIG_ISA_DMA_API=y
#
# Bus options
#
# CONFIG_ISA is not set
+CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
# CONFIG_MPIC_WEIRD is not set
CONFIG_PPC_I8259=y
@@ -198,25 +210,7 @@ CONFIG_PCI_DOMAINS=y
#
# PCCARD (PCMCIA/CardBus) support
#
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=m
+# CONFIG_PCCARD is not set
#
# PCI Hotplug Support
@@ -247,211 +241,54 @@ CONFIG_NET=y
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
+# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_NET_KEY=y
+# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_FWMARK=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
-CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=y
-CONFIG_NET_IPGRE=y
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=y
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
-
-#
-# IP: Virtual Server Configuration
-#
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_SIT is not set
+# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETLABEL is not set
-CONFIG_NETWORK_SECMARK=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-CONFIG_NETFILTER_XT_TARGET_SECMARK=m
-# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CONNTRACK_SECMARK=y
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -461,25 +298,18 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
# SCTP Configuration (EXPERIMENTAL)
#
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
+# CONFIG_IP_SCTP is not set
#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-CONFIG_IPX_INTERN=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
@@ -490,48 +320,84 @@ CONFIG_IPX_INTERN=y
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_TOSHIBA_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+# CONFIG_BT is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
-CONFIG_FIB_RULES=y
#
# Device Drivers
@@ -568,7 +434,6 @@ CONFIG_FW_LOADER=m
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_MPC52XX_ATAPIO is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
@@ -584,10 +449,8 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
#
# Misc devices
@@ -598,14 +461,72 @@ CONFIG_ATA_OVER_ETH=m
#
# ATA/ATAPI/MFM/RLL support
#
-# CONFIG_IDE is not set
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_IVB=y
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
#
# SCSI device support
#
-# CONFIG_RAID_ATTRS is not set
+CONFIG_RAID_ATTRS=y
CONFIG_SCSI=y
-CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
@@ -617,30 +538,32 @@ CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
-CONFIG_CHR_DEV_SCH=m
+# CONFIG_CHR_DEV_SCH is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
-CONFIG_SCSI_LOGGING=y
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
-CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_FC_ATTRS is not set
CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-CONFIG_SCSI_3W_9XXX=m
+# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
@@ -662,49 +585,39 @@ CONFIG_SCSI_3W_9XXX=m
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_STEX is not set
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
+# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
+# CONFIG_SCSI_SRP is not set
#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
#
CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_SATA_AHCI is not set
# CONFIG_SATA_SVW is not set
# CONFIG_ATA_PIIX is not set
-CONFIG_SATA_MV=m
+# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-CONFIG_SATA_SIL24=y
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
@@ -714,14 +627,16 @@ CONFIG_SATA_SIL24=y
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
+CONFIG_ATA_GENERIC=y
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
CONFIG_PATA_MPC52xx=y
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
@@ -729,7 +644,6 @@ CONFIG_PATA_MPC52xx=y
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PCMCIA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
@@ -757,31 +671,7 @@ CONFIG_PATA_MPC52xx=y
#
# IEEE 1394 (FireWire) support
#
-CONFIG_IEEE1394=m
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-CONFIG_IEEE1394_OUI_DB=y
-CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
-CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
-CONFIG_IEEE1394_EXPORT_FULL_API=y
-
-#
-# Device Drivers
-#
-# CONFIG_IEEE1394_PCILYNX is not set
-CONFIG_IEEE1394_OHCI1394=m
-
-#
-# Protocol Drivers
-#
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_SBP2=m
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_DV1394=m
-CONFIG_IEEE1394_RAWIO=m
+# CONFIG_IEEE1394 is not set
#
# I2O device support
@@ -791,15 +681,16 @@ CONFIG_IEEE1394_RAWIO=m
#
# Macintosh device drivers
#
+# CONFIG_MAC_EMUMOUSEBTN is not set
# CONFIG_WINDFARM is not set
#
# Network device support
#
CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
@@ -810,19 +701,22 @@ CONFIG_EQUALIZER=m
#
# PHY device support
#
-CONFIG_PHYLIB=m
+CONFIG_PHYLIB=y
#
# MII PHY device drivers
#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-# CONFIG_FIXED_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+CONFIG_FIXED_PHY=m
+CONFIG_FIXED_MII_10_FDX=y
+CONFIG_FIXED_MII_100_FDX=y
#
# Ethernet (10 or 100Mbit)
@@ -832,74 +726,54 @@ CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-# CONFIG_VIA_RHINE_NAPI is not set
+# CONFIG_NET_PCI is not set
#
# MPC5200 Networking Options
#
CONFIG_FEC_MPC52xx=y
+CONFIG_USE_MDIO=y
#
# Ethernet (1000 Mbit)
#
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-# CONFIG_E1000 is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_R8169_VLAN=y
+# CONFIG_R8169_NAPI is not set
CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
CONFIG_TIGON3=m
-CONFIG_BNX2=m
+# CONFIG_BNX2 is not set
# CONFIG_MV643XX_ETH is not set
-CONFIG_QLA3XXX=m
+# CONFIG_QLA3XXX is not set
#
# Ethernet (10000 Mbit)
#
# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
#
# Token Ring devices
@@ -915,14 +789,7 @@ CONFIG_NET_RADIO=y
#
# Obsolete Wireless cards support (pre-802.11)
#
-CONFIG_STRIP=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-CONFIG_PCMCIA_RAYCS=m
+# CONFIG_STRIP is not set
#
# Wireless 802.11b ISA/PCI cards support
@@ -930,57 +797,41 @@ CONFIG_PCMCIA_RAYCS=m
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-# CONFIG_NORTEL_HERMES is not set
-CONFIG_PCI_HERMES=m
+# CONFIG_HERMES is not set
CONFIG_ATMEL=m
# CONFIG_PCI_ATMEL is not set
#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-# CONFIG_PCMCIA_SPECTRUM is not set
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_PCMCIA_WL3501=m
-
-#
# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
#
CONFIG_PRISM54=m
CONFIG_USB_ZD1201=m
CONFIG_HOSTAP=m
# CONFIG_HOSTAP_FIRMWARE is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_HOSTAP_CS is not set
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
CONFIG_NET_WIRELESS=y
#
-# PCMCIA network device support
-#
-# CONFIG_NET_PCMCIA is not set
-
-#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
+# CONFIG_PPP_MPPE is not set
CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
CONFIG_SLHC=m
+# CONFIG_SLIP_SMART is not set
+CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
@@ -1001,7 +852,7 @@ CONFIG_SLHC=m
# Input device support
#
CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -1012,36 +863,37 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=m
+CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_XTKBD=m
+# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_PCSPKR is not set
+CONFIG_INPUT_UINPUT=m
#
# Hardware I/O ports
#
CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
+CONFIG_SERIO_RAW=m
# CONFIG_GAMEPORT is not set
#
@@ -1050,27 +902,35 @@ CONFIG_SERIO_LIBPS2=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
-# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=16
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_MPC52xx=y
CONFIG_SERIAL_MPC52xx_CONSOLE=y
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_BRIQ_PANEL is not set
-# CONFIG_HVC_RTAS is not set
+CONFIG_HVC_DRIVER=y
+CONFIG_HVC_RTAS=y
#
# IPMI
@@ -1080,36 +940,35 @@ CONFIG_UNIX98_PTYS=y
#
# Watchdog Cards
#
-# CONFIG_WATCHDOG is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WATCHDOG_RTAS=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+CONFIG_WDT_501_PCI=y
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
CONFIG_HW_RANDOM=y
CONFIG_NVRAM=y
CONFIG_GEN_RTC=y
-CONFIG_GEN_RTC_X=y
+# CONFIG_GEN_RTC_X is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
CONFIG_AGP=m
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_VIA is not set
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
+# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
#
@@ -1121,14 +980,14 @@ CONFIG_DRM_SAVAGE=m
# I2C support
#
CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
+CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
@@ -1142,32 +1001,33 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_MPC is not set
+CONFIG_I2C_MPC=y
# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
+CONFIG_I2C_OCORES=y
+CONFIG_I2C_PARPORT_LIGHT=y
+# CONFIG_I2C_PASEMI is not set
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
#
# Miscellaneous I2C Chip support
#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_M41T00 is not set
-# CONFIG_SENSORS_MAX6875 is not set
+CONFIG_SENSORS_DS1337=m
+CONFIG_SENSORS_DS1374=m
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_M41T00=m
+CONFIG_SENSORS_MAX6875=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
@@ -1193,69 +1053,28 @@ CONFIG_I2C_ALGOBIT=y
#
# Multimedia devices
#
-CONFIG_VIDEO_DEV=m
-# CONFIG_VIDEO_V4L1 is not set
-# CONFIG_VIDEO_V4L1_COMPAT is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_CX25840=m
-CONFIG_VIDEO_CX2341X=m
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_CX88 is not set
-
-#
-# V4L USB devices
-#
-CONFIG_VIDEO_PVRUSB2=m
-# CONFIG_VIDEO_PVRUSB2_29XXX is not set
-CONFIG_VIDEO_PVRUSB2_24XXX=y
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
+# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_USB_DABUSB=m
+# CONFIG_USB_DABUSB is not set
#
# Graphics support
#
-# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
CONFIG_FB_MACMODES=y
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
@@ -1270,25 +1089,31 @@ CONFIG_FB_OF=y
# CONFIG_FB_MATROX is not set
CONFIG_FB_RADEON=y
CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_DEBUG=y
+# CONFIG_FB_RADEON_DEBUG is not set
CONFIG_FB_ATY128=y
-# CONFIG_FB_ATY is not set
+CONFIG_FB_ATY=y
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
CONFIG_FB_SIS=y
CONFIG_FB_SIS_300=y
CONFIG_FB_SIS_315=y
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
-CONFIG_FB_3DFX=y
-# CONFIG_FB_3DFX_ACCEL is not set
-CONFIG_FB_VOODOO1=y
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
-# CONFIG_VGA_CONSOLE is not set
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
@@ -1302,137 +1127,19 @@ CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-CONFIG_SND_CA0106=m
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-
-#
-# ALSA PowerMac devices
-#
-
-#
-# ALSA PPC devices
-#
-CONFIG_SND_PPC_MPC52xx_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
#
# USB support
@@ -1447,17 +1154,14 @@ CONFIG_USB=y
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
CONFIG_USB_DYNAMIC_MINORS=y
+# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PPC_SOC=y
@@ -1465,17 +1169,17 @@ CONFIG_USB_OHCI_HCD_PPC_OF=y
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
CONFIG_USB_OHCI_HCD_PCI=y
-CONFIG_USB_OHCI_BIG_ENDIAN=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
#
# USB Device Class drivers
#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1486,73 +1190,54 @@ CONFIG_USB_PRINTER=m
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
#
CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-CONFIG_HID_FF=y
-CONFIG_HID_PID=y
-CONFIG_LOGITECH_FF=y
-CONFIG_THRUSTMASTER_FF=y
-# CONFIG_ZEROPLUS_FF is not set
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-CONFIG_USB_ACECAD=m
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_TOUCHSCREEN=m
-CONFIG_USB_TOUCHSCREEN_EGALAX=y
-CONFIG_USB_TOUCHSCREEN_PANJIT=y
-CONFIG_USB_TOUCHSCREEN_3M=y
-CONFIG_USB_TOUCHSCREEN_ITM=y
-CONFIG_USB_TOUCHSCREEN_ETURBO=y
-CONFIG_USB_TOUCHSCREEN_GUNZE=y
-CONFIG_USB_YEALINK=m
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-CONFIG_USB_ATI_REMOTE2=m
-CONFIG_USB_KEYSPAN_REMOTE=m
-CONFIG_USB_APPLETOUCH=m
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
#
# USB Imaging devices
#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
#
# USB Network Adapters
#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set
#
@@ -1562,71 +1247,28 @@ CONFIG_USB_NET_ZAURUS=m
#
# USB Serial Converter support
#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-CONFIG_USB_SERIAL_AIRPRIME=m
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
+# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_SISUSBVGA_CON is not set
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_TEST=m
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_TEST is not set
#
# USB DSL modem support
@@ -1635,26 +1277,7 @@ CONFIG_USB_TEST=m
#
# USB Gadget Support
#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-CONFIG_USB_GADGET_NET2280=y
-CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-CONFIG_USB_FILE_STORAGE_TEST=y
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_GADGET is not set
#
# MMC/SD Card support
@@ -1664,7 +1287,8 @@ CONFIG_USB_G_SERIAL=m
#
# LED devices
#
-# CONFIG_NEW_LEDS is not set
+CONFIG_NEW_LEDS=y
+# CONFIG_LEDS_CLASS is not set
#
# LED drivers
@@ -1673,6 +1297,10 @@ CONFIG_USB_G_SERIAL=m
#
# LED Triggers
#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_TIMER is not set
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
#
# InfiniBand support
@@ -1686,33 +1314,71 @@ CONFIG_USB_G_SERIAL=m
#
# Real Time Clock
#
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# DMA Engine support
#
-# CONFIG_DMA_ENGINE is not set
+CONFIG_DMA_ENGINE=y
#
# DMA Clients
#
+CONFIG_NET_DMA=y
#
# DMA Devices
#
+# CONFIG_INTEL_IOATDMA is not set
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
@@ -1720,32 +1386,30 @@ CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=y
+# CONFIG_JFS_POSIX_ACL is not set
# CONFIG_JFS_SECURITY is not set
# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
+# CONFIG_JFS_STATISTICS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=y
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_SECURITY=y
-CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
-CONFIG_MINIX_FS=m
-# CONFIG_ROMFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
-CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -1753,16 +1417,15 @@ CONFIG_AUTOFS4_FS=m
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=y
-CONFIG_UDF_FS=y
+CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NTFS_FS=m
@@ -1777,7 +1440,7 @@ CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1786,14 +1449,13 @@ CONFIG_RAMFS=y
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
-CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
+# CONFIG_AFFS_FS is not set
+CONFIG_HFS_FS=y
+CONFIG_HFSPLUS_FS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=y
+# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1810,24 +1472,17 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
+# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="iso8859-1"
-CONFIG_CIFS=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1843,7 +1498,7 @@ CONFIG_AMIGA_PARTITION=y
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
+CONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
@@ -1859,44 +1514,44 @@ CONFIG_MSDOS_PARTITION=y
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
#
# Distributed Lock Manager
@@ -1906,22 +1561,22 @@ CONFIG_NLS_UTF8=m
#
# Library routines
#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
#
# Instrumentation Support
#
# CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
#
# Kernel hacking
@@ -1930,39 +1585,20 @@ CONFIG_PLIST=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_BOOTX_TEXT=y
-# CONFIG_SERIAL_TEXT_DEBUG is not set
-CONFIG_PPC_EARLY_DEBUG=y
-# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
-# CONFIG_PPC_EARLY_DEBUG_G5 is not set
-# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
-CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE=y
-# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
-# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
+CONFIG_SERIAL_TEXT_DEBUG=y
+# CONFIG_PPC_EARLY_DEBUG is not set
#
# Security options
#
-CONFIG_KEYS=y
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITY_NETWORK=y
-# CONFIG_SECURITY_NETWORK_XFRM is not set
-CONFIG_SECURITY_CAPABILITIES=y
-# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
-# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
#
# Cryptographic options
@@ -1970,35 +1606,39 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
diff --git a/packages/linux/linux-efika_2.6.21+git.bb b/packages/linux/linux-efika_2.6.21+git.bb
index 9b01787b13..0dcc8b3304 100644
--- a/packages/linux/linux-efika_2.6.21+git.bb
+++ b/packages/linux/linux-efika_2.6.21+git.bb
@@ -2,6 +2,9 @@ DESCRIPTION = "Linux Kernel for the EFIKA dev platform"
SECTION = "kernel"
LICENSE = "GPL"
PR = "r0"
+PV = "2.6.21+git${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
COMPATIBLE_MACHINE = "efika"
diff --git a/packages/linux/linux-epia-2.6.19.2/epia_defconfig b/packages/linux/linux-epia-2.6.19.2/epia_defconfig
index db84c236cb..4c681d54f5 100644
--- a/packages/linux/linux-epia-2.6.19.2/epia_defconfig
+++ b/packages/linux/linux-epia-2.6.19.2/epia_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.19.2
-# Fri Jan 26 11:55:32 2007
+# Sun May 27 11:25:48 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
@@ -464,7 +464,14 @@ CONFIG_BT_HCIUSB_SCO=y
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -850,7 +857,57 @@ CONFIG_VIA_RHINE=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+CONFIG_STRIP=m
+CONFIG_ARLAN=m
+CONFIG_WAVELAN=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+# CONFIG_IPW2200_RADIOTAP is not set
+# CONFIG_IPW2200_PROMISCUOUS is not set
+# CONFIG_IPW2200_QOS is not set
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+# CONFIG_PCI_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
#
# Wan interfaces
@@ -972,7 +1029,11 @@ CONFIG_PPDEV=m
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_INTEL=y
+CONFIG_HW_RANDOM_AMD=y
+CONFIG_HW_RANDOM_GEODE=y
+CONFIG_HW_RANDOM_VIA=y
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
@@ -1858,7 +1919,45 @@ CONFIG_DOUBLEFAULT=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_TWOFISH_586 is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_586 is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
#
# Library routines
diff --git a/packages/linux/linux-h6300-omap1_2.6.12-rc5.bb b/packages/linux/linux-h6300-omap1_2.6.12-rc5.bb
index 299d813964..58e85781a3 100644
--- a/packages/linux/linux-h6300-omap1_2.6.12-rc5.bb
+++ b/packages/linux/linux-h6300-omap1_2.6.12-rc5.bb
@@ -11,6 +11,8 @@ S = "${WORKDIR}/linux-2.6.12-rc5"
inherit kernel
+COMPATIBLE_MACHINE = "h6300"
+
do_configure_prepend() {
install -m 0644 ${WORKDIR}/defconfig ${S}/.config
oe_runmake oldconfig
diff --git a/packages/linux/linux-h6300-omap1_2.6.14.3.bb b/packages/linux/linux-h6300-omap1_2.6.14.3.bb
index ea5aeeea1a..7726bad494 100644
--- a/packages/linux/linux-h6300-omap1_2.6.14.3.bb
+++ b/packages/linux/linux-h6300-omap1_2.6.14.3.bb
@@ -11,6 +11,8 @@ S = "${WORKDIR}/linux-2.6.14"
inherit kernel
+COMPATIBLE_MACHINE = "h6300"
+
do_configure_prepend() {
install -m 0644 ${WORKDIR}/defconfig ${S}/.config
oe_runmake oldconfig
diff --git a/packages/linux/linux-h6300-omap1_2.6.16.16.bb b/packages/linux/linux-h6300-omap1_2.6.16.16.bb
index d1d82adde9..8b5f627846 100644
--- a/packages/linux/linux-h6300-omap1_2.6.16.16.bb
+++ b/packages/linux/linux-h6300-omap1_2.6.16.16.bb
@@ -12,6 +12,8 @@ S = "${WORKDIR}/linux-2.6.16"
inherit kernel
+COMPATIBLE_MACHINE = "h6300"
+
do_configure_prepend() {
install -m 0644 ${WORKDIR}/defconfig ${S}/.config
oe_runmake oldconfig
diff --git a/packages/pointercal/files/magician/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/h2200/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/pointercal/files/magician/.mtn2git_empty
+++ b/packages/linux/linux-handhelds-2.6/h2200/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h2200/defconfig b/packages/linux/linux-handhelds-2.6/h2200/defconfig
new file mode 100644
index 0000000000..a1340a6b66
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h2200/defconfig
@@ -0,0 +1,1437 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:16 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+CONFIG_BOARD_IRQ_MAP_BIG=y
+CONFIG_DMABOUNCE=y
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+CONFIG_ARCH_H2200=y
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+CONFIG_PCMCIA_H2200=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_HAMCOP=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_H2200=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_PXA_IR=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_MASTER_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - external power and batteries
+#
+CONFIG_EXTERNAL_POWER=y
+CONFIG_BATTERY=y
+CONFIG_PDA_POWER=y
+# CONFIG_H2200_BATTERY is not set
+CONFIG_DS2760_BATTERY=y
+# CONFIG_ADC_BATTERY is not set
+CONFIG_APM_POWER=y
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_TSC2200_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+CONFIG_ADC_SAMCOP=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+CONFIG_SOC_HAMCOP=y
+CONFIG_SOC_SAMCOP_DMA=y
+# CONFIG_SOC_SAMCOP_DMA_DEBUG is not set
+CONFIG_SOC_MQ11XX=y
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_H2200 is not set
+CONFIG_LEDS_HAMCOP=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_BACKLIGHT_H2200=y
+CONFIG_LCD_H2200=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_MQ1100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_H2200=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_UDA1380=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_PXA2XX_GPIO=y
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TMIO is not set
+CONFIG_MMC_SAMCOP=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/pptp-linux/pptp-linux/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/h3600/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/pptp-linux/pptp-linux/.mtn2git_empty
+++ b/packages/linux/linux-handhelds-2.6/h3600/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3600/defconfig b/packages/linux/linux-handhelds-2.6/h3600/defconfig
new file mode 100644
index 0000000000..fc4f42fd3c
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h3600/defconfig
@@ -0,0 +1,1267 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:18 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_COLLIE is not set
+# CONFIG_SA1100_H3100 is not set
+CONFIG_SA1100_H3600=y
+# CONFIG_SA1100_H3800 is not set
+CONFIG_SA1100_H3XXX=y
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA56X is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_XDA is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+# CONFIG_H3600_SLEEVE is not set
+CONFIG_SA1100_USB=y
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+CONFIG_IPAQ_H3600_LCD=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_SA1110=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_SA1100_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_MICRO=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_IPAQ_MICRO=y
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - external power and batteries
+#
+# CONFIG_EXTERNAL_POWER is not set
+# CONFIG_BATTERY is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_TSC2200_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_IPAQ_MICRO=y
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_SA1100=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/vera-fonts/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/h3800/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/vera-fonts/.mtn2git_empty
+++ b/packages/linux/linux-handhelds-2.6/h3800/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3800/defconfig b/packages/linux/linux-handhelds-2.6/h3800/defconfig
new file mode 100644
index 0000000000..78796cba28
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h3800/defconfig
@@ -0,0 +1,1268 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:21 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_COLLIE is not set
+# CONFIG_SA1100_H3100 is not set
+CONFIG_SA1100_H3600=y
+# CONFIG_SA1100_H3800 is not set
+CONFIG_SA1100_H3XXX=y
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA56X is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_XDA is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+# CONFIG_H3600_SLEEVE is not set
+CONFIG_SA1100_USB=y
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+# CONFIG_IPAQ_H3600_LCD is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_SA1110=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_SA1100_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_ASIC2=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_ASIC2=y
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - external power and batteries
+#
+# CONFIG_EXTERNAL_POWER is not set
+# CONFIG_BATTERY is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_TSC2200_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+CONFIG_ADC_ASIC2=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_IPAQ_MICRO is not set
+CONFIG_HTC_ASIC2=y
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_SA1100=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-handhelds-2.6/h3900/defconfig b/packages/linux/linux-handhelds-2.6/h3900/defconfig
index 297be698cb..9fcc2a00bc 100644
--- a/packages/linux/linux-handhelds-2.6/h3900/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3900/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:30 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:23 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -248,6 +248,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -402,14 +403,15 @@ CONFIG_IRDA=y
# IrDA protocols
#
CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -479,7 +481,8 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -609,7 +612,55 @@ CONFIG_MTD_CFI_I2=y
#
# Network device support
#
-# CONFIG_NETDEVICES is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -659,9 +710,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-# CONFIG_TOUCHSCREEN_WM9712 is not set
-# CONFIG_TOUCHSCREEN_WM9713 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
@@ -797,21 +845,6 @@ CONFIG_I2C_PXA=m
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-CONFIG_HTC_ASIC2=y
-CONFIG_HTC_ASIC3=y
-# CONFIG_HTC_ASIC3_DS1WM is not set
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -828,6 +861,17 @@ CONFIG_ADC_ASIC2=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+CONFIG_HTC_ASIC2=y
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -1117,8 +1161,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1209,7 +1252,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
@@ -1247,7 +1290,7 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_ECB is not set
+CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_CBC is not set
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
@@ -1260,7 +1303,7 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
+CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6/h4000/defconfig b/packages/linux/linux-handhelds-2.6/h4000/defconfig
index 3662bc062d..c5f719ffdc 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h4000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:32 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:25 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -254,6 +254,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -410,13 +411,13 @@ CONFIG_IRDA=y
CONFIG_IRLAN=y
# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -489,7 +490,8 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -736,9 +738,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-# CONFIG_TOUCHSCREEN_WM9712 is not set
-# CONFIG_TOUCHSCREEN_WM9713 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
@@ -876,21 +875,6 @@ CONFIG_APM_POWER=y
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-CONFIG_HTC_ASIC3=y
-# CONFIG_HTC_ASIC3_DS1WM is not set
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -906,6 +890,17 @@ CONFIG_ADC_ADS7846_SSP=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -1218,8 +1213,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1310,7 +1304,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
diff --git a/packages/linux/linux-handhelds-2.6/h5000/defconfig b/packages/linux/linux-handhelds-2.6/h5000/defconfig
index 20685be413..daf572fcd2 100644
--- a/packages/linux/linux-handhelds-2.6/h5000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h5000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:35 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:28 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -250,6 +250,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -404,14 +405,15 @@ CONFIG_IRDA=y
# IrDA protocols
#
CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -481,11 +483,12 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
#
@@ -536,9 +539,12 @@ CONFIG_MTD_CFI_UTIL=y
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IPAQ=y
+# CONFIG_MTD_IPAQ is not set
# CONFIG_MTD_SHARP_SL is not set
# CONFIG_MTD_PLATRAM is not set
@@ -625,7 +631,55 @@ CONFIG_MTD_IPAQ=y
#
# Network device support
#
-# CONFIG_NETDEVICES is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -673,13 +727,9 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-# CONFIG_TOUCHSCREEN_WM9712 is not set
-# CONFIG_TOUCHSCREEN_WM9713 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-CONFIG_TOUCHSCREEN_SAMCOP=y
# CONFIG_TOUCHSCREEN_ADC is not set
CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
# CONFIG_TOUCHSCREEN_UCB1400 is not set
@@ -794,23 +844,6 @@ CONFIG_APM_POWER=y
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-CONFIG_SOC_MQ11XX=y
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-CONFIG_SOC_SAMCOP=y
-# CONFIG_SOC_HAMCOP is not set
-CONFIG_SOC_SAMCOP_DMA=y
-# CONFIG_SOC_SAMCOP_DMA_DEBUG is not set
-# CONFIG_HTC_ASIC2 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -827,6 +860,19 @@ CONFIG_ADC_SAMCOP=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+CONFIG_SOC_SAMCOP=y
+# CONFIG_SOC_HAMCOP is not set
+CONFIG_SOC_SAMCOP_DMA=y
+# CONFIG_SOC_SAMCOP_DMA_DEBUG is not set
+CONFIG_SOC_MQ11XX=y
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -1109,8 +1155,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1201,7 +1246,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
@@ -1239,7 +1284,7 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_ECB is not set
+CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_CBC is not set
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
@@ -1252,7 +1297,7 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
+CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
new file mode 100644
index 0000000000..138306de72
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
@@ -0,0 +1,1462 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:35 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+CONFIG_BOARD_IRQ_MAP_BIG=y
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+CONFIG_MACH_BLUEANGEL=y
+CONFIG_MACH_BLUEANGEL_LCD=y
+CONFIG_MACH_BLUEANGEL_BACKLIGHT=y
+CONFIG_MACH_BLUEANGEL_DS1WM=y
+CONFIG_MACH_BLUEANGEL_PCMCIA=y
+CONFIG_MACH_BLUEANGEL_SUSPEND=y
+CONFIG_MACH_BLUEANGEL_LEDS=y
+CONFIG_MACH_BLUEANGEL_ASIC3_LEDS=y
+CONFIG_MACH_BLUEANGEL_KEYPAD=y
+CONFIG_MACH_BLUEANGEL_POWER=y
+CONFIG_MACH_BLUEANGEL_ROM=y
+CONFIG_MACH_BLUEANGEL_DPRAM=y
+CONFIG_MACH_BLUEANGEL_PHONE=m
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+CONFIG_PXA26x=y
+CONFIG_PXA_SSP=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IPAQ is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=m
+CONFIG_ACX_MEM=y
+CONFIG_ACX_HTCBLUEANGEL=m
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_ASIC3=y
+CONFIG_KEYBOARD_TSC2200=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_TSC2200=y
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_PXA_IR=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+CONFIG_TIHTC=m
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_MASTER_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - external power and batteries
+#
+CONFIG_EXTERNAL_POWER=y
+CONFIG_BATTERY=y
+CONFIG_PDA_POWER=y
+CONFIG_DS2760_BATTERY=y
+# CONFIG_ADC_BATTERY is not set
+CONFIG_APM_POWER=y
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+CONFIG_ADC_TSC2200_SSP=y
+# CONFIG_ADC_AD7877 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+CONFIG_SOC_TSC2200=y
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_SSP=m
+# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
+CONFIG_SND_PXA2XX_SOC_BLUEANGEL=m
+# CONFIG_SND_PXA2XX_SOC_H5000 is not set
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+CONFIG_SND_SOC_UDA1380=m
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_PXA2XX_GPIO=y
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
index eaffec6517..843e9cca66 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:38 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:37 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -257,6 +257,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -413,13 +414,13 @@ CONFIG_IRDA=y
CONFIG_IRLAN=y
# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -492,7 +493,8 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -730,9 +732,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-# CONFIG_TOUCHSCREEN_WM9712 is not set
-# CONFIG_TOUCHSCREEN_WM9713 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
@@ -885,21 +884,6 @@ CONFIG_APM_POWER=y
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-CONFIG_HTC_ASIC3=y
-CONFIG_HTC_ASIC3_DS1WM=y
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -915,6 +899,17 @@ CONFIG_ADC=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -1087,7 +1082,7 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
@@ -1229,8 +1224,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1321,7 +1315,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
new file mode 100644
index 0000000000..7d67d90052
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
@@ -0,0 +1,1269 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:39 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_COLLIE is not set
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA56X is not set
+# CONFIG_SA1100_JORNADA720 is not set
+CONFIG_SA1100_XDA=y
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+CONFIG_SA1100_USB=y
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_SA1100_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_IPAQ is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - external power and batteries
+#
+# CONFIG_EXTERNAL_POWER is not set
+# CONFIG_BATTERY is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_TSC2200_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_SA1100=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
index f17a7bc626..03266766ce 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:33 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:30 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -263,6 +263,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -419,13 +420,13 @@ CONFIG_IRDA=y
CONFIG_IRLAN=y
# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -502,7 +503,8 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
CONFIG_MTD_CONCAT=y
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -801,9 +803,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-# CONFIG_TOUCHSCREEN_WM9712 is not set
-# CONFIG_TOUCHSCREEN_WM9713 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
@@ -963,21 +962,6 @@ CONFIG_APM_POWER=y
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-CONFIG_HTC_ASIC3=y
-CONFIG_HTC_ASIC3_DS1WM=y
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -993,6 +977,17 @@ CONFIG_ADC_ADS7846_SSP=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -1173,7 +1168,7 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
@@ -1323,8 +1318,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1415,7 +1409,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
diff --git a/packages/linux/linux-handhelds-2.6/magician/defconfig b/packages/linux/linux-handhelds-2.6/magician/defconfig
index 3d25d76f83..745bba4712 100644
--- a/packages/linux/linux-handhelds-2.6/magician/defconfig
+++ b/packages/linux/linux-handhelds-2.6/magician/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Thu May 17 14:41:37 2007
+# Linux kernel version: 2.6.21-hh6
+# Mon Jun 11 09:57:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -164,12 +164,11 @@ CONFIG_BOARD_IRQ_MAP_SMALL=y
# CONFIG_MACH_HTCALPINE is not set
CONFIG_MACH_MAGICIAN=y
CONFIG_MAGICIAN_PM=y
-CONFIG_MAGICIAN_TS=y
+CONFIG_MAGICIAN_TS=m
CONFIG_MAGICIAN_LCD=y
CONFIG_MAGICIAN_CPLD=y
-# CONFIG_MAGICIAN_DS1WM is not set
-# CONFIG_MAGICIAN_PHONE is not set
-# CONFIG_MAGICIAN_FLASH is not set
+CONFIG_MAGICIAN_DS1WM=m
+CONFIG_MAGICIAN_PHONE=m
# CONFIG_MACH_HTCAPACHE is not set
# CONFIG_MACH_BLUEANGEL is not set
# CONFIG_MACH_HTCBEETLES is not set
@@ -186,6 +185,7 @@ CONFIG_MAGICIAN_CPLD=y
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA27x=y
+CONFIG_PXA_SSP=m
CONFIG_PXA_SUSPEND_SAVE_EXTRA_REGS=y
CONFIG_PXA27x_VOLTAGE=m
CONFIG_PXA27x_VOLTAGE_MAX158xx=m
@@ -254,6 +254,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -408,14 +409,15 @@ CONFIG_IRDA=y
# IrDA protocols
#
CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
@@ -444,7 +446,10 @@ CONFIG_IRTTY_SIR=y
#
# FIR device drivers
#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
CONFIG_PXA_FICP=y
+# CONFIG_MCS_FIR is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
@@ -458,7 +463,12 @@ CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_IEEE80211 is not set
@@ -485,8 +495,9 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
CONFIG_MTD_CMDLINE_PARTS=y
@@ -495,9 +506,10 @@ CONFIG_MTD_CMDLINE_PARTS=y
#
# User Modules And Translation Layers
#
-# CONFIG_MTD_CHAR is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -507,14 +519,10 @@ CONFIG_MTD_BLOCK=y
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI=m
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_GEN_PROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
@@ -525,11 +533,10 @@ CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_INTELEXT=m
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_CFI_UTIL=m
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -540,9 +547,12 @@ CONFIG_MTD_CFI_UTIL=y
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IPAQ=y
+# CONFIG_MTD_IPAQ is not set
# CONFIG_MTD_SHARP_SL is not set
# CONFIG_MTD_PLATRAM is not set
@@ -587,6 +597,7 @@ CONFIG_MTD_IPAQ=y
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -629,7 +640,55 @@ CONFIG_MTD_IPAQ=y
#
# Network device support
#
-# CONFIG_NETDEVICES is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -673,7 +732,17 @@ CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_NAVPOINT is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=m
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
@@ -701,11 +770,10 @@ CONFIG_HW_CONSOLE=y
# Non-8250 serial port support
#
CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
CONFIG_SERIAL_PXA_COUNT=4
CONFIG_SERIAL_PXA_IR=y
CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_RS232_SERIAL is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
@@ -725,7 +793,7 @@ CONFIG_LEGACY_PTY_COUNT=32
# CONFIG_SA1100_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
-# CONFIG_TIHTC is not set
+CONFIG_TIHTC=m
# CONFIG_RAW_DRIVER is not set
#
@@ -736,7 +804,42 @@ CONFIG_LEGACY_PTY_COUNT=32
#
# I2C support
#
-# CONFIG_I2C is not set
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
@@ -752,6 +855,8 @@ CONFIG_W1=y
#
# 1-wire Bus Masters
#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
CONFIG_W1_MASTER_DS1WM=y
#
@@ -784,21 +889,6 @@ CONFIG_APM_POWER=y
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
@@ -806,7 +896,7 @@ CONFIG_APM_POWER=y
# Multimedia Capabilities Port drivers
#
CONFIG_ADC=y
-# CONFIG_ADC_ADS7846_SSP is not set
+CONFIG_ADC_ADS7846_SSP=m
# CONFIG_ADC_TSC2200_SSP is not set
# CONFIG_ADC_AD7877 is not set
@@ -814,6 +904,17 @@ CONFIG_ADC=y
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# LED devices
@@ -844,6 +945,7 @@ CONFIG_LEDS_TRIGGER_SHARED=y
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
#
# Graphics support
@@ -907,13 +1009,13 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
@@ -933,11 +1035,60 @@ CONFIG_SND_VERBOSE_PROCFS=y
# ALSA ARM devices
#
# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
#
# SoC audio support
#
-# CONFIG_SND_SOC is not set
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_SSP=m
+CONFIG_SND_PXA2XX_SOC_MAGICIAN=m
+# CONFIG_SND_PXA2XX_SOC_BLUEANGEL is not set
+# CONFIG_SND_PXA2XX_SOC_H5000 is not set
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+CONFIG_SND_SOC_UDA1380=m
+# CONFIG_SND_SOC_AK4535 is not set
#
# Open Sound System
@@ -956,13 +1107,121 @@ CONFIG_HID=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
@@ -983,7 +1242,7 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
@@ -1022,8 +1281,14 @@ CONFIG_RTC_INTF_DEV=y
# RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_SA1100=y
# CONFIG_RTC_DRV_TEST is not set
@@ -1091,7 +1356,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_SUMMARY is not set
@@ -1126,8 +1391,7 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
@@ -1218,7 +1482,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_LIST is not set
@@ -1256,7 +1520,7 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_ECB is not set
+CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_CBC is not set
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
@@ -1269,7 +1533,7 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
+CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh2.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh5.bb
index b34d4630a0..b34d4630a0 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh2.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh5.bb
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh6.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh6.bb
new file mode 100644
index 0000000000..b34d4630a0
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh6.bb
@@ -0,0 +1,11 @@
+SECTION = "kernel"
+DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
+LICENSE = "GPL"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://defconfig"
+
+require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-magicbox_2.6.19.2.bb b/packages/linux/linux-magicbox_2.6.19.2.bb
index f76d39156f..438eaac478 100644
--- a/packages/linux/linux-magicbox_2.6.19.2.bb
+++ b/packages/linux/linux-magicbox_2.6.19.2.bb
@@ -1,7 +1,9 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
SECTION = "kernel"
DESCRIPTION = "Linux kernel for Magicbox ver 1.1 and 2.0 router boards"
LICENSE = "GPL"
-PR = "r1"
+PR = "r3"
DEPENDS = "u-boot"
COMPATIBLE_MACHINE = "magicbox"
@@ -86,16 +88,17 @@ do_stage_append () {
do_install_append () {
- install -d ${DEPLOY_DIR}/images
- install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
- install -m 0755 vmlinux ${DEPLOY_DIR}/images/
- powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
- gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
- cp -a ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/linux-${PV}-${MACHINE}-${DATETIME}.bin.gz
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ install -m 0755 vmlinux ${DEPLOY_DIR_IMAGE}/
+ powerpc${TARGET_VENDOR}-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR_IMAGE}/vmlinux \
+ ${DEPLOY_DIR_IMAGE}/linux.bin
+ gzip -f -9 ${DEPLOY_DIR_IMAGE}/linux.bin
+ cp -a ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/linux-${PV}-${MACHINE}-${DATETIME}.bin.gz
mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 -n "magicbox"-${PV} \
- -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm ${DEPLOY_DIR}/images/vmlinux
- rm ${DEPLOY_DIR}/images/linux.bin.gz
+ -d ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm ${DEPLOY_DIR_IMAGE}/vmlinux
+ rm ${DEPLOY_DIR_IMAGE}/linux.bin.gz
}
diff --git a/packages/linux/linux-mtx-1_2.4.27.bb b/packages/linux/linux-mtx-1_2.4.27.bb
index 09916c9022..512f3ac14d 100644
--- a/packages/linux/linux-mtx-1_2.4.27.bb
+++ b/packages/linux/linux-mtx-1_2.4.27.bb
@@ -43,6 +43,7 @@ S = "${WORKDIR}/linux"
inherit kernel
+COMPATIBLE_MACHINE = "mtx-1"
COMPATIBLE_HOST = "mipsel.*-linux"
ARCH = "mips"
KERNEL_OUTPUT = "arch/mips/zboot/images/mtx-1.flash.bin"
diff --git a/packages/linux/linux-mtx-1u_2.4.27.bb b/packages/linux/linux-mtx-1u_2.4.27.bb
index 8ab1c5bbd1..00132f54cd 100644
--- a/packages/linux/linux-mtx-1u_2.4.27.bb
+++ b/packages/linux/linux-mtx-1u_2.4.27.bb
@@ -1,5 +1,7 @@
include linux-mtx-1_2.4.27.bb
+COMPATIBLE_MACHINE = "mtx-1u"
+
PR = "r11"
SRC_URI += "\
diff --git a/packages/linux/linux-mtx-2_2.4.27.bb b/packages/linux/linux-mtx-2_2.4.27.bb
index 9a64ebb492..29c938a5c4 100644
--- a/packages/linux/linux-mtx-2_2.4.27.bb
+++ b/packages/linux/linux-mtx-2_2.4.27.bb
@@ -51,6 +51,7 @@ S = "${WORKDIR}/linux"
inherit kernel
+COMPATIBLE_MACHINE = "mtx-2"
COMPATIBLE_HOST = "mipsel.*-linux"
ARCH = "mips"
KERNEL_OUTPUT = "arch/mips/zboot/images/mtx-2.flash.bin"
diff --git a/packages/linux/linux-mtx-3_2.6.15.4.bb b/packages/linux/linux-mtx-3_2.6.15.4.bb
index fe523c879c..1bddcfdd3b 100644
--- a/packages/linux/linux-mtx-3_2.6.15.4.bb
+++ b/packages/linux/linux-mtx-3_2.6.15.4.bb
@@ -1,5 +1,4 @@
DESCRIPTION = "Linux kernel for MTX-3 (Surfbox3)"
-MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
HOMEPAGE = "http://meshcube.org/meshwiki/"
LICENSE = "GPL"
KV = "${PV}"
diff --git a/packages/linux/linux-mtx-3_2.6.15.bb b/packages/linux/linux-mtx-3_2.6.15.bb
index a5ea530425..3dba1fe6a0 100644
--- a/packages/linux/linux-mtx-3_2.6.15.bb
+++ b/packages/linux/linux-mtx-3_2.6.15.bb
@@ -1,5 +1,4 @@
DESCRIPTION = "Linux kernel for MTX-3 (Surfbox3)"
-MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
HOMEPAGE = "http://meshcube.org/meshwiki/"
LICENSE = "GPL"
KV = "${PV}"
@@ -18,6 +17,7 @@ S = "${WORKDIR}/linux"
inherit kernel
+COMPATIBLE_MACHINE = "mtx-3"
COMPATIBLE_HOST = "arm.*-linux"
ARCH = "arm"
KERNEL_OUTPUT = "arch/arm/zboot/images/mtx-3.flash.bin"
diff --git a/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi b/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi
index a47a7b004d..640e5e349a 100644
--- a/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi
+++ b/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20-omap1
-# Thu Mar 1 14:34:27 2007
+# Mon Apr 30 16:19:37 2007
#
CONFIG_ARM=y
CONFIG_GENERIC_TIME=y
@@ -520,6 +520,7 @@ CONFIG_BLK_DEV_IDECS=m
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
#
@@ -535,8 +536,52 @@ CONFIG_BLK_DEV_IDECS=m
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
+CONFIG_SCSI=m
+# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -1017,6 +1062,18 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
#
# may also be needed; see USB_STORAGE Help for more information
#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set
#
@@ -1046,6 +1103,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
#
# USB Network Adapters
@@ -1065,7 +1123,45 @@ CONFIG_USB_MON=y
#
# USB Serial Converter support
#
-# CONFIG_USB_SERIAL is not set
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+CONFIG_USB_SERIAL_IR=m
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-collie b/packages/linux/linux-rp-2.6.20/defconfig-collie
index 945f2fb39c..1c6c0be8cc 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-collie
+++ b/packages/linux/linux-rp-2.6.20/defconfig-collie
@@ -254,7 +254,7 @@ CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=m
+CONFIG_APM=y
#
# Networking
@@ -1394,7 +1394,7 @@ CONFIG_USB_EZUSB=y
#
# USB Gadget Support
#
-CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
index 8da37cbcd6..9ef9413641 100644
--- a/packages/linux/linux-rp_2.6.20.bb
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r16"
+PR = "r17"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -80,7 +80,6 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
SRC_URI_append_collie = "\
${TKSRC}/mtd-sharp-flash-hack-r2.patch;patch=1 \
- ${TKSRC}/collie-r3.patch;patch=1 \
${TKSRC}/ucb1x00-touch-audio-r1.patch;patch=1 \
${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
${TKSRC}/sa1100-udc-r2.patch;patch=1 \
@@ -88,6 +87,11 @@ SRC_URI_append_collie = "\
${TKSRC}/locomo-r0.patch;patch=1 \
${TKSRC}/collie-kexec.patch;patch=1 \
${TKSRC}/locomo_spi-r3.patch;patch=1 \
+ ${TKSRC}/sharpsl_pm.patch;patch=1 \
+ ${TKSRC}/collie_pm-2.patch;patch=1 \
+ ${TKSRC}/locomokeyb_suspendkey.patch;patch=1 \
+ ${TKSRC}/pcmcia_suspend.patch;patch=1 \
+ ${TKSRC}/ucb1x00_suspend.patch;patch=1 \
"
SRC_URI_append_tosa = "\
diff --git a/packages/linux/linux-sequoia-2.6.21/.mtn2git_empty b/packages/linux/linux-sequoia-2.6.21/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-sequoia-2.6.21/.mtn2git_empty
diff --git a/packages/linux/linux-sequoia_2.6.21.bb b/packages/linux/linux-sequoia_2.6.21.bb
new file mode 100644
index 0000000000..1fa520e914
--- /dev/null
+++ b/packages/linux/linux-sequoia_2.6.21.bb
@@ -0,0 +1,60 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for AMCC's Sequoia dev board"
+LICENSE = "GPL"
+PR = "r0"
+#DEPENDS = "u-boot"
+
+COMPATIBLE_MACHINE = "sequoia"
+
+#DENX git kernel
+#Same as in AMCC's sequoia dev kit
+SRC_URI ="git://www.denx.de/git/linux-2.6-denx.git;protocol=git;tag=78157a82fa20719f7e3307307755888e9af2c0e9 \
+ file://sequoia_defconfig "
+
+
+S = "${WORKDIR}/git"
+
+inherit kernel
+
+export ARCH="ppc"
+
+KERNEL_IMAGETYPE = "zImage.elf"
+
+do_configure() {
+ install -m 644 ${WORKDIR}/sequoia_defconfig ${S}/.config
+ make ARCH=${ARCH} oldconfig
+}
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers a$
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ install -d ${STAGING_KERNEL_DIR}/include/asm
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE} \
+ ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+#seems like 2.6.21 kernel images have moved (or is this only for the Denx kernel ?)
+#so we need to copy the kernel image where kernel.bbclass expects it to be
+do_install_prepend() {
+ install -m 0644 arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE} \
+ arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
diff --git a/packages/linux/linux-tornado-omap2_2.6.16.16.bb b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
index 2115a275ef..f76442401f 100644
--- a/packages/linux/linux-tornado-omap2_2.6.16.16.bb
+++ b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
@@ -12,6 +12,8 @@ S = "${WORKDIR}/linux-2.6.16"
inherit kernel
+COMPATIBLE_MACHINE = "htctornado"
+
do_configure() {
rm -f ${S}/.config
diff --git a/packages/linux/linux-x86-2.6.20/defconfig b/packages/linux/linux-x86-2.6.20/i486-defconfig
index ed299d667d..2b7dc6a3f7 100644
--- a/packages/linux/linux-x86-2.6.20/defconfig
+++ b/packages/linux/linux-x86-2.6.20/i486-defconfig
@@ -702,7 +702,7 @@ CONFIG_S2IO=m
#
# Wireless LAN (non-hamradio)
#
-CONFIG_NET_RADIO=y
+# CONFIG_NET_RADIO is not set
#
# Wan interfaces
diff --git a/packages/linux/linux-x86-2.6.20/i586-defconfig b/packages/linux/linux-x86-2.6.20/i586-defconfig
new file mode 100644
index 0000000000..b06f535e7b
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/i586-defconfig
@@ -0,0 +1,2705 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Sat May 26 01:56:02 2007
+#
+CONFIG_X86_32=y
+CONFIG_GENERIC_TIME=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_CPUSETS is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_SMP=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_PARAVIRT is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+CONFIG_M586=y
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_GENERIC is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_HPET_TIMER=y
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCE_NONFATAL is not set
+# CONFIG_X86_MCE_P4THERMAL is not set
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
+# CONFIG_HIGHMEM64G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
+# CONFIG_HIGHPTE is not set
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_IRQBALANCE=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+# CONFIG_HOTPLUG_CPU is not set
+CONFIG_COMPAT_VDSO=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=m
+# CONFIG_ACPI_HOTKEY is not set
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_IBM=m
+# CONFIG_ACPI_IBM_DOCK is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_SBS=m
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCIEPORTBUS=y
+# CONFIG_HOTPLUG_PCI_PCIE is not set
+CONFIG_PCIEAER=y
+# CONFIG_PCI_MSI is not set
+CONFIG_HT_IRQ=y
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+# CONFIG_MCA is not set
+CONFIG_SCx200=m
+CONFIG_SCx200HR_TIMER=m
+CONFIG_K8_NB=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_SHPC=m
+# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=y
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=y
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_RAM=y
+CONFIG_MTD_ROM=y
+CONFIG_MTD_ABSENT=y
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_TS5500 is not set
+# CONFIG_MTD_AMD76XROM is not set
+# CONFIG_MTD_ICHXROM is not set
+# CONFIG_MTD_ESB2ROM is not set
+# CONFIG_MTD_CK804XROM is not set
+# CONFIG_MTD_SCB2_FLASH is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+# CONFIG_MTD_PMC551_BUGFIX is not set
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_DATAFLASH=m
+CONFIG_MTD_M25P80=m
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLOCK2MTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_DISKONCHIP=y
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+CONFIG_MTD_NAND_CAFE=y
+CONFIG_MTD_NAND_CS553X=y
+
+#
+# OneNAND Flash Device Drivers
+#
+CONFIG_MTD_ONENAND=m
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_OTP is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_PC_PCMCIA is not set
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PARPORT_NOT_PC=y
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_PARIDE=m
+CONFIG_PARIDE_PARPORT=y
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_BPCK6=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+# CONFIG_PARIDE_EPATC8 is not set
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_SX8=m
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+# CONFIG_MSI_LAPTOP is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_BLK_DEV_IDECS is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_AEC62XX=y
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+CONFIG_BLK_DEV_AMD74XX=y
+CONFIG_BLK_DEV_ATIIXP=y
+CONFIG_BLK_DEV_CMD64X=y
+CONFIG_BLK_DEV_TRIFLEX=y
+CONFIG_BLK_DEV_CY82C693=y
+CONFIG_BLK_DEV_CS5520=y
+CONFIG_BLK_DEV_CS5530=y
+CONFIG_BLK_DEV_CS5535=y
+CONFIG_BLK_DEV_HPT34X=y
+# CONFIG_HPT34X_AUTODMA is not set
+CONFIG_BLK_DEV_HPT366=y
+CONFIG_BLK_DEV_JMICRON=y
+CONFIG_BLK_DEV_SC1200=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_BLK_DEV_IT821X=y
+CONFIG_BLK_DEV_NS87415=y
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+# CONFIG_PDC202XX_BURST is not set
+CONFIG_BLK_DEV_PDC202XX_NEW=y
+CONFIG_BLK_DEV_SVWKS=y
+CONFIG_BLK_DEV_SIIMAGE=y
+CONFIG_BLK_DEV_SIS5513=y
+CONFIG_BLK_DEV_SLC90E66=y
+CONFIG_BLK_DEV_TRM290=y
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_SCH=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC7XXX_OLD=m
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=5000
+# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
+CONFIG_AIC79XX_DEBUG_ENABLE=y
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC94XX=m
+CONFIG_AIC94XX_DEBUG=y
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_ARCMSR=m
+# CONFIG_MEGARAID_NEWGEN is not set
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_OMIT_FLASHPOINT is not set
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+# CONFIG_SCSI_IPR is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_SRP=m
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_MV=y
+CONFIG_SATA_NV=y
+CONFIG_PDC_ADMA=y
+CONFIG_SATA_QSTOR=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SX4=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIL24=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_ULI=y
+CONFIG_SATA_VIA=y
+CONFIG_SATA_VITESSE=y
+CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_ALI=y
+CONFIG_PATA_AMD=y
+CONFIG_PATA_ARTOP=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_CMD64X=y
+CONFIG_PATA_CS5520=y
+CONFIG_PATA_CS5530=y
+CONFIG_PATA_CS5535=y
+CONFIG_PATA_CYPRESS=y
+CONFIG_PATA_EFAR=y
+CONFIG_ATA_GENERIC=y
+CONFIG_PATA_HPT366=y
+CONFIG_PATA_HPT37X=y
+CONFIG_PATA_HPT3X2N=y
+CONFIG_PATA_HPT3X3=y
+CONFIG_PATA_IT821X=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_TRIFLEX=y
+CONFIG_PATA_MARVELL=y
+CONFIG_PATA_MPIIX=y
+CONFIG_PATA_OLDPIIX=y
+CONFIG_PATA_NETCELL=y
+CONFIG_PATA_NS87410=y
+CONFIG_PATA_OPTI=y
+CONFIG_PATA_OPTIDMA=y
+# CONFIG_PATA_PCMCIA is not set
+CONFIG_PATA_PDC_OLD=y
+CONFIG_PATA_RADISYS=y
+CONFIG_PATA_RZ1000=y
+CONFIG_PATA_SC1200=y
+CONFIG_PATA_SERVERWORKS=y
+CONFIG_PATA_PDC2027X=y
+CONFIG_PATA_SIL680=y
+CONFIG_PATA_SIS=y
+CONFIG_PATA_VIA=y
+CONFIG_PATA_WINBOND=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_NET_SB1000=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_FIXED_PHY=m
+# CONFIG_FIXED_MII_10_FDX is not set
+# CONFIG_FIXED_MII_100_FDX is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+# CONFIG_PCMCIA_XIRCOM is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VIA_RHINE_NAPI is not set
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_IPW2100=m
+# CONFIG_IPW2100_MONITOR is not set
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+# CONFIG_IPW2200_MONITOR is not set
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+# CONFIG_PCI_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_PCMCIA_HERMES is not set
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_ATMEL is not set
+# CONFIG_PCMCIA_WL3501 is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+# CONFIG_HOSTAP_CS is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+# CONFIG_ISDN_I4L is not set
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+# CONFIG_ISDN_DIVAS_BRIPCI is not set
+# CONFIG_ISDN_DIVAS_PRIPCI is not set
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_HW_RANDOM_VIA=m
+# CONFIG_NVRAM is not set
+CONFIG_RTC=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+CONFIG_AGP=y
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+CONFIG_MWAVE=m
+# CONFIG_SCx200_GPIO is not set
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_CS5535_GPIO=m
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+CONFIG_HANGCHECK_TIMER=m
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_TELCLOCK=m
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_I810=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_ISA=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_SCx200_ACB=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_STUB=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=m
+CONFIG_SENSORS_DS1374=m
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_BUTTERFLY=m
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT848_DVB is not set
+CONFIG_VIDEO_SAA6588=m
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+# CONFIG_VIDEO_SAA7134_OSS is not set
+# CONFIG_VIDEO_SAA7134_DVB is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+# CONFIG_VIDEO_CX88_DVB is not set
+CONFIG_VIDEO_CAFE_CCIC=m
+
+#
+# V4L USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+# CONFIG_VIDEO_PVRUSB2_29XXX is not set
+# CONFIG_VIDEO_PVRUSB2_24XXX is not set
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+CONFIG_DVB_FE_CUSTOMISE=y
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUNER_MT2060=m
+CONFIG_DVB_TUNER_LGH06XF=m
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_TUA6100=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+CONFIG_FB_DDC=m
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=y
+CONFIG_FB_VESA=y
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+# CONFIG_FB_NVIDIA_I2C is not set
+CONFIG_FB_RIVA=m
+# CONFIG_FB_RIVA_I2C is not set
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_I810=m
+# CONFIG_FB_I810_GTF is not set
+CONFIG_FB_INTEL=m
+# CONFIG_FB_INTEL_DEBUG is not set
+CONFIG_FB_INTEL_I2C=y
+CONFIG_FB_MATROX=m
+# CONFIG_FB_MATROX_MILLENIUM is not set
+# CONFIG_FB_MATROX_MYSTIQUE is not set
+# CONFIG_FB_MATROX_G is not set
+CONFIG_FB_MATROX_I2C=m
+# CONFIG_FB_MATROX_MULTIHEAD is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY=m
+# CONFIG_FB_ATY_CT is not set
+# CONFIG_FB_ATY_GX is not set
+CONFIG_FB_SAVAGE=m
+# CONFIG_FB_SAVAGE_I2C is not set
+# CONFIG_FB_SAVAGE_ACCEL is not set
+CONFIG_FB_SIS=m
+# CONFIG_FB_SIS_300 is not set
+# CONFIG_FB_SIS_315 is not set
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+# CONFIG_FB_3DFX_ACCEL is not set
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_CYBLA=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_TRIDENT_ACCEL is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_GX=m
+# CONFIG_FB_GEODE_GX_SET_FBSIZE is not set
+CONFIG_FB_GEODE_GX1=m
+CONFIG_FB_VIRTUAL=m
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_RTCTIMER=m
+CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+# CONFIG_SND_FM801_TEA575X_BOOL is not set
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=y
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=y
+CONFIG_SOUND_BT878=m
+CONFIG_SOUND_ES1371=m
+CONFIG_SOUND_ICH=m
+CONFIG_SOUND_TRIDENT=m
+CONFIG_SOUND_MSNDCLAS=m
+CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
+CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
+CONFIG_SOUND_MSNDPIN=m
+CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
+CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
+CONFIG_SOUND_VIA82CXXX=m
+# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+CONFIG_SOUND_CS4232=m
+CONFIG_SOUND_SSCAPE=m
+CONFIG_SOUND_VMIDI=m
+CONFIG_SOUND_TRIX=m
+CONFIG_SOUND_MSS=m
+CONFIG_SOUND_MPU401=m
+CONFIG_SOUND_PAS=m
+CONFIG_SOUND_PSS=m
+# CONFIG_PSS_MIXER is not set
+CONFIG_SOUND_SB=m
+CONFIG_SOUND_YM3812=m
+CONFIG_SOUND_UART6850=m
+CONFIG_SOUND_AEDSP16=m
+# CONFIG_SC6600 is not set
+# CONFIG_AEDSP16_MSS is not set
+# CONFIG_AEDSP16_SBPRO is not set
+# CONFIG_AEDSP16_MPU401 is not set
+CONFIG_SOUND_TVMIXER=m
+CONFIG_SOUND_KAHLUA=m
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_ISP116X_HCD=y
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_SL811_HCD=y
+# CONFIG_USB_SL811_CS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT_POWERBOOK=y
+CONFIG_HID_FF=y
+CONFIG_HID_PID=y
+CONFIG_LOGITECH_FF=y
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_ACECAD=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+CONFIG_USB_TOUCHSCREEN_DMC_TSC10=y
+CONFIG_USB_YEALINK=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+CONFIG_USB_APPLETOUCH=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_DEBUG=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_TEST=m
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_MIDI_GADGET=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC_TIFM_SD=m
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+
+#
+# InfiniBand support
+#
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+CONFIG_EDAC=m
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_POLL=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_TEST=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_V3020=m
+
+#
+# DMA Engine support
+#
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+
+#
+# Virtualization
+#
+# CONFIG_KVM is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+CONFIG_9P_FS=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+CONFIG_DLM=m
+CONFIG_DLM_TCP=y
+# CONFIG_DLM_SCTP is not set
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Instrumentation Support
+#
+# CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_586=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_586=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-x86-2.6.20/i686-defconfig b/packages/linux/linux-x86-2.6.20/i686-defconfig
new file mode 100644
index 0000000000..b06f535e7b
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/i686-defconfig
@@ -0,0 +1,2705 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Sat May 26 01:56:02 2007
+#
+CONFIG_X86_32=y
+CONFIG_GENERIC_TIME=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_CPUSETS is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_SMP=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_PARAVIRT is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+CONFIG_M586=y
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_GENERIC is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_HPET_TIMER=y
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCE_NONFATAL is not set
+# CONFIG_X86_MCE_P4THERMAL is not set
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
+# CONFIG_HIGHMEM64G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
+# CONFIG_HIGHPTE is not set
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_IRQBALANCE=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+# CONFIG_HOTPLUG_CPU is not set
+CONFIG_COMPAT_VDSO=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=m
+# CONFIG_ACPI_HOTKEY is not set
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_IBM=m
+# CONFIG_ACPI_IBM_DOCK is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_SBS=m
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCIEPORTBUS=y
+# CONFIG_HOTPLUG_PCI_PCIE is not set
+CONFIG_PCIEAER=y
+# CONFIG_PCI_MSI is not set
+CONFIG_HT_IRQ=y
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+# CONFIG_MCA is not set
+CONFIG_SCx200=m
+CONFIG_SCx200HR_TIMER=m
+CONFIG_K8_NB=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_SHPC=m
+# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=y
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=y
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_RAM=y
+CONFIG_MTD_ROM=y
+CONFIG_MTD_ABSENT=y
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_TS5500 is not set
+# CONFIG_MTD_AMD76XROM is not set
+# CONFIG_MTD_ICHXROM is not set
+# CONFIG_MTD_ESB2ROM is not set
+# CONFIG_MTD_CK804XROM is not set
+# CONFIG_MTD_SCB2_FLASH is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+# CONFIG_MTD_PMC551_BUGFIX is not set
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_DATAFLASH=m
+CONFIG_MTD_M25P80=m
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLOCK2MTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_DISKONCHIP=y
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+CONFIG_MTD_NAND_CAFE=y
+CONFIG_MTD_NAND_CS553X=y
+
+#
+# OneNAND Flash Device Drivers
+#
+CONFIG_MTD_ONENAND=m
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_OTP is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_PC_PCMCIA is not set
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PARPORT_NOT_PC=y
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_PARIDE=m
+CONFIG_PARIDE_PARPORT=y
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_BPCK6=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+# CONFIG_PARIDE_EPATC8 is not set
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_SX8=m
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+# CONFIG_MSI_LAPTOP is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_BLK_DEV_IDECS is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_AEC62XX=y
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+CONFIG_BLK_DEV_AMD74XX=y
+CONFIG_BLK_DEV_ATIIXP=y
+CONFIG_BLK_DEV_CMD64X=y
+CONFIG_BLK_DEV_TRIFLEX=y
+CONFIG_BLK_DEV_CY82C693=y
+CONFIG_BLK_DEV_CS5520=y
+CONFIG_BLK_DEV_CS5530=y
+CONFIG_BLK_DEV_CS5535=y
+CONFIG_BLK_DEV_HPT34X=y
+# CONFIG_HPT34X_AUTODMA is not set
+CONFIG_BLK_DEV_HPT366=y
+CONFIG_BLK_DEV_JMICRON=y
+CONFIG_BLK_DEV_SC1200=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_BLK_DEV_IT821X=y
+CONFIG_BLK_DEV_NS87415=y
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+# CONFIG_PDC202XX_BURST is not set
+CONFIG_BLK_DEV_PDC202XX_NEW=y
+CONFIG_BLK_DEV_SVWKS=y
+CONFIG_BLK_DEV_SIIMAGE=y
+CONFIG_BLK_DEV_SIS5513=y
+CONFIG_BLK_DEV_SLC90E66=y
+CONFIG_BLK_DEV_TRM290=y
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_SCH=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC7XXX_OLD=m
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=5000
+# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
+CONFIG_AIC79XX_DEBUG_ENABLE=y
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC94XX=m
+CONFIG_AIC94XX_DEBUG=y
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_ARCMSR=m
+# CONFIG_MEGARAID_NEWGEN is not set
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_OMIT_FLASHPOINT is not set
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+# CONFIG_SCSI_IPR is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_SRP=m
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_MV=y
+CONFIG_SATA_NV=y
+CONFIG_PDC_ADMA=y
+CONFIG_SATA_QSTOR=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SX4=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIL24=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_ULI=y
+CONFIG_SATA_VIA=y
+CONFIG_SATA_VITESSE=y
+CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_ALI=y
+CONFIG_PATA_AMD=y
+CONFIG_PATA_ARTOP=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_CMD64X=y
+CONFIG_PATA_CS5520=y
+CONFIG_PATA_CS5530=y
+CONFIG_PATA_CS5535=y
+CONFIG_PATA_CYPRESS=y
+CONFIG_PATA_EFAR=y
+CONFIG_ATA_GENERIC=y
+CONFIG_PATA_HPT366=y
+CONFIG_PATA_HPT37X=y
+CONFIG_PATA_HPT3X2N=y
+CONFIG_PATA_HPT3X3=y
+CONFIG_PATA_IT821X=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_TRIFLEX=y
+CONFIG_PATA_MARVELL=y
+CONFIG_PATA_MPIIX=y
+CONFIG_PATA_OLDPIIX=y
+CONFIG_PATA_NETCELL=y
+CONFIG_PATA_NS87410=y
+CONFIG_PATA_OPTI=y
+CONFIG_PATA_OPTIDMA=y
+# CONFIG_PATA_PCMCIA is not set
+CONFIG_PATA_PDC_OLD=y
+CONFIG_PATA_RADISYS=y
+CONFIG_PATA_RZ1000=y
+CONFIG_PATA_SC1200=y
+CONFIG_PATA_SERVERWORKS=y
+CONFIG_PATA_PDC2027X=y
+CONFIG_PATA_SIL680=y
+CONFIG_PATA_SIS=y
+CONFIG_PATA_VIA=y
+CONFIG_PATA_WINBOND=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_NET_SB1000=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_FIXED_PHY=m
+# CONFIG_FIXED_MII_10_FDX is not set
+# CONFIG_FIXED_MII_100_FDX is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+# CONFIG_PCMCIA_XIRCOM is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VIA_RHINE_NAPI is not set
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_IPW2100=m
+# CONFIG_IPW2100_MONITOR is not set
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+# CONFIG_IPW2200_MONITOR is not set
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+# CONFIG_PCI_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_PCMCIA_HERMES is not set
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_ATMEL is not set
+# CONFIG_PCMCIA_WL3501 is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+# CONFIG_HOSTAP_CS is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+# CONFIG_ISDN_I4L is not set
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+# CONFIG_ISDN_DIVAS_BRIPCI is not set
+# CONFIG_ISDN_DIVAS_PRIPCI is not set
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_HW_RANDOM_VIA=m
+# CONFIG_NVRAM is not set
+CONFIG_RTC=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+CONFIG_AGP=y
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+CONFIG_MWAVE=m
+# CONFIG_SCx200_GPIO is not set
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_CS5535_GPIO=m
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+CONFIG_HANGCHECK_TIMER=m
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_TELCLOCK=m
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_I810=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_ISA=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_SCx200_ACB=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_STUB=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=m
+CONFIG_SENSORS_DS1374=m
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_BUTTERFLY=m
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT848_DVB is not set
+CONFIG_VIDEO_SAA6588=m
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+# CONFIG_VIDEO_SAA7134_OSS is not set
+# CONFIG_VIDEO_SAA7134_DVB is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+# CONFIG_VIDEO_CX88_DVB is not set
+CONFIG_VIDEO_CAFE_CCIC=m
+
+#
+# V4L USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+# CONFIG_VIDEO_PVRUSB2_29XXX is not set
+# CONFIG_VIDEO_PVRUSB2_24XXX is not set
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+CONFIG_DVB_FE_CUSTOMISE=y
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUNER_MT2060=m
+CONFIG_DVB_TUNER_LGH06XF=m
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_TUA6100=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+CONFIG_FB_DDC=m
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=y
+CONFIG_FB_VESA=y
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+# CONFIG_FB_NVIDIA_I2C is not set
+CONFIG_FB_RIVA=m
+# CONFIG_FB_RIVA_I2C is not set
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_I810=m
+# CONFIG_FB_I810_GTF is not set
+CONFIG_FB_INTEL=m
+# CONFIG_FB_INTEL_DEBUG is not set
+CONFIG_FB_INTEL_I2C=y
+CONFIG_FB_MATROX=m
+# CONFIG_FB_MATROX_MILLENIUM is not set
+# CONFIG_FB_MATROX_MYSTIQUE is not set
+# CONFIG_FB_MATROX_G is not set
+CONFIG_FB_MATROX_I2C=m
+# CONFIG_FB_MATROX_MULTIHEAD is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY=m
+# CONFIG_FB_ATY_CT is not set
+# CONFIG_FB_ATY_GX is not set
+CONFIG_FB_SAVAGE=m
+# CONFIG_FB_SAVAGE_I2C is not set
+# CONFIG_FB_SAVAGE_ACCEL is not set
+CONFIG_FB_SIS=m
+# CONFIG_FB_SIS_300 is not set
+# CONFIG_FB_SIS_315 is not set
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+# CONFIG_FB_3DFX_ACCEL is not set
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_CYBLA=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_TRIDENT_ACCEL is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_GX=m
+# CONFIG_FB_GEODE_GX_SET_FBSIZE is not set
+CONFIG_FB_GEODE_GX1=m
+CONFIG_FB_VIRTUAL=m
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_RTCTIMER=m
+CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+# CONFIG_SND_FM801_TEA575X_BOOL is not set
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=y
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=y
+CONFIG_SOUND_BT878=m
+CONFIG_SOUND_ES1371=m
+CONFIG_SOUND_ICH=m
+CONFIG_SOUND_TRIDENT=m
+CONFIG_SOUND_MSNDCLAS=m
+CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
+CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
+CONFIG_SOUND_MSNDPIN=m
+CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
+CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
+CONFIG_SOUND_VIA82CXXX=m
+# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+CONFIG_SOUND_CS4232=m
+CONFIG_SOUND_SSCAPE=m
+CONFIG_SOUND_VMIDI=m
+CONFIG_SOUND_TRIX=m
+CONFIG_SOUND_MSS=m
+CONFIG_SOUND_MPU401=m
+CONFIG_SOUND_PAS=m
+CONFIG_SOUND_PSS=m
+# CONFIG_PSS_MIXER is not set
+CONFIG_SOUND_SB=m
+CONFIG_SOUND_YM3812=m
+CONFIG_SOUND_UART6850=m
+CONFIG_SOUND_AEDSP16=m
+# CONFIG_SC6600 is not set
+# CONFIG_AEDSP16_MSS is not set
+# CONFIG_AEDSP16_SBPRO is not set
+# CONFIG_AEDSP16_MPU401 is not set
+CONFIG_SOUND_TVMIXER=m
+CONFIG_SOUND_KAHLUA=m
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_ISP116X_HCD=y
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_SL811_HCD=y
+# CONFIG_USB_SL811_CS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT_POWERBOOK=y
+CONFIG_HID_FF=y
+CONFIG_HID_PID=y
+CONFIG_LOGITECH_FF=y
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_ACECAD=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+CONFIG_USB_TOUCHSCREEN_DMC_TSC10=y
+CONFIG_USB_YEALINK=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+CONFIG_USB_APPLETOUCH=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_DEBUG=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_TEST=m
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_MIDI_GADGET=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC_TIFM_SD=m
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+
+#
+# InfiniBand support
+#
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+CONFIG_EDAC=m
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_POLL=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_TEST=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_V3020=m
+
+#
+# DMA Engine support
+#
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+
+#
+# Virtualization
+#
+# CONFIG_KVM is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+CONFIG_9P_FS=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+CONFIG_DLM=m
+CONFIG_DLM_TCP=y
+# CONFIG_DLM_SCTP is not set
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Instrumentation Support
+#
+# CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_586=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_586=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-x86_2.6.20.bb b/packages/linux/linux-x86_2.6.20.bb
index c73ee58d2f..ef5a451af0 100644
--- a/packages/linux/linux-x86_2.6.20.bb
+++ b/packages/linux/linux-x86_2.6.20.bb
@@ -1,10 +1,14 @@
DESCRIPTION = "Linux Kernel for x86 compatible machines"
SECTION = "kernel"
LICENSE = "GPL"
-PR = "r2"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 "
+
+SRC_URI_append_x86 = "file://i486-defconfig"
+SRC_URI_append_i586-generic = "file://i586-defconfig"
+SRC_URI_append_i686-generic = "file://i686-defconfig"
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://defconfig"
S = "${WORKDIR}/linux-${PV}"
@@ -13,15 +17,15 @@ inherit kernel
COMPATIBLE_HOST = "i.86.*-linux"
KERNEL_IMAGETYPE = "bzImage"
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+do_configure_prepend_x86() {
+ install -m 0644 ${WORKDIR}/i486-defconfig ${S}/.config
}
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/i386/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
-}
+do_configure_prepend_i586-generic() {
+ install -m 0644 ${WORKDIR}/i586-defconfig ${S}/.config
+}
-do_deploy[dirs] = "${S}"
+do_configure_prepend_i686() {
+ install -m 0644 ${WORKDIR}/i686-defconfig ${S}/.config
+}
-addtask deploy before do_populate_staging after do_compile
diff --git a/packages/linux/linux/at32stk1000/.mtn2git_empty b/packages/linux/linux/at32stk1000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/at32stk1000/.mtn2git_empty
diff --git a/packages/linux/linux/at32stk1000/defconfig b/packages/linux/linux/at32stk1000/defconfig
new file mode 100644
index 0000000000..290dce50c5
--- /dev/null
+++ b/packages/linux/linux/at32stk1000/defconfig
@@ -0,0 +1,849 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Sat Jun 2 10:40:44 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+# CONFIG_TASK_XACCT is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+CONFIG_BOARD_ATSTK1002=y
+CONFIG_BOARD_ATSTK1000=y
+CONFIG_LOADER_U_BOOT=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+# CONFIG_OWNERSHIP_TRACE is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Bus options
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=m
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux/kb9202/.mtn2git_empty b/packages/linux/linux/kb9202/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/kb9202/.mtn2git_empty
diff --git a/packages/linux/linux/kb9202/defconfig b/packages/linux/linux/kb9202/defconfig
new file mode 100644
index 0000000000..c16537d9d6
--- /dev/null
+++ b/packages/linux/linux/kb9202/defconfig
@@ -0,0 +1,780 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.13-rc2
+# Sun Aug 14 19:26:59 2005
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+# CONFIG_EXPERIMENTAL is not set
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_SWAP is not set
+# CONFIG_SYSVIPC is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+# CONFIG_KOBJECT_UEVENT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91RM9200=y
+
+#
+# AT91RM9200 Implementations
+#
+# CONFIG_ARCH_AT91RM9200DK is not set
+# CONFIG_MACH_AT91RM9200EK is not set
+# CONFIG_MACH_CSB337 is not set
+# CONFIG_MACH_CSB637 is not set
+# CONFIG_MACH_CARMEVA is not set
+CONFIG_MACH_KB9200=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x10000000
+CONFIG_ZBOOT_ROM_BSS=0x20040000
+CONFIG_ZBOOT_ROM=y
+CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933"
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+CONFIG_DEBUG_DRIVER=y
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=y
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_IP_TCPDIAG is not set
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_ARM_AT91_ETHER=y
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_AT91RM9200_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_AT91_SPI is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=y
+CONFIG_USB_DEBUG=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE_DEBUG=y
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+
+#
+# XFS support
+#
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_DEVPTS_FS_XATTR=y
+# CONFIG_DEVPTS_FS_SECURITY is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
diff --git a/packages/linux/linux_2.6.21.bb b/packages/linux/linux_2.6.21.bb
index d801f88507..c608fe3378 100644
--- a/packages/linux/linux_2.6.21.bb
+++ b/packages/linux/linux_2.6.21.bb
@@ -1,9 +1,12 @@
DESCRIPTION = "Linux Kernel"
SECTION = "kernel"
LICENSE = "GPL"
+DEPENDS_kb9202 = "u-boot"
+PR = "r3"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://defconfig"
+ file://defconfig \
+ "
SRC_URI_append_simpad = "\
file://linux-2.6.21-SIMpad-cs3-simpad.patch;patch=1 \
@@ -12,12 +15,28 @@ SRC_URI_append_simpad = "\
file://linux-2.6.21-SIMpad-ucb1x00-switches.patch;patch=1 \
file://linux-2.6.21-pcmcia-device-to-platform-driver.patch;patch=1 \
"
+SRC_URI_append_kb9202 = "http://maxim.org.za/AT91RM9200/2.6/2.6.21-at91.patch.gz;patch=1"
inherit kernel
+KERNEL_IMAGETYPE_progear = "bzImage"
KERNEL_IMAGETYPE_simpad = "zImage"
+KERNEL_IMAGETYPE_kb9202 = "uImage"
+KERNEL_IMAGETYPE_at32stk1000 = "uImage"
do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ '${WORKDIR}/defconfig' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
}
diff --git a/packages/linux/unslung-kernel/defconfig b/packages/linux/unslung-kernel/defconfig
index a5ad6094ae..03247f74b5 100644
--- a/packages/linux/unslung-kernel/defconfig
+++ b/packages/linux/unslung-kernel/defconfig
@@ -758,11 +758,11 @@ CONFIG_SCSI_MULTI_LUN=y
#
# Input core support
#
-# CONFIG_INPUT is not set
+CONFIG_INPUT=m
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=m
#
# Character devices
@@ -1126,13 +1126,13 @@ CONFIG_USB_PRINTER=m
#
# USB Human Interface Devices (HID)
#
-# CONFIG_USB_HID is not set
+CONFIG_USB_HID=m
#
# Input core support is needed for USB HID input layer or HIDBP support
#
-# CONFIG_USB_HIDINPUT is not set
-# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_HIDINPUT=y
+CONFIG_USB_HIDDEV=y
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
# CONFIG_USB_AIPTEK is not set
diff --git a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
index df3141725c..cb3f9be78b 100644
--- a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
+++ b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
@@ -1,7 +1,7 @@
SECTION = "kernel"
DESCRIPTION = "Vendor-compatible Linux kernel for the Linksys NSLU2 device"
LICENSE = "GPL"
-PR = "r18"
+PR = "r19"
COMPATIBLE_HOST = 'arm.*-linux'
COMPATIBLE_MACHINE = "nslu2"
diff --git a/packages/linux/xanadux-ba-2.6_2.6.12.bb b/packages/linux/xanadux-ba-2.6_2.6.12.bb
index c7f73fb37b..ee58d36434 100644
--- a/packages/linux/xanadux-ba-2.6_2.6.12.bb
+++ b/packages/linux/xanadux-ba-2.6_2.6.12.bb
@@ -6,6 +6,7 @@ SRC_URI = "cvs://anonymous@xanadux.cvs.sourceforge.net/cvsroot/xanadux;method=ps
S = "${WORKDIR}/linux-2.6-xda"
COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = "blueangel"
inherit kernel
diff --git a/packages/linux/xanadux-un-2.6_2.6.12.bb b/packages/linux/xanadux-un-2.6_2.6.12.bb
index a82e0abd3e..4a0f5265f1 100644
--- a/packages/linux/xanadux-un-2.6_2.6.12.bb
+++ b/packages/linux/xanadux-un-2.6_2.6.12.bb
@@ -8,6 +8,8 @@ SRC_URI = "cvs://anonymous@xanadux.cvs.sourceforge.net/cvsroot/xanadux;method=ps
S = "${WORKDIR}/linux-2.6-xda"
COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = "htc-universal"
+
inherit kernel
diff --git a/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb b/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb
index 5b11f32369..3ecfb76b3c 100644
--- a/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb
+++ b/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb
@@ -7,7 +7,8 @@ DEPENDS = "virtual/kernel fakeroot-native setserial"
RDEPENDS_nslu2 = "setserial"
PR = "r0"
-DEFAULT_PREFERENCE = "-1"
+# enable this bb file until the other packages compile again
+#DEFAULT_PREFERENCE = "-1"
SRCDATE=${@bb.data.getVar('PV', d, 1)[9:]}
diff --git a/packages/lirc/lirc_0.8.1+cvs20070307.bb b/packages/lirc/lirc_0.8.1+cvs20070307.bb
index e32477673e..61f7019b2e 100644
--- a/packages/lirc/lirc_0.8.1+cvs20070307.bb
+++ b/packages/lirc/lirc_0.8.1+cvs20070307.bb
@@ -17,7 +17,8 @@ RDEPENDS_lirc-nslu2example = "lirc lirc-exec"
RRECOMMENDS_lirc = "lirc-exec"
PR = "r1"
-DEFAULT_PREFERENCE = "-1"
+# enable cvs version since until compilation issues for other packages have been fixed (cf. bug 2284 et al).
+#DEFAULT_PREFERENCE = "-1"
SRCDATE=${@bb.data.getVar('PV', d, 1)[9:]}
diff --git a/packages/llvm/llvm-native_2.0.bb b/packages/llvm/llvm-native_2.0.bb
new file mode 100644
index 0000000000..9507c989cd
--- /dev/null
+++ b/packages/llvm/llvm-native_2.0.bb
@@ -0,0 +1,12 @@
+require llvm.inc
+
+SRC_URI = "http://llvm.org/releases/2.0/llvm-${PV}.tar.gz"
+
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/packages/lua/lua.inc b/packages/lua/lua.inc
index a03bf8ff22..b713825f00 100644
--- a/packages/lua/lua.inc
+++ b/packages/lua/lua.inc
@@ -3,10 +3,16 @@ for extending applications."
LICENSE = "MIT"
HOMEPAGE = "http://www.lua.org/"
-PACKAGES = "${PN} liblua ${PN}-doc liblua-dev \
- liblualib liblualib-dev"
-FILES_${PN} = "${bindir}/lua ${bindir}/luac"
-FILES_${PN}-doc = "${mandir}/man1/lua.1 ${mandir}/man1/luac.1"
+PACKAGES = "liblua-dbg liblualib-dbg ${PN}-dbg \
+liblua-dev liblua liblualib-dev liblualib ${PN}-doc ${PN}"
+
+FILES_${PN}-dbg = "${bindir}/.debug"
+FILES_liblua-dbg = "${libdir}/.debug/liblua.so.*"
+FILES_liblualib-dbg = "${libdir}/.debug/liblualib.so.*"
+
+FILES_${PN} = "${bindir}"
+FILES_${PN}-doc = "${mandir}"
+
FILES_liblua = "${libdir}/liblua.so.*"
FILES_liblua-dev = "${libdir}/liblua.so ${libdir}/liblua.a \
${includedir}/lua.h"
diff --git a/packages/lua/lua_5.0.2.bb b/packages/lua/lua_5.0.2.bb
index 6dbb656166..bb989c04d9 100644
--- a/packages/lua/lua_5.0.2.bb
+++ b/packages/lua/lua_5.0.2.bb
@@ -1,7 +1,7 @@
require lua.inc
DEPENDS += "readline"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz \
file://debian.patch;patch=1 \
file://make.patch;patch=1 \
diff --git a/packages/m4/m4_1.4.8.bb b/packages/m4/m4_1.4.8.bb
index 90f817d1f3..77d8e822b0 100644
--- a/packages/m4/m4_1.4.8.bb
+++ b/packages/m4/m4_1.4.8.bb
@@ -4,8 +4,6 @@ LICENSE = "GPL"
SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz"
S = "${WORKDIR}/m4-${PV}"
-DEFAULT_PREFERENCE = "-1"
-
inherit autotools
EXTRA_OEMAKE += "'infodir=${infodir}'"
diff --git a/packages/mISDN/.mtn2git_empty b/packages/mISDN/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mISDN/.mtn2git_empty
diff --git a/packages/mISDN/files/.mtn2git_empty b/packages/mISDN/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mISDN/files/.mtn2git_empty
diff --git a/packages/mISDN/files/Makefile b/packages/mISDN/files/Makefile
new file mode 100644
index 0000000000..bed60110ea
--- /dev/null
+++ b/packages/mISDN/files/Makefile
@@ -0,0 +1,4 @@
+PWD := $(shell pwd)
+SELECTION := CONFIG_MISDN_DRV=m CONFIG_MISDN_DSP=m CONFIG_MISDN_HFCUSB=m
+default modules:
+ $(MAKE) -C $(KDIR) SUBDIRS=${PWD}/drivers/isdn/hardware/mISDN/ EXTRA_CFLAGS=-I${PWD}/include modules ${SELECTION}
diff --git a/packages/mISDN/files/hfcs_usb_endianchecks.diff b/packages/mISDN/files/hfcs_usb_endianchecks.diff
new file mode 100644
index 0000000000..1f6ff3fcc8
--- /dev/null
+++ b/packages/mISDN/files/hfcs_usb_endianchecks.diff
@@ -0,0 +1,58 @@
+--- mISDN.org/drivers/isdn/hardware/mISDN/hfcs_usb.c 2005-06-23 18:43:36.000000000 +0200
++++ mISDN/drivers/isdn/hardware/mISDN/hfcs_usb.c 2005-08-12 16:16:24.000000000 +0200
+@@ -2038,9 +2038,9 @@
+
+ vend_idx = 0xffff;
+ for (i = 0; hfcsusb_idtab[i].idVendor; i++) {
+- if (dev->descriptor.idVendor == hfcsusb_idtab[i].idVendor
++ if (dev->descriptor.idVendor == le16_to_cpu(hfcsusb_idtab[i].idVendor)
+ && dev->descriptor.idProduct ==
+- hfcsusb_idtab[i].idProduct) {
++ le16_to_cpu(hfcsusb_idtab[i].idProduct)) {
+ vend_idx = i;
+ continue;
+ }
+@@ -2160,8 +2160,8 @@
+ usb_transfer_mode
+ = USB_INT;
+ packet_size =
+- ep->desc.
+- wMaxPacketSize;
++ le16_to_cpu(ep->desc.
++ wMaxPacketSize);
+ break;
+ case USB_ENDPOINT_XFER_BULK:
+ if (ep_addr & 0x80)
+@@ -2189,8 +2189,8 @@
+ usb_transfer_mode
+ = USB_BULK;
+ packet_size =
+- ep->desc.
+- wMaxPacketSize;
++ le16_to_cpu(ep->desc.
++ wMaxPacketSize);
+ break;
+ case USB_ENDPOINT_XFER_ISOC:
+ if (ep_addr & 0x80)
+@@ -2218,8 +2218,8 @@
+ usb_transfer_mode
+ = USB_ISOC;
+ iso_packet_size =
+- ep->desc.
+- wMaxPacketSize;
++ le16_to_cpu(ep->desc.
++ wMaxPacketSize);
+ break;
+ default:
+ card->
+@@ -2234,8 +2234,8 @@
+ card;
+ card->fifos[cidx].
+ usb_packet_maxlen =
+- ep->desc.
+- wMaxPacketSize;
++ le16_to_cpu(ep->desc.
++ wMaxPacketSize);
+ card->fifos[cidx].
+ intervall =
+ ep->desc.bInterval;
diff --git a/packages/mISDN/misdn_cvs.bb b/packages/mISDN/misdn_cvs.bb
new file mode 100644
index 0000000000..865e41b2f9
--- /dev/null
+++ b/packages/mISDN/misdn_cvs.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "mISDN kernel packages"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+# hfcs_usb_endianchecks.diff does not apply cleanly anymore (cf. bug 240)
+# without it the package at least compiles. no guarantees about functionality.
+SRC_URI = "cvs://anonymous:readonly@cvs.isdn4linux.de/i4ldev;module=mISDN;method=pserver \
+# file://hfcs_usb_endianchecks.diff;patch=1 \
+ file://Makefile"
+
+S = "${WORKDIR}/mISDN/"
+
+inherit module
+
+do_compile_prepend() {
+ cp -f ${WORKDIR}/Makefile ${S}/
+ cp ${S}/drivers/isdn/hardware/mISDN/Makefile.v2.6 ${S}/drivers/isdn/hardware/mISDN/Makefile
+}
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake 'KDIR=${STAGING_KERNEL_DIR}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/isdn/hardware/mISDN/
+ install -m 0644 ${S}/drivers/isdn/hardware/mISDN/*${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/isdn/hardware/mISDN
+}
+
diff --git a/packages/madwifi/madwifi-ng_r.inc b/packages/madwifi/madwifi-ng_r.inc
index 574a8b440a..73c585b0d8 100644
--- a/packages/madwifi/madwifi-ng_r.inc
+++ b/packages/madwifi/madwifi-ng_r.inc
@@ -4,7 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
RDEPENDS = "kernel (${KERNEL_VERSION})"
DEPENDS = "virtual/kernel"
-PR="r4"
+PR="r5"
WACKELF_SRC_URI = ""
WACKELF_SRC_URI_ixp4xx = " file://20-xscale-VFP-wackelf.patch;patch=1"
@@ -23,6 +23,7 @@ inherit module-base
ARCH_efika="powerpc"
ARCH_dht-walnut="ppc"
ARCH_magicbox="ppc"
+ARCH_sequoia="ppc"
EXTRA_OEMAKE = "LDFLAGS= KERNELPATH=${STAGING_KERNEL_DIR} KERNELRELEASE=${KERNEL_VERSION} TOOLPREFIX=${TARGET_PREFIX}"
diff --git a/packages/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch b/packages/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch
new file mode 100644
index 0000000000..2d05e5d652
--- /dev/null
+++ b/packages/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch
@@ -0,0 +1,91 @@
+# HG changeset patch
+# User pfalcon@localhost
+# Date 1176076569 0
+# Node ID ff9cf1fd8177dded04b9fc81ba630203848fc3ca
+# Parent 96305d94eb31f06f5618c99310192c47c68a1f21
+Add new modifier: layout. Used to cycle thru all available layouts.
+
+diff -r 96305d94eb31 -r ff9cf1fd8177 src/config-parser.c
+--- a/src/config-parser.c Sun Apr 08 23:28:43 2007 +0000
++++ b/src/config-parser.c Sun Apr 08 23:56:09 2007 +0000
+@@ -113,7 +113,8 @@ ModLookup[] =
+ { "mod1", MBKeyboardKeyModMod1 },
+ { "mod2", MBKeyboardKeyModMod2 },
+ { "mod3", MBKeyboardKeyModMod3 },
+- { "caps", MBKeyboardKeyModCaps }
++ { "caps", MBKeyboardKeyModCaps },
++ { "layout", MBKeyboardKeyModLayout },
+ };
+
+ typedef struct MBKeyboardConfigState
+diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard-key.c
+--- a/src/matchbox-keyboard-key.c Sun Apr 08 23:28:43 2007 +0000
++++ b/src/matchbox-keyboard-key.c Sun Apr 08 23:56:09 2007 +0000
+@@ -493,6 +493,16 @@ mb_kbd_key_press(MBKeyboardKey *key)
+ case MBKeyboardKeyModAlt:
+ mb_kbd_toggle_state(key->kbd, MBKeyboardStateAlt);
+ break;
++ case MBKeyboardKeyModLayout:
++ key->kbd->selected_layout_no++;
++ if (key->kbd->selected_layout_no >= util_list_length(key->kbd->layouts))
++ key->kbd->selected_layout_no = 0;
++ key->kbd->selected_layout =
++ (MBKeyboardLayout *)util_list_get_nth_data(key->kbd->layouts,
++ key->kbd->selected_layout_no);
++ mb_kbd_ui_recalc_ui_layout(key->kbd->ui);
++ queue_full_kbd_redraw = True;
++ break;
+ default:
+ DBG("unknown modifier action");
+ break;
+diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard-ui.c
+--- a/src/matchbox-keyboard-ui.c Sun Apr 08 23:28:43 2007 +0000
++++ b/src/matchbox-keyboard-ui.c Sun Apr 08 23:56:09 2007 +0000
+@@ -505,6 +505,15 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU
+ }
+
+ *width = max_row_width;
++}
++
++void
++mb_kbd_ui_recalc_ui_layout(MBKeyboardUI *ui)
++{
++ mb_kbd_ui_allocate_ui_layout(ui,
++ &ui->base_alloc_width, &ui->base_alloc_height);
++
++ mb_kbd_ui_resize(ui, ui->xwin_width, ui->xwin_height);
+ }
+
+ void
+diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard.c
+--- a/src/matchbox-keyboard.c Sun Apr 08 23:28:43 2007 +0000
++++ b/src/matchbox-keyboard.c Sun Apr 08 23:56:09 2007 +0000
+@@ -85,6 +85,7 @@ mb_kbd_new (int argc, char **argv)
+
+ kb->selected_layout
+ = (MBKeyboardLayout *)util_list_get_nth_data(kb->layouts, 0);
++ kb->selected_layout_no = 0;
+
+ if (want_embedding)
+ mb_kbd_ui_set_embeded( kb->ui, True );
+diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard.h
+--- a/src/matchbox-keyboard.h Sun Apr 08 23:28:43 2007 +0000
++++ b/src/matchbox-keyboard.h Sun Apr 08 23:56:09 2007 +0000
+@@ -148,6 +148,7 @@ struct MBKeyboard
+
+ List *layouts;
+ MBKeyboardLayout *selected_layout;
++ int selected_layout_no;
+
+ int key_border, key_pad, key_margin;
+ int row_spacing, col_spacing;
+@@ -177,6 +178,9 @@ int
+ int
+ mb_kbd_ui_init(MBKeyboard *kbd);
+
++void
++mb_kbd_ui_recalc_ui_layout(MBKeyboardUI *ui);
++
+ int
+ mb_kbd_ui_realize(MBKeyboardUI *ui);
+
diff --git a/packages/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch b/packages/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch
new file mode 100644
index 0000000000..8513b6ed86
--- /dev/null
+++ b/packages/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch
@@ -0,0 +1,94 @@
+# HG changeset patch
+# User pfalcon@localhost
+# Date 1176077194 0
+# Node ID b010d54a6c5020a68855e60e5a423ee3c18ed700
+# Parent ff9cf1fd8177dded04b9fc81ba630203848fc3ca
+Changes to improve layout rendering, especially after adding support for
+multiple layouts:
+1. Add --hfactor option which presets keyboard to the specified percentage
+of screen height. This is required for multiple layouts, as otherwise
+height is calculated on specific layout, but in such a way that it is
+affected by previous layout, which leads to rendering artifacts.
+2. Also st default font height to 6, after all.
+
+diff -r ff9cf1fd8177 -r b010d54a6c50 src/matchbox-keyboard-ui.c
+--- a/src/matchbox-keyboard-ui.c Sun Apr 08 23:56:09 2007 +0000
++++ b/src/matchbox-keyboard-ui.c Mon Apr 09 00:06:34 2007 +0000
+@@ -744,9 +744,15 @@ mb_kbd_ui_resources_create(MBKeyboardUI
+ */
+ if (desk_width > ui->xwin_width)
+ {
++ int win_height;
++ if (ui->kbd->hfactor != 0)
++ win_height = desk_height * ui->kbd->hfactor / 100;
++ else
++ win_height = ( desk_width * ui->xwin_height ) / ui->xwin_width;
++
+ mb_kbd_ui_resize(ui,
+ desk_width,
+- ( desk_width * ui->xwin_height ) / ui->xwin_width);
++ win_height);
+ }
+
+ wm_struct_vals[2] = desk_y + desk_height - ui->xwin_height;
+@@ -818,8 +824,11 @@ mb_kbd_ui_resize(MBKeyboardUI *ui, int w
+ width_diff = width - ui->base_alloc_width;
+ height_diff = height - ui->base_alloc_height;
+
++/* It's better to have some "clipped" keys, than busted layout. */
++#if 0
+ if (width_diff < 0 || height_diff < 0)
+ return; /* dont go smaller than our int request - get clipped */
++#endif
+
+ layout = mb_kbd_get_selected_layout(ui->kbd);
+ row_item = mb_kbd_layout_rows(layout);
+diff -r ff9cf1fd8177 -r b010d54a6c50 src/matchbox-keyboard.c
+--- a/src/matchbox-keyboard.c Sun Apr 08 23:56:09 2007 +0000
++++ b/src/matchbox-keyboard.c Mon Apr 09 00:06:34 2007 +0000
+@@ -23,8 +23,9 @@ mb_kbd_usage (char *progname)
+ mb_kbd_usage (char *progname)
+ {
+ fprintf(stderr, "Usage:\n %s [Options ] [ Layout Variant ]\n", progname);
+- fprintf(stderr, "\nOptions are;\n"
+- " -xid,--xid Print window ID to stdout ( for embedding )\n");
++ fprintf(stderr, "\nOptions are:\n"
++ " -xid,--xid Print window ID to stdout ( for embedding )\n"
++ " --hfactor <percent> Fix keyboard window size in percentage of desktop height\n");
+ fprintf(stderr, "\nmatchbox-keyboard %s \nCopyright (C) 2005 Matthew Allum, OpenedHand Ltd.\n", VERSION);
+
+ exit(-1);
+@@ -58,6 +59,13 @@ mb_kbd_new (int argc, char **argv)
+ want_embedding = True;
+ continue;
+ }
++ if (streq ("-hfactor", argv[i]) || streq ("--hfactor", argv[i]))
++ {
++ if (i + 1 < argc) {
++ kb->hfactor = atoi(argv[i + 1]);
++ }
++ continue;
++ }
+
+ if (i == (argc-1) && argv[i][0] != '-')
+ variant = argv[i];
+@@ -77,7 +85,7 @@ mb_kbd_new (int argc, char **argv)
+ kb->key_pad = 0;
+ kb->col_spacing = 0;
+ kb->row_spacing = 0;
+- kb->font_pt_size = 5;
++ kb->font_pt_size = 6;
+ }
+
+ if (!mb_kbd_config_load(kb, variant))
+diff -r ff9cf1fd8177 -r b010d54a6c50 src/matchbox-keyboard.h
+--- a/src/matchbox-keyboard.h Sun Apr 08 23:56:09 2007 +0000
++++ b/src/matchbox-keyboard.h Mon Apr 09 00:06:34 2007 +0000
+@@ -143,6 +143,7 @@ struct MBKeyboard
+ char *font_family;
+ int font_pt_size;
+ char *font_variant;
++ int hfactor;
+
+ char *config_file;
+
diff --git a/packages/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch b/packages/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch
new file mode 100644
index 0000000000..7ce61e469c
--- /dev/null
+++ b/packages/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User pfalcon@localhost
+# Date 1176077287 0
+# Node ID 38c3459f2e1a1c8dc7aacb486f201bdda638c7f2
+# Parent b010d54a6c5020a68855e60e5a423ee3c18ed700
+Add rendering debug logging.
+
+diff -r b010d54a6c50 -r 38c3459f2e1a src/matchbox-keyboard-ui.c
+--- a/src/matchbox-keyboard-ui.c Mon Apr 09 00:06:34 2007 +0000
++++ b/src/matchbox-keyboard-ui.c Mon Apr 09 00:08:07 2007 +0000
+@@ -357,6 +357,8 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU
+ /* Do an initial run to figure out a 'base' size for single glyph keys */
+ mb_kdb_ui_unit_key_size(ui, &ui->key_uwidth, &ui->key_uheight);
+
++ DBG("unit_key_size: %dx%d", ui->key_uwidth, ui->key_uheight);
++
+ row_item = mb_kbd_layout_rows(layout);
+
+ row_y = mb_kbd_row_spacing(ui->kbd);
+@@ -415,6 +417,8 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU
+
+ if (key_x > max_row_width) /* key_x now represents row width */
+ max_row_width = key_x;
++
++ DBG("Row width: %d", key_x);
+
+ mb_kbd_row_set_y(row, row_y);
+
+@@ -617,6 +621,8 @@ mb_kbd_ui_resources_create(MBKeyboardUI
+ boolean have_matchbox_wm = False;
+ boolean have_ewmh_wm = False;
+
++ DBG("mb_kbd_ui_resources_create: %dx%d", ui->xwin_width, ui->xwin_height);
++
+ /*
+ atom_wm_protocols = {
+ XInternAtom(ui->xdpy, "WM_DELETE_WINDOW",False),
+@@ -821,6 +827,8 @@ mb_kbd_ui_resize(MBKeyboardUI *ui, int w
+
+ MARK();
+
++ DBG("mb_kbd_ui_resize: resize to %dx%d, base %dx%d", width, height, ui->base_alloc_width, ui->base_alloc_height);
++
+ width_diff = width - ui->base_alloc_width;
+ height_diff = height - ui->base_alloc_height;
+
+@@ -1125,6 +1133,7 @@ mb_kbd_ui_event_loop(MBKeyboardUI *ui)
+ }
+ break;
+ case ConfigureNotify:
++ DBG("ConfigureNotify %i,%i", xev.xconfigure.width, xev.xconfigure.height);
+ if (xev.xconfigure.width != ui->xwin_width
+ || xev.xconfigure.height != ui->xwin_height)
+ mb_kbd_ui_handle_configure(ui,
+diff -r b010d54a6c50 -r 38c3459f2e1a src/matchbox-keyboard.h
+--- a/src/matchbox-keyboard.h Mon Apr 09 00:06:34 2007 +0000
++++ b/src/matchbox-keyboard.h Mon Apr 09 00:08:07 2007 +0000
+@@ -48,6 +48,7 @@
+ #include "config.h"
+ #endif
+
++#define WANT_DEBUG 1
+ #if (WANT_DEBUG)
+ #define DBG(x, a...) \
+ fprintf (stderr, __FILE__ ":%d,%s() " x "\n", __LINE__, __func__, ##a)
diff --git a/packages/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch b/packages/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch
new file mode 100644
index 0000000000..1480591930
--- /dev/null
+++ b/packages/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch
@@ -0,0 +1,197 @@
+# HG changeset patch
+# User pfalcon@localhost
+# Date 1181567228 0
+# Node ID 869314ae90f46a8c2d34080005d4079cb0d0fcf4
+# Parent 38c3459f2e1a1c8dc7aacb486f201bdda638c7f2
+Add support for loading multiple independent layouts.
+All layouts found in ~/.matchbox/keyboard.d/ are loaded, realistically
+these will be symlinks to system-wide store. This directory has the highest
+priority of all other layout selection mechanism (except for
+$MB_KBD_CONFIG).
+
+diff -r 38c3459f2e1a -r 869314ae90f4 src/config-parser.c
+--- a/src/config-parser.c Mon Apr 09 00:08:07 2007 +0000
++++ b/src/config-parser.c Mon Jun 11 13:07:08 2007 +0000
+@@ -17,6 +17,7 @@
+ *
+ */
+
++#include <dirent.h>
+ #include "matchbox-keyboard.h"
+
+ /*
+@@ -57,6 +58,9 @@
+
+ </keyboard>
+ */
++
++int mb_kbd_config_parse_file(MBKeyboard *kbd, char *path);
++static int mb_kbd_config_parse_data(MBKeyboard *kbd, char *data);
+
+ struct _keysymlookup
+ {
+@@ -170,12 +174,9 @@ config_str_to_modtype(const char* str)
+ }
+
+
+-static char*
+-config_load_file(MBKeyboard *kbd, char *variant_in)
+-{
+- struct stat stat_info;
+- FILE* fp;
+- char *result;
++int
++mb_kbd_config_load(MBKeyboard *kbd, char *variant_in)
++{
+ char *country = NULL;
+ char *variant = NULL;
+ char *lang = NULL;
+@@ -195,7 +196,44 @@ config_load_file(MBKeyboard *kbd, char *
+ if (util_file_readable(path))
+ goto load;
+
+- return NULL;
++ return 0;
++ }
++
++ if (getenv("HOME"))
++ {
++ snprintf(path, 1024, "%s/.matchbox/keyboard.d", getenv("HOME"));
++
++ DBG("checking %s\n", path);
++
++ if (util_file_readable(path))
++ {
++ DIR *dir = opendir(path);
++ struct dirent *dirent;
++ if (!dir)
++ {
++ perror("matchbox-keyboard");
++ util_fatal_error("Cannot read keyboard.d.\n");
++ }
++ errno = 0;
++ while ((dirent = readdir(dir)))
++ {
++ if (dirent->d_name[0] == '.')
++ continue;
++ snprintf(path, 1024, "%s/.matchbox/keyboard.d/%s", getenv("HOME"), dirent->d_name);
++ if (!mb_kbd_config_parse_file(kbd, path))
++ {
++ util_fatal_error("Cannot read file in keyboard.d.\n");
++ }
++
++ }
++ if (errno)
++ {
++ perror("matchbox-keyboard");
++ util_fatal_error("Error reading keyboard.d.\n");
++ }
++ closedir(dir);
++ return 1;
++ }
+ }
+
+ lang = getenv("MB_KBD_LANG");
+@@ -268,29 +306,11 @@ config_load_file(MBKeyboard *kbd, char *
+ DBG("checking %s\n", path);
+
+ if (!util_file_readable(path))
+- return NULL;
++ return 0;
+
+ load:
+
+- if (stat(path, &stat_info))
+- return NULL;
+-
+- if ((fp = fopen(path, "rb")) == NULL)
+- return NULL;
+-
+- DBG("loading %s\n", path);
+-
+- kbd->config_file = strdup(path);
+-
+- result = malloc(stat_info.st_size + 1);
+-
+- n = fread(result, 1, stat_info.st_size, fp);
+-
+- if (n >= 0) result[n] = '\0';
+-
+- fclose(fp);
+-
+- return result;
++ return mb_kbd_config_parse_file(kbd, path);
+ }
+
+ static const char *
+@@ -567,25 +587,48 @@ config_xml_start_cb(void *data, const ch
+
+
+ int
+-mb_kbd_config_load(MBKeyboard *kbd, char *variant)
+-{
+- char *data;
++mb_kbd_config_parse_file(MBKeyboard *kbd, char *path)
++{
++ char *buffer;
++ struct stat stat_info;
++ FILE* fp;
++ int n;
++
++ if (stat(path, &stat_info))
++ return 0;
++
++ if ((fp = fopen(path, "rb")) == NULL)
++ return 0;
++
++ DBG("loading %s\n", path);
++
++ kbd->config_file = strdup(path);
++
++ buffer = malloc(stat_info.st_size + 1);
++
++ n = fread(buffer, 1, stat_info.st_size, fp);
++
++ if (n >= 0) buffer[n] = '\0';
++
++ fclose(fp);
++
++ mb_kbd_config_parse_data(kbd, buffer);
++
++ free(buffer);
++
++ return 1;
++}
++
++static int
++mb_kbd_config_parse_data(MBKeyboard *kbd, char *data)
++{
+ XML_Parser p;
+ MBKeyboardConfigState *state;
+
+- if ((data = config_load_file(kbd, variant)) == NULL)
+- util_fatal_error("Couldn't find a keyboard config file\n");
+-
+ p = XML_ParserCreate(NULL);
+
+ if (!p)
+ util_fatal_error("Couldn't allocate memory for XML parser\n");
+-
+- if (variant && !strstr(kbd->config_file, variant))
+- fprintf(stderr,
+- "matchbox-keyboard: *Warning* Unable to locate variant: %s\n"
+- " falling back to %s\n",
+- variant, kbd->config_file);
+
+ state = util_malloc0(sizeof(MBKeyboardConfigState));
+
+@@ -607,6 +650,9 @@ mb_kbd_config_load(MBKeyboard *kbd, char
+ util_fatal_error("XML Parse failed.\n");
+ }
+
++ free(state);
++ XML_ParserFree(p);
++
+ return 1;
+ }
+
diff --git a/packages/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch b/packages/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch
new file mode 100644
index 0000000000..c2cf4d62dd
--- /dev/null
+++ b/packages/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch
@@ -0,0 +1,111 @@
+# HG changeset patch
+# User pfalcon@localhost
+# Date 1181568553 0
+# Node ID edc3fd8303a394bccadde2f427ab25ebda4fcbc8
+# Parent 869314ae90f46a8c2d34080005d4079cb0d0fcf4
+Add layout switch key to all layouts.
+
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-dvorak.xml
+--- a/layouts/keyboard-dvorak.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-dvorak.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -271,6 +271,10 @@ Contributed by Leon Matthews http://www.
+ <!-- Bottom Row -->
+ <row>
+ <space width="500" extended="true"/>
++ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++
+ <key>
+ <default display="äëö" action="modifier:mod1"/>
+ </key>
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-extended.xml
+--- a/layouts/keyboard-extended.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-extended.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -304,6 +304,10 @@
+ </row>
+ <row>
+ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++
++ <key>
+ <default display="aeo" action="modifier:mod1"/>
+ </key>
+
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-fi.xml
+--- a/layouts/keyboard-fi.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-fi.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -329,6 +329,10 @@
+ <space width="500" extended="true"/>
+
+
++ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++
+ <key fill="true">
+ <default display="Ctrl" action="modifier:ctrl"/>
+ </key>
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-numpad.xml
+--- a/layouts/keyboard-numpad.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-numpad.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -54,6 +54,13 @@
+ </key>
+ </row>
+
++ <row>
++ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++ </row>
++
++
+ </layout>
+
+
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-ru.xml
+--- a/layouts/keyboard-ru.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-ru.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -302,10 +302,10 @@
+ <space width="500" extended="true"/>
+
+ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++ <key>
+ <default display="äëö" action="modifier:mod1"/>
+- </key>
+- <key>
+- <default display="EN" action="modifier:mod2"/>
+ </key>
+
+ <key fill="true">
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-us.xml
+--- a/layouts/keyboard-us.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard-us.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -326,6 +326,10 @@
+ <space width="500" extended="true"/>
+
+ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++
++ <key>
+ <default display="äëö" action="modifier:mod1"/>
+ </key>
+
+diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard.xml
+--- a/layouts/keyboard.xml Mon Jun 11 13:07:08 2007 +0000
++++ b/layouts/keyboard.xml Mon Jun 11 13:29:13 2007 +0000
+@@ -324,6 +324,10 @@
+ <space width="500" extended="true"/>
+
+ <key>
++ <default display="[->]" action="modifier:layout"/>
++ </key>
++
++ <key>
+ <default display="äëö" action="modifier:mod1"/>
+ </key>
+
diff --git a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
index 8c7584d4f4..57d0b413a9 100644
--- a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
+++ b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
@@ -3,10 +3,16 @@ LICENSE = "GPL"
DEPENDS = "libfakekey expat libxft"
SECTION = "x11"
PV = "0.0+svn${SRCDATE}"
-PR="r3"
+PR="r5"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://smallscreen-fontsize.patch;patch=1"
+ file://smallscreen-fontsize.patch;patch=1 \
+ file://2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch;patch=1 \
+ file://3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch;patch=1 \
+ file://4-Add-rendering-debug-logging.patch;patch=1 \
+ file://5-Add-support-for-loading-multiple-independent-layouts.patch;patch=1 \
+ file://6-Add-layout-switch-key-to-all-layouts.patch;patch=1 \
+ "
S = "${WORKDIR}/${PN}"
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb b/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb
new file mode 100644
index 0000000000..717f2009e3
--- /dev/null
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "matchbox-keyboard layouts control application"
+AUTHOR = "Sergey Lapin"
+SRC_URI = "git://ossfans.org/home/slapin/git/mk-layouts-gui.git;protocol=git"
+LICENSE = "GPL"
+PR = "r2"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/packages/mdk/mdk2_v33.bb b/packages/mdk/mdk2_v33.bb
index bd665e2ccd..02a784d5e3 100644
--- a/packages/mdk/mdk2_v33.bb
+++ b/packages/mdk/mdk2_v33.bb
@@ -2,7 +2,6 @@ SECTION = "console/network"
DESCRIPTION = "ASPj is drunk"
HOMEPAGE = "http://homepages.tu-darmstadt.de/~p_larbig/wlan/"
LICENSE = "GPLv2"
-MAINTAINER = "Zero_Chaos <sidhayn@gmail.com>"
DEPENDS = ""
RDEPENDS = ""
PR="r1"
diff --git a/packages/mediatomb/mediatomb_0.9.1.bb b/packages/mediatomb/mediatomb_0.9.1.bb
new file mode 100644
index 0000000000..f3ea9f54dd
--- /dev/null
+++ b/packages/mediatomb/mediatomb_0.9.1.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "MediaTomb - UPnP AV MediaServer for Linux"
+HOMEPAGE = "http://mediatomb.cc/"
+LICENSE = "GPLv2"
+DEPENDS = "sqlite3 libexif js zlib file id3lib"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mediatomb/mediatomb-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-mysql \
+ --disable-rpl-malloc \
+ --enable-sqlite3 \
+ --enable-libjs \
+ --enable-libmagic \
+ --enable-id3lib \
+ --enable-libexif \
+ --disable-largefile \
+ --with-sqlite3-h=${STAGING_INCDIR} \
+ --with-sqlite3-libs=${STAGING_LIBDIR} \
+ --with-magic-h=${STAGING_INCDIR} \
+ --with-magic-libs=${STAGING_LIBDIR} \
+ --with-exif-h=${STAGING_INCDIR} \
+ --with-exif-libs=${STAGING_LIBDIR} \
+ --with-zlib-h=${STAGING_INCDIR} \
+ --with-zlib-libs=${STAGING_LIBDIR} \
+ --with-js-h=${STAGING_INCDIR}/js \
+ --with-js-libs=${STAGING_LIBDIR} \
+ --with-id3lib-h=${STAGING_INCDIR} \
+ --with-id3lib-libs=${STAGING_LIBDIR}"
diff --git a/packages/mesa/mesa-6.5.2/fix-host-compile.patch b/packages/mesa/mesa-6.5.2/fix-host-compile.patch
new file mode 100644
index 0000000000..d24d03d379
--- /dev/null
+++ b/packages/mesa/mesa-6.5.2/fix-host-compile.patch
@@ -0,0 +1,30 @@
+--- /src/mesa/x86/orig-Makefile 2005-07-01 04:54:38.000000000 +0300
++++ /src/mesa/x86/Makefile 2007-06-07 21:52:31.000000000 +0300
+@@ -5,6 +5,7 @@
+
+
+ INCLUDE_DIRS = \
++ -I/usr/include \
+ -I$(TOP)/include/GL \
+ -I$(TOP)/include \
+ -I.. \
+@@ -13,6 +14,10 @@
+ -I../glapi \
+ -I../tnl
+
++OPT_FLAGS_host = -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os
++
++CFLAGS_host = -Wall -Wmissing-prototypes $(OPT_FLAGS_host) $(PIC_FLAGS) $(ARCH_FLAGS) \
++ $(DEFINES) $(ASM_FLAGS) $(X11_INCLUDES) -std=c99 -ffast-math
+
+ default: gen_matypes matypes.h
+
+@@ -21,7 +26,7 @@
+
+
+ gen_matypes: gen_matypes.c
+- $(CC) $(INCLUDE_DIRS) $(CFLAGS) gen_matypes.c -o gen_matypes
++ $(CC) $(INCLUDE_DIRS) $(CFLAGS_host) gen_matypes.c -o gen_matypes
+
+ # need some special rules here, unfortunately
+ matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes
diff --git a/packages/mesa/mesa-mesa.inc b/packages/mesa/mesa-mesa.inc
index a4163f576e..d794f0c097 100644
--- a/packages/mesa/mesa-mesa.inc
+++ b/packages/mesa/mesa-mesa.inc
@@ -13,7 +13,7 @@ FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/osmesa.h"
do_configure() {
cd configs
- ln -sf linux current
+ cp linux current
sed -e "s%CC *= *.*%CC = ${CC}%" -i current
sed -e "s%CXX *= *.*%CXX = ${CXX}%" -i current
sed -e "s%LD *= *.*%LD = ${LD}%" -i current
diff --git a/packages/mesa/mesa_6.5.2.bb b/packages/mesa/mesa_6.5.2.bb
index 1c245f003b..79993cc1f1 100644
--- a/packages/mesa/mesa_6.5.2.bb
+++ b/packages/mesa/mesa_6.5.2.bb
@@ -1,3 +1,8 @@
-PR = "r0"
+PR = "r1"
include mesa-mesa.inc
+
+SRC_URI_append = " file://fix-host-compile.patch;patch=1 "
+
+
+
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 35dbe9f4cb..1fa80f7d6d 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -22,25 +22,31 @@ TARGET_INSTALL = "\
RDEPENDS = "${TARGET_INSTALL} ${HOST_INSTALL}"
-do_populate_sdk() {
- touch ${DEPLOY_DIR_IPK}/Packages
- ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
+sdk_ipk_do_indexes () {
+ set -ex
+ rootfs_ipk_do_indexes
+ set +ex
+}
+do_populate_sdk() {
+ sdk_ipk_do_indexes
rm -rf ${SDK_OUTPUT}
mkdir -p ${SDK_OUTPUT}
+ echo "Creating host.conf..."
+
cat <<EOF >${SDK_DIR}/ipkg-host.conf
-src oe file:${DEPLOY_DIR_IPK}
+src oe file:${DEPLOY_DIR_IPK}/${BUILD_ARCH}
arch ${BUILD_ARCH} 1
EOF
- cat <<EOF >${SDK_DIR}/ipkg-target.conf
-src oe file:${DEPLOY_DIR_IPK}
-EOF
- ipkgarchs="${PACKAGE_ARCHS}"
+ echo "done."
priority=1
for arch in $ipkgarchs; do
echo "arch $arch $priority" >> ${SDK_DIR}/ipkg-target.conf
- priority=$(expr $priority + 5)
+ priority=$(expr $priority + 5)
+ if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
+ echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${SDK_DIR}/ipkg-target.conf
+ fi
done
rm -r ${SDK_OUTPUT}
diff --git a/packages/meta/oplinux-packages.bb b/packages/meta/oplinux-packages.bb
new file mode 100644
index 0000000000..62513c11cd
--- /dev/null
+++ b/packages/meta/oplinux-packages.bb
@@ -0,0 +1,646 @@
+# Meta package containing all the packages which build for OPLinux and OPLinux uclibc distro
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+DESCRIPTION = "Packages that are compatible with the OPLinux distro"
+HOMEPAGE = "http://www.digital-opsis/oplinux"
+LICENSE = "MIT"
+PR = "r1"
+PROVIDES += "${OPLINUX_IMAGENAME}-packages"
+
+EXCLUDE_FROM_WORLD = "1"
+INHIBIT_DEFAULT_DEPS = "1"
+ALLOW_EMPTY = "1"
+
+
+python __anonymous () {
+
+ import bb
+
+ #Get all the packages we can build/exist in OE
+ package_list = bb.data.getVar('PACKAGES_LIST', d) or "none"
+ package_list=package_list.split()
+
+ #Get the packages that are broken on all architectures
+ broken_package_list = bb.data.expand('${OPLINUX_BROKEN_PACKAGES}', d)
+
+ # Get the arch we are building for
+ building_arch = bb.data.getVar('FEED_ARCH',d)
+
+ #Now add the broken packages list the ones that fail for the arch we build now
+ if (building_arch=="i486") or (building_arch=="i586") or (building_arch=="i686"):
+ broken_package_list = broken_package_list + bb.data.expand('${OPLINUX_BROKEN_PACKAGES_ARCH_x86}', d)
+
+ elif (building_arch=="ppc405"):
+ broken_package_list = broken_package_list + bb.data.expand('${OPLINUX_BROKEN_PACKAGES_ARCH_PPC}', d)
+
+ elif (building_arch=="ppc603e"):
+ broken_package_list = broken_package_list + bb.data.expand('${OPLINUX_BROKEN_PACKAGES_ARCH_POWERPC}', d)
+
+
+ for chk_package in package_list :
+ build_package="yes"
+ if chk_package in broken_package_list:
+ build_package="no"
+ else :
+ bb.data.setVar('DEPENDS', (bb.data.getVar('DEPENDS', d) + chk_package +" "), d)
+
+#add the OPLinux extra packages to the DEPENDS list
+ bb.data.setVar('DEPENDS', (bb.data.getVar('DEPENDS', d) + bb.data.getVar('OPLINUX_EXTRA_PACKAGES', d)), d)
+
+
+ bb.data.setVar('DEPENDS', (bb.data.getVar('DEPENDS', d) + "package-index"), d)
+}
+
+
+
+
+
+# The list of packages availiable to OE
+# KEEP IN ALPHABETICAL ORDER
+# Do *not* simply comment out a line. That will break. Instead
+# remove the package and place it in the corresponding "broken" list
+PACKAGES_LIST = "\
+ acct \
+ acpid \
+ adns \
+ aiostress \
+ aircrack \
+ alsa-lib \
+ alsa-utils \
+ apache2 \
+ appweb \
+ apmd \
+ apt \
+ ark3116 \
+ arpwatch \
+ at \
+ atd \
+ atftp \
+ atmelwlandriver \
+ audiofile \
+ aumix \
+ autoconf \
+ automake \
+ autofs \
+ aspell \
+ avahi \
+ bacula-client \
+ balsa \
+ bash \
+ bazaar \
+ bb \
+ bc \
+ beep \
+ beecrypt \
+ beepmp \
+ bind \
+ binutils \
+ bing \
+ bison \
+ bitchx \
+ blueprobe \
+ bmon \
+ boa \
+ bochs \
+ bogofilter \
+ boost \
+ boost-asio \
+ bonnie++ \
+ bootchart \
+ bootmenu \
+ bootsplash \
+ bridge-utils \
+ bt950-cs \
+ btscanner \
+ btsco \
+ btsco-module \
+ btxml \
+ bvi \
+ bwmon \
+ bluez-utils \
+ bzflag \
+ bzflag-server \
+ bzip2 \
+ came \
+ chillispot \
+ camsource \
+ cscope \
+ cups \
+ ccxstream \
+ cdparanoia \
+ cdstatus \
+ cetools \
+ cherokee \
+ ckermit \
+ clish \
+ coreutils \
+ conserver \
+ corkscrew \
+ cpusage \
+ cron \
+ ctorrent \
+ cvs \
+ cyrus-sasl \
+ cyrus-imapd \
+ dialog \
+ db \
+ ddclient \
+ dhclient \
+ dhcp \
+ didiwiki \
+ devlabel \
+ diffstat \
+ diffutils \
+ dnsmasq \
+ ebtables \
+ elftoaout \
+ emul \
+ enscript \
+ e2fsprogs \
+ e2fsprogs-libs \
+ esmtp \
+ etherpuppet \
+ ethload \
+ ethtool \
+ ettercap \
+ expat \
+ ez-ipupdate \
+ fortune-mod \
+ fakeconnect \
+ fbgrab \
+ fetchmail \
+ file \
+ findutils \
+ flac \
+ flex \
+ flite \
+ frotz \
+ fush \
+ g15daemon \
+ gallery \
+ gammu \
+ gawk \
+ gcc \
+ gdb \
+ gdbm \
+ genext2fs \
+ gphoto2 \
+ git \
+ gift \
+ glib-2.0 \
+ gpm \
+ gpsbabel \
+ gs \
+ gnu-config \
+ gnuplot \
+ gpsd \
+ grep \
+ gtk-doc \
+ gzip \
+ hdparm \
+ hydra \
+ ifupdown \
+ iputils \
+ ipkg-utils \
+ iptables \
+ intercom \
+ ircp \
+ irssi \
+ joe \
+ jpeg \
+ kismet \
+ kbdd \
+ ksymoops \
+ lame \
+ lxt \
+ lcdproc \
+ less \
+ libao \
+ libpcre \
+ libid3tag \
+ liblockfile \
+ libmad \
+ libmikmod \
+ libogg \
+ libol \
+ libpng \
+ libtool \
+ libupnp \
+ libusb \
+ libvorbis \
+ litestream \
+ lrzsz \
+ lsof \
+ lvm2 \
+ m4 \
+ madplay \
+ mailx \
+ make \
+ mc \
+ mikmod \
+ mdadm \
+ memtester \
+ mgetty \
+ miau \
+ microcom \
+ minicom \
+ modphp \
+ modplugplay \
+ mp3blaster \
+ mpg321 \
+ mt-daapd \
+ mtd-utils \
+ mutt \
+ mysql \
+ mystun-server \
+ nail \
+ nano \
+ ncftp \
+ ncurses \
+ netcat \
+ nmap \
+ nmixer \
+ ntp \
+ netkit-ftp \
+ netperf \
+ net-snmp \
+ nfs-utils \
+ ngrep \
+ nmap \
+ nsd \
+ ntp \
+ ntpdate \
+ openobex-apps \
+ openldap \
+ openntpd \
+ openobex \
+ obexftp \
+ obexpush \
+ olsrd \
+ openswan \
+ openssh \
+ openvpn \
+ patch \
+ pciutils \
+ pcmcia-cs \
+ portmap \
+ privoxy \
+ perl \
+ pkgconfig \
+ ppp \
+ procps \
+ pvrusb2-mci \
+ pwc \
+ quilt \
+ rng-tools \
+ rsync \
+ samba \
+ sane-backends \
+ sed \
+ setpwc \
+ setserial \
+ shorewall \
+ smartmontools \
+ ssmtp \
+ strace \
+ streamripper \
+ sysfsutils \
+ syslog-ng \
+ stunnel \
+ spandsp \
+ subversion \
+ slutils \
+ strace \
+ sudo \
+ tcpdump \
+ tor \
+ tar \
+ thttpd \
+ tiff \
+ texinfo \
+ unzip \
+ unrar \
+ usbutils \
+ util-linux \
+ vim \
+ vlan \
+ vorbis-tools \
+ vpnc \
+ vsftpd \
+ vtun \
+ watchdog \
+ wget \
+ zd1211-firmware \
+ zip \
+ zlib \
+ zsh \
+ lirc \
+ masqmail \
+ wakelan \
+ wireless-tools \
+ wpa-supplicant \
+ libxml2 \
+ libdvb \
+ madwifi-ng \
+ motion \
+ ftpd-topfield \
+ eciadsl \
+ netpbm \
+ reiserfsprogs reiser4progs \
+ python \
+ mpd \
+ memtester \
+ puppy \
+
+ ctrlproxy \
+ dsniff \
+ iperf \
+ groff \
+ man man-pages \
+ psmisc \
+ screen \
+ timezones \
+ wview-sim wview-vpro wview-wxt510 \
+ wview-sim-mysql wview-vpro-mysql \
+ wview-wxt510-mysql \
+ xinetd \
+ obexftp \
+ qc-usb-messenger \
+ unionfs-modules \
+ unionfs-utils \
+ erlang \
+ ctrlproxy \
+ dsniff \
+ fortune-mod \
+ libpam \
+ nfs-utils \
+ rng-tools \
+ postfix \
+ yp-tools ypbind ypserv \
+
+"
+
+
+
+# Packages currently broken on all platforms (glibc)
+OPLINUX_BROKEN_PACKAGES = "irssi \
+ unionfs-modules \
+ unionfs-utils \
+
+"
+
+#Here we define the packages that are broken on a specific architecture
+#i486, i586, i686
+OPLINUX_BROKEN_PACKAGES_ARCH_x86 =" \
+ aircrack \
+ appweb \
+ apt \
+ ark3116 \
+ at \
+ atmelwlandriver \
+ atftp \
+ autofs \
+ balsa \
+ bazaar \
+ bb \
+ beecrypt \
+ beepmp \
+ bitchx \
+ bochs \
+ bmon \
+ bt950-cs \
+ btscanner \
+ btsco-module \
+ bwmon \
+ came \
+ ctrlproxy \
+ cyrus-sasl \
+ cyrus-imapd \
+ dsniff \
+ eciadsl \
+ erlang \
+ fortune-mod \
+ gphoto2 \
+ gpsd \
+ intercom \
+ lcdproc \
+ lirc \
+ mpd \
+ puppy \
+ pvrusb2-mci \
+ pwc \
+ qc-usb-messenger \
+ sane-backends \
+ setpwc \
+ slutils \
+ texinfo \
+ vsftpd \
+ libpam \
+ aircrack \
+ appweb \
+ apt \
+ ark3116 \
+ gcc \
+ gpsd \
+ pvrusb2-mci \
+ pwc \
+ setpwc \
+ cyrus-sasl \
+ atftp \
+ gphoto2 \
+ lirc \
+ libdvb \
+ netpbm \
+"
+#
+#ppc405
+OPLINUX_BROKEN_PACKAGES_ARCH_PPC = " \
+ aircrack \
+ appweb \
+ apt \
+ ark3116 \
+ at \
+ atmelwlandriver \
+ atftp \
+ autofs \
+ balsa \
+ bazaar \
+ bb \
+ beecrypt \
+ beepmp \
+ bitchx \
+ bochs \
+ bmon \
+ bt950-cs \
+ btscanner \
+ btsco-module \
+ bwmon \
+ came \
+ ctrlproxy \
+ cyrus-sasl \
+ cyrus-imapd \
+ dsniff \
+ eciadsl \
+ erlang \
+ fortune-mod \
+ gphoto2 \
+ gpsd \
+ intercom \
+ lcdproc \
+ lirc \
+ mpd \
+ puppy \
+ pvrusb2-mci \
+ pwc \
+ qc-usb-messenger \
+ sane-backends \
+ setpwc \
+ slutils \
+ texinfo \
+ vsftpd \
+"
+
+
+
+#
+#ppc440 ppc603e
+OPLINUX_BROKEN_PACKAGES_ARCH_POWERPC = " \
+ aircrack \
+ appweb \
+ apt \
+ ark3116 \
+ arpwatch \
+ at \
+ atmelwlandriver \
+ atftp \
+ autofs \
+ balsa \
+ bazaar \
+ bb \
+ beecrypt \
+ beepmp \
+ bitchx \
+ bochs \
+ bmon \
+ bt950-cs \
+ btscanner \
+ btsco-module \
+ bwmon \
+ came \
+ ctrlproxy \
+ cyrus-sasl \
+ cyrus-imapd \
+ dsniff \
+ eciadsl \
+ erlang \
+ fortune-mod \
+ gphoto2 \
+ gpsd \
+ intercom \
+ lcdproc \
+ lirc \
+ mpd \
+ puppy \
+ pvrusb2-mci \
+ pwc \
+ qc-usb-messenger \
+ sane-backends \
+ setpwc \
+ slutils \
+ spandsp \
+ texinfo \
+ vsftpd \
+
+ libpam \
+ aircrack \
+ appweb \
+ apt \
+ ark3116 \
+ gcc \
+ gpsd \
+ pvrusb2-mci \
+ pwc \
+ setpwc \
+ cyrus-sasl \
+ atftp \
+ gphoto2 \
+ lirc \
+ libdvb \
+ netpbm \
+"
+
+
+
+
+#Packages broken per machine (if we ever need such a thing)
+OPLINUX_BROKEN_PACKAGES_append_x86 =" \
+"
+OPLINUX_BROKEN_PACKAGES_append_i586-generic =" \
+"
+OPLINUX_BROKEN_PACKAGES_append_i686-generic =" \
+"
+OPLINUX_BROKEN_PACKAGES_append_epia =" \
+"
+OPLINUX_BROKEN_PACKAGES_append_wrap = "\
+"
+
+#ppc targets
+OPLINUX_BROKEN_PACKAGES_append_magicbox = "\
+"
+OPLINUX_BROKEN_PACKAGES_append_dht-walnut = "\
+"
+#powerpc targets
+OPLINUX_BROKEN_PACKAGES_append_efika = "\
+"
+
+
+#
+#
+OPLINUX_UCLIBC_UNSUPPORTABLE_PACKAGES = "\
+ libpam \
+ nfs-utils \
+ rng-tools \
+ postfix \
+ yp-tools ypbind ypserv \
+ "
+
+# These packages work with glibc, but break on uclibc.
+OPLINUX_UCLIBC_BROKEN_PACKAGES = "\
+# bwmon \
+# erlang \
+# apr \
+# bogofilter \
+# boost \
+# linphone \
+# sudo \
+# ushare \
+ "
+
+OPLINUX_UCLIBC_BROKEN_PACKAGES_append_x86 = "\
+ "
+
+OPLINUX_UCLIBC_BROKEN_PACKAGES_append_epia = "\
+ "
+
+OPLINUX_UCLIBC_BROKEN_PACKAGES_append_wrap = "\
+ "
+
+OPLINUX_UCLIBC_BROKEN_PACKAGES_append_magicbox = "\
+ "
+
+OPLINUX_UCLIBC_BROKEN_PACKAGES_append_dht-walnut = "\
+ "
+
+
+# Packages which build only with glibc (some of these use internal
+# glibc functions and so will probably never run on uclibc).
+OPLINUX_BROKEN_PACKAGES_append_uclibc-linux = "\
+ ${OPLINUX_UCLIBC_UNSUPPORTABLE_PACKAGES} \
+ ${OPLINUX_UCLIBC_BROKEN_PACKAGES} \
+
+"
+
+#
+#Any extra packages defined
+#
+OPLINUX_EXTRA_PACKAGES ?= ""
diff --git a/packages/mpeg2dec/mpeg2dec_0.4.0b.bb b/packages/mpeg2dec/mpeg2dec_0.4.0b.bb
index 3380a4e00c..c279893ee5 100644
--- a/packages/mpeg2dec/mpeg2dec_0.4.0b.bb
+++ b/packages/mpeg2dec/mpeg2dec_0.4.0b.bb
@@ -1,22 +1,24 @@
DESCRIPTION = "Library and test program for decoding mpeg-2 and mpeg-1 video streams"
HOMEPAGE = "http://libmpeg2.sourceforge.net/"
-LICENSE = "GPL"
-PRIORITY = "optional"
SECTION = "libs"
-PR = "r2"
-
+PRIORITY = "optional"
+LICENSE = "GPL"
DEPENDS = "virtual/libsdl"
+PROVIDES += "libmpeg2"
+RPROVIDES += "libmpeg2"
+PR = "r3"
-SRC_URI = "http://libmpeg2.sourceforge.net/files/mpeg2dec-${PV}.tar.gz"
S = "${WORKDIR}/mpeg2dec-0.4.0"
+SRC_URI = "http://libmpeg2.sourceforge.net/files/mpeg2dec-${PV}.tar.gz"
+
inherit autotools pkgconfig
EXTRA_OECONF = "--enable-shared"
-PACKAGES = "mpeg2dec mpeg2dec-doc libmpeg2 libmpeg2-dev libmpeg2convert libmpeg2convert-dev"
+PACKAGES += "libmpeg2 libmpeg2-dev libmpeg2convert libmpeg2convert-dev"
-FILES_${PN} = "${bindir}/*"
+FILES_${PN} += "${bindir}/*"
FILES_libmpeg2 = "${libdir}/libmpeg2.so.*"
FILES_libmpeg2convert = "${libdir}/libmpeg2convert.so.*"
FILES_libmpeg2-dev = "${libdir}/libmpeg2.so \
diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb
index 2910cbd0a4..34fe1ac123 100644
--- a/packages/mplayer/mplayer_0.0+1.0rc1.bb
+++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb
@@ -34,7 +34,7 @@ PACKAGE_ARCH_mencoder_collie = "collie"
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PR = "r12"
+PR = "r13"
PARALLEL_MAKE = ""
@@ -177,13 +177,24 @@ EXTRA_OECONF = " \
EXTRA_OECONF_append_arm = " --disable-decoder=vorbis_decoder \
--disable-encoder=vorbis_encoder"
-EXTRA_OECONF_append_c7x0 = " --enable-w100 --enable-imageon "
-EXTRA_OECONF_append_hx4700 = " --enable-imageon "
EXTRA_OECONF_append_progear = " --disable-sse --disable-3dnow --disable-mmxext --disable-sse2"
+
+#enable support for the ati imageon series (w100 and w3220)
+EXTRA_OECONF_append_c7x0 = " --enable-w100 "
+EXTRA_OECONF_append_hx4700 = " --enable-imageon "
+
+#enable pxa270 overlay support
EXTRA_OECONF_append_spitz = " --enable-pxa "
+EXTRA_OECONF_append_a780 = " --enable-pxa "
+#build with support for the iwmmxt instruction support (pxa270 and up)
TARGET_CC_ARCH_spitz = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_spitz = "iwmmxt"
+TARGET_CC_ARCH_a780 = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_a780 = "iwmmxt"
+TARGET_CC_ARCH_hx4700 = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_hx4700= "iwmmxt"
+
do_configure() {
cp ${WORKDIR}/vo_w100.c ${S}/libvo
diff --git a/packages/nabi/.mtn2git_empty b/packages/nabi/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nabi/.mtn2git_empty
diff --git a/packages/nabi/nabi_0.17.bb b/packages/nabi/nabi_0.17.bb
new file mode 100644
index 0000000000..d914830b94
--- /dev/null
+++ b/packages/nabi/nabi_0.17.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Nabi is an easy and powerful GNU XIM for the Korean language"
+HOMEPAGE = "http://nabi.kldp.net/"
+SECTION = "x11/input"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libhangul"
+
+SRC_URI = "http://kldp.net/frs/download.php/3742/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
diff --git a/packages/netbase/netbase/interfaces b/packages/netbase/netbase/interfaces
index fbeb14ffbc..c9b2faf3f8 100644
--- a/packages/netbase/netbase/interfaces
+++ b/packages/netbase/netbase/interfaces
@@ -4,10 +4,40 @@
auto lo
iface lo inet loopback
+
# Wireless interfaces
+#
+# Example of an unencrypted (no WEP or WPA) wireless connection
+# that connects to any available access point:
+#
iface wlan0 inet dhcp
-wireless_mode managed
-wireless_essid any
+ wireless_mode managed
+ wireless_essid any
+#
+#
+# Same as above but locked to a specific access point:
+#
+#iface wlan0 inet dhcp
+# wireless_mode managed
+# wireless-essid some-essid
+#
+# A WEP encrypted connection locked to a specific access point:
+#
+#iface wlan0 inet dhcp
+# wireless-essid some-essid
+# wireless-key s:My-PlainText-Password
+# wireless-mode managed
+#
+# A WPA1 or WPA2 encrypted connection locked to a specific access point.
+# The WLAN cards firmware is updated temporarily to allow WPA
+# connections. Your card may or may not need the update.
+#
+#iface wlan0 inet dhcp
+# wpa-essid some-essid
+# wpa-psk My-PlainText-Password
+# pre-up iwpriv wlan0 reset 1
+# pre-up prism2_srec -r wlan0 /etc/pcmcia/rf010804.hex
+
iface atml0 inet dhcp
# Wired or wireless interfaces
diff --git a/packages/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index 53c9f3d17c..6851ae8d9a 100644
--- a/packages/netbase/netbase_4.21.bb
+++ b/packages/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPL"
-PR = "r16"
+PR = "r18"
inherit update-rc.d
diff --git a/packages/nslu2-binary-only/unslung-rootfs/mkfs.ext3 b/packages/nslu2-binary-only/unslung-rootfs/mkfs.ext3
new file mode 100755
index 0000000000..49a88c0e06
--- /dev/null
+++ b/packages/nslu2-binary-only/unslung-rootfs/mkfs.ext3
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Fix obscure problem - redirect stdout iff mkfs.ext3
+# is being invoked by the Linksys GUI format utility.
+#
+u=`/bin/pidof utility.cgi`
+if [ ! -f "/tmp/Preparing" -o "x${u}" = "x" -o \
+ "y${1}" != "y-m" -o "z${2}" != "z1" ]
+then
+ /usr/bin/mke2fs -j $@
+else
+ /usr/bin/mke2fs -j $@ >/tmp/mkfs.$$.log
+fi
diff --git a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
index dab61db94e..23b240debc 100644
--- a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
+++ b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
@@ -1,7 +1,7 @@
SECTION = "base"
COMPATIBLE_MACHINE = "nslu2"
-PR = "r18"
+PR = "r19"
DEPENDS = "nslu2-linksys-libs nslu2-linksys-sambacodepages"
@@ -55,6 +55,7 @@ SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \
file://upgrade.htm \
file://telnet.htm \
file://rc.bootbin \
+ file://mkfs.ext3 \
"
S = "${WORKDIR}/nslu2-linksys-ramdisk-2.3r63"
@@ -163,6 +164,10 @@ do_compile () {
rm -f ${S}/bin/busybox
ln -s slingbox ${S}/bin/busybox
+ # Add in the kludge to fix the strange Linksys GUI format problem.
+ rm -f ${S}/usr/bin/mkfs.ext3
+ install -m 755 ${WORKDIR}/mkfs.ext3 ${S}/usr/bin/mkfs.ext3
+
# No reason not to have a home directory for root...
mkdir -p ${S}/root
chmod 755 ${S}/root
diff --git a/packages/ntp/ntp-ssl_4.1.2.bb b/packages/ntp/ntp-ssl_4.1.2.bb
index 4e499ea4b7..dd8ca66f25 100644
--- a/packages/ntp/ntp-ssl_4.1.2.bb
+++ b/packages/ntp/ntp-ssl_4.1.2.bb
@@ -1,4 +1,4 @@
-require ntp_4.1.2.bb
+require ntp_${PV}.bb
DEPENDS = "openssl"
PR = "r2"
diff --git a/packages/ntp/ntp.inc b/packages/ntp/ntp.inc
new file mode 100644
index 0000000000..6a14521d36
--- /dev/null
+++ b/packages/ntp/ntp.inc
@@ -0,0 +1,32 @@
+DESCRIPTION = "The Network Time Protocol (NTP) is used to \
+synchronize the time of a computer client or server to \
+another server or reference time source, such as a radio \
+or satellite receiver or modem."
+HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "ntp"
+RRECOMMENDS = "iana-etc"
+
+SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
+ file://ipv6only-workaround.patch;patch=1 \
+ file://ntpd \
+ file://ntp.conf \
+ file://ntpdate"
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "ntpd"
+# No dependencies, so just go in at the standard level (20)
+INITSCRIPT_PARAMS = "defaults"
+
+# The ac_cv_header_readline_history is to stop ntpdc depending on either
+# readline or curses
+EXTRA_OECONF = "--without-openssl --without-crypto ac_cv_header_readline_history_h=no"
+CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
+
+PACKAGES += "ntpdate ntp-bin ntp-tickadj ntp-utils"
+# NOTE: you don't need ntpdate, use "ntpdc -q -g -x"
+
+# This should use rc.update
+FILES_ntpdate = "${bindir}/ntpdate ${sysconfdir}/init.d/ntpdate"
diff --git a/packages/ntp/ntp_4.1.2.bb b/packages/ntp/ntp_4.1.2.bb
index dc2d203690..4300b5bbe6 100644
--- a/packages/ntp/ntp_4.1.2.bb
+++ b/packages/ntp/ntp_4.1.2.bb
@@ -1,11 +1,5 @@
-DESCRIPTION = "The Network Time Protocol (NTP) is used to \
-synchronize the time of a computer client or server to \
-another server or reference time source, such as a radio \
-or satellite receiver or modem."
-HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome"
-SECTION = "console/network"
-PRIORITY = "optional"
-LICENSE = "ntp"
+require ntp.inc
+
PR = "r4"
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-${PV}.tar.gz \
@@ -14,15 +8,6 @@ SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-${PV}.tar.g
file://ntpdate \
file://ntp"
-inherit autotools
-
-EXTRA_OECONF = "--without-openssl"
-CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
-
-PACKAGES =+ "ntpdate"
-
-FILES_ntpdate = "${bindir}/ntpdate /etc/init.d/ntpdate"
-
do_install_append() {
install -d ${D}${sysconfdir}/init.d
install -m 755 ${WORKDIR}/ntpdate ${D}${sysconfdir}/init.d
diff --git a/packages/ntp/ntp_4.2.0.bb b/packages/ntp/ntp_4.2.0.bb
index 0ce7e10ac9..63e7d552a8 100644
--- a/packages/ntp/ntp_4.2.0.bb
+++ b/packages/ntp/ntp_4.2.0.bb
@@ -1,11 +1,5 @@
-DESCRIPTION = "The Network Time Protocol (NTP) is used to \
-synchronize the time of a computer client or server to \
-another server or reference time source, such as a radio \
-or satellite receiver or modem."
-HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome"
-SECTION = "console/network"
-PRIORITY = "optional"
-LICENSE = "ntp"
+require ntp.inc
+
PR = "r8"
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
@@ -16,24 +10,8 @@ SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ntp.conf \
file://ntpdate"
-
-INITSCRIPT_NAME = "ntpd"
-# No dependencies, so just go in at the standard level (20)
-INITSCRIPT_PARAMS = "defaults"
-
-inherit autotools update-rc.d
-
-# The ac_cv_header_readline_history is to stop ntpdc depending on either
-# readline or curses
-EXTRA_OECONF = "--without-openssl --without-crypto ac_cv_header_readline_history_h=no"
-CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
-
-PACKAGES += "ntpdate ntp-bin ntp-tickadj"
-# NOTE: you don't need ntpdate, use "ntpdc -q -g -x"
PROVIDES = "ntpdate-${PV} ntpdate-${PV}-${PR} ntpdate"
-# This should use rc.update
-FILES_ntpdate = "${bindir}/ntpdate ${sysconfdir}/init.d/ntpdate"
#This is too painful - perl is only needed for ntp-wait and ntptrace, which are
#perl scripts, and installing perl is an enormous overhead for a user who only
#needs ntpq
diff --git a/packages/ntp/ntp_4.2.2p3.bb b/packages/ntp/ntp_4.2.2p3.bb
index de755824c9..28853e4fc8 100644
--- a/packages/ntp/ntp_4.2.2p3.bb
+++ b/packages/ntp/ntp_4.2.2p3.bb
@@ -1,11 +1,4 @@
-DESCRIPTION = "The Network Time Protocol (NTP) is used to \
-synchronize the time of a computer client or server to \
-another server or reference time source, such as a radio \
-or satellite receiver or modem."
-HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome"
-SECTION = "console/network"
-PRIORITY = "optional"
-LICENSE = "ntp"
+require ntp.inc
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ipv6only-workaround.patch;patch=1 \
@@ -14,23 +7,6 @@ SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ntpdate"
-INITSCRIPT_NAME = "ntpd"
-# No dependencies, so just go in at the standard level (20)
-INITSCRIPT_PARAMS = "defaults"
-
-inherit autotools update-rc.d
-
-# The ac_cv_header_readline_history is to stop ntpdc depending on either
-# readline or curses
-EXTRA_OECONF = "--without-openssl --without-crypto ac_cv_header_readline_history_h=no"
-CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
-
-PACKAGES += "ntpdate ntp-bin ntp-tickadj ntp-utils"
-# NOTE: you don't need ntpdate, use "ntpdc -q -g -x"
-
-# This should use rc.update
-FILES_ntpdate = "${bindir}/ntpdate ${sysconfdir}/init.d/ntpdate"
-
# ntp originally includes tickadj. It's split off for inclusion in small firmware images on platforms
# with wonky clocks (e.g. OpenSlug)
RDEPENDS_${PN} = "${PN}-tickadj"
diff --git a/packages/nunome/files/timer.patch b/packages/nunome/files/timer.patch
new file mode 100644
index 0000000000..ccd65647be
--- /dev/null
+++ b/packages/nunome/files/timer.patch
@@ -0,0 +1,21 @@
+diff --git a/ui/nnmCanvas.cpp b/ui/nnmCanvas.cpp
+index a548ddf..3b8e7d4 100755
+--- a/ui/nnmCanvas.cpp
++++ b/ui/nnmCanvas.cpp
+@@ -35,7 +35,7 @@
+
+ nnmCanvas::nnmCanvas( QWidget *parent, int timeoutParam, int initID,
+ const char *name, WFlags f )
+- : QWidget( parent, name, f )
++ : QWidget( parent, name, f ), timer(0)
+ {
+ setFixedSize( NnmCANVAS_DISPLAY_SIZE, NnmCANVAS_DISPLAY_SIZE );
+ init();
+@@ -149,7 +149,7 @@ void nnmCanvas::resizeEvent( QResizeEvent *event )
+
+ void nnmCanvas::init( void )
+ {
+- if ( timeoutMsec > 0 && timer->isActive() ) {
++ if ( timeoutMsec > 0 && timer && timer->isActive() ) {
+ timer->stop();
+ } \ No newline at end of file
diff --git a/packages/nunome/nunome_1.0.2.bb b/packages/nunome/nunome_1.0.2.bb
index ae29277291..0401c195e0 100644
--- a/packages/nunome/nunome_1.0.2.bb
+++ b/packages/nunome/nunome_1.0.2.bb
@@ -1,11 +1,13 @@
DESCRIPTION = "Japanese input method plugin"
+HOMEPAGE = "http://www.sikigami.com/nunome-Qtopia-1.0/"
SECTION = "opie/inputmethods"
PRIORITY = "optional"
LICENSE = "GPL"
-HOMEPAGE = "http://www.sikigami.com/nunome-Qtopia-1.0/"
RDEPENDS = "virtual/japanese-font"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/gakusei/nunome-${PV}.tar.bz2 \
+ file://timer.patch;patch=1 \
file://nunome.patch;patch=1"
S = "${WORKDIR}/nunome"
diff --git a/packages/nylon/simple-firewall.bb b/packages/nylon/simple-firewall.bb
index 4f51f88277..fc7c3de6a3 100644
--- a/packages/nylon/simple-firewall.bb
+++ b/packages/nylon/simple-firewall.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "simple firewall configuratiopn script"
SECTION = "base"
PRIORITY = "optional"
-MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
LICENSE = "GPL"
DEPENDS = "virtual/kernel"
#SRCDATE = "20060114"
diff --git a/packages/openmoko-base/files/session b/packages/openmoko-base/files/session
index 1ac858f7b9..91b38a0bea 100644
--- a/packages/openmoko-base/files/session
+++ b/packages/openmoko-base/files/session
@@ -2,18 +2,16 @@
SHOWCURSOR="no"
-matchbox-desktop --icon-size 96 \
- --icon-padding 60 \
- --font sans-16 \
- --titlefont sans-20:bold \
- --bg img-tiled:/usr/share/themes/openmoko-standard/gtk-2.0/mokopanedwindow-upper-enclosing.png &
-# --bg col-gradient-vertical:#000000,#aaaaaa &
-matchbox-panel-2 --start-applets=openmoko-panel-mainmenu,showdesktop,systray,windowselector --end-applets=openmoko-panel-battery,openmoko-panel-clock,openmoko-panel-gsm &
+matchbox-panel-2 \
+ --start-applets=openmoko-panel-mainmenu,systray \
+ --end-applets=openmoko-panel-battery,openmoko-panel-gsm,openmoko-panel-gps,openmoko-panel-usb,openmoko-panel-bt,openmoko-panel-clock &
#start some old-style panel plugins to get a keyboard and battery status
mbinputmgr &
+mb-applet-startup-monitor &
openmoko-footer &
+openmoko-today --desktop &
openmoko-dialer &
exec matchbox-window-manager -use_titlebar no -use_cursor $SHOWCURSOR $@
diff --git a/packages/openmoko-base/openmoko-session_svn.bb b/packages/openmoko-base/openmoko-session_svn.bb
index 6daacb2842..18781493f6 100644
--- a/packages/openmoko-base/openmoko-session_svn.bb
+++ b/packages/openmoko-base/openmoko-session_svn.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Matchbox session files for OpenMoko"
SECTION = "openmoko/base"
-RDEPENDS = "matchbox-panel-2 matchbox-wm gconf matchbox-applet-startup-monitor gtk-theme-clearlooks"
+RDEPENDS = "matchbox-panel-2 matchbox-wm openmoko-today gconf matchbox-applet-startup-monitor gtk-theme-clearlooks"
PV = "0.0+svn${SRCDATE}"
-PR = "r9"
+PR = "r11"
inherit openmoko-base
diff --git a/packages/opensp/opensp-1.5/fix-docdir.patch b/packages/opensp/opensp-1.5/fix-docdir.patch
new file mode 100644
index 0000000000..4866874f4f
--- /dev/null
+++ b/packages/opensp/opensp-1.5/fix-docdir.patch
@@ -0,0 +1,11 @@
+Index: OpenSP-1.5/doc/Makefile.am
+===================================================================
+--- OpenSP-1.5.orig/doc/Makefile.am 2000-05-06 09:10:32.000000000 +1000
++++ OpenSP-1.5/doc/Makefile.am 2007-06-02 12:46:50.000000000 +1000
+@@ -1,6 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+
+-docdir = $(prefix)/doc
+ pkgdocdir = $(docdir)/@PACKAGE@
+
+ MAINTAINERCLEANFILES = Makefile.in
diff --git a/packages/opensp/opensp-1.5/rangmap-fix.patch b/packages/opensp/opensp-1.5/rangmap-fix.patch
new file mode 100644
index 0000000000..55c00a8f08
--- /dev/null
+++ b/packages/opensp/opensp-1.5/rangmap-fix.patch
@@ -0,0 +1,12 @@
+Index: OpenSP-1.5/include/RangeMap.cxx
+===================================================================
+--- OpenSP-1.5.orig/include/RangeMap.cxx 2000-02-26 03:55:21.000000000 +1100
++++ OpenSP-1.5/include/RangeMap.cxx 2007-06-02 11:48:17.000000000 +1000
+@@ -7,6 +7,7 @@
+ #include "RangeMap.h"
+ #include "ISet.h"
+ #include "types.h"
++#include "constant.h"
+
+ #ifdef SP_NAMESPACE
+ namespace SP_NAMESPACE {
diff --git a/packages/opensp/opensp-native_1.5.bb b/packages/opensp/opensp-native_1.5.bb
index 47d05ced76..e0194c5798 100644
--- a/packages/opensp/opensp-native_1.5.bb
+++ b/packages/opensp/opensp-native_1.5.bb
@@ -1,9 +1,11 @@
SECTION = "libs"
DEPENDS = ""
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/OpenSP-${PV}.tar.gz \
file://m4.patch;patch=1 \
- file://attributevalue.patch;patch=1"
+ file://attributevalue.patch;patch=1 \
+ file://rangmap-fix.patch;patch=1"
S = "${WORKDIR}/OpenSP-${PV}"
LICENSE = "MIT"
inherit autotools native
diff --git a/packages/opensp/opensp_1.5.bb b/packages/opensp/opensp_1.5.bb
index 5d6ad639af..839fde5b8a 100644
--- a/packages/opensp/opensp_1.5.bb
+++ b/packages/opensp/opensp_1.5.bb
@@ -1,19 +1,30 @@
-SECTION = "libs"
DESCRIPTION = "OpenSP is a library and a set of tools \
for validating, parsing, and manipulating SGML and \
XML documents."
+HOMEPAGE = "http://openjade.sourceforge.net/"
+SECTION = "libs"
LICENSE = "MIT"
+PR = "r2"
+
+# sh4/gcc3.4.4 with -O2 triggers internal compiler errors
+FULL_OPTIMIZATION_sh4 = "-O1"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/OpenSP-${PV}.tar.gz \
- file://m4.patch;patch=1 \
- file://attributevalue.patch;patch=1"
+ file://m4.patch;patch=1 \
+ file://attributevalue.patch;patch=1 \
+ file://rangmap-fix.patch;patch=1 \
+ file://fix-docdir.patch;patch=1"
+
S = "${WORKDIR}/OpenSP-${PV}"
inherit autotools
do_stage () {
- oe_libinstall -a -so -C lib libosp ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/OpenSP
- install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/OpenSP/
- install -m 0644 ${S}/include/*.cxx ${STAGING_INCDIR}/OpenSP/
- install -m 0644 ${S}/config.h ${STAGING_INCDIR}/OpenSP/config.h
+ oe_libinstall -a -so -C lib libosp ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/OpenSP
+ install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/OpenSP/
+ install -m 0644 ${S}/include/*.cxx ${STAGING_INCDIR}/OpenSP/
+ install -m 0644 ${S}/config.h ${STAGING_INCDIR}/OpenSP/config.h
}
+
+FILES_${PN} += "${datadir}/OpenSP"
diff --git a/packages/openssl/openssl.inc b/packages/openssl/openssl.inc
index 9c648f0ba8..25388b5fbb 100644
--- a/packages/openssl/openssl.inc
+++ b/packages/openssl/openssl.inc
@@ -14,7 +14,7 @@ export CFLAG_mtx-1 := "${@'${CFLAG}'.replace('-O2', '')}"
export CFLAG_mtx-2 := "${@'${CFLAG}'.replace('-O2', '')}"
export DIRS = "crypto ssl apps"
-export EX_LIBS = "-lgcc -ldl -L${STAGING_LIBDIR}"
+export EX_LIBS = "-lgcc -ldl ${TARGET_LDFLAGS}"
export AS = "${CC} -c"
PACKAGES =+ "libcrypto libssl"
diff --git a/packages/opie-init/opie-init/opie b/packages/opie-init/opie-init/opie
index 63eeb7b47d..4a7a9e4330 100755
--- a/packages/opie-init/opie-init/opie
+++ b/packages/opie-init/opie-init/opie
@@ -53,17 +53,15 @@ case $1 in
$OPIEDIR/bin/opie-login -terminal 3
else
$OPIEDIR/bin/opie-reorgfiles
- if [ -x /usr/bin/ssh-agent ]; then
- SSHAGENT=/usr/bin/ssh-agent
- else
- SSHAGENT=""
- fi
if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
fi
echo Starting Opie....
- $SSHAGENT $OPIEDIR/bin/qpe -terminal 3
+ (
+ test -x /usr/bin/ssh-agent && eval $(/usr/bin/ssh-agent -s) && echo $SSH_AGENT_PID>/var/run/opie-ssh-agent.pid ;
+ $OPIEDIR/bin/qpe -terminal 3
+ )
echo -n >/var/log/opie-qss.log
test -x $OPIEDIR/bin/qpe && { for attempt in 0 1 2 3 4 5 6 7 8 9 a b c d e f ; do
sleep 1
@@ -72,17 +70,20 @@ case $1 in
echo "Starting qss" >>/var/log/opie-qss.log
$OPIEDIR/bin/qss </dev/null >>/var/log/opie-qss.log 2>&1
echo "qss exited, will try to restart" >>/var/log/opie-qss.log
- done; } &
+ done; rm /var/run/opie-qss-loop.pid; } &
+ echo $! >/var/run/opie-qss-loop.pid
fi
;;
'stop')
echo "Stopping Opie..."
+ test -r /var/run/opie-qss-loop.pid && kill $(cat /var/run/opie-qss-loop.pid) 2>/dev/null ; rm /var/run/opie-qss-loop.pid
killall qss 2>/dev/null
killall qpe 2>/dev/null
killall opie-login 2>/dev/null
killall quicklauncher 2>/dev/null
+ test -r /var/run/opie-ssh-agent.pid && kill $(cat /var/run/opie-ssh-agent.pid) 2>/dev/null ; rm /var/run/opie-ssh-agent.pid
true
;;
diff --git a/packages/opie-init/opie-init_1.2.2.bb b/packages/opie-init/opie-init_1.2.2.bb
index bc1a4bc4e6..ca10d61221 100644
--- a/packages/opie-init/opie-init_1.2.2.bb
+++ b/packages/opie-init/opie-init_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-PR = "r2"
+PR = "r4"
SRC_URI = "file://opie-reorgfiles \
file://opie \
diff --git a/packages/opie-multikey/files/ru.keymap b/packages/opie-multikey/files/ru.keymap
new file mode 100644
index 0000000000..9f5d1e360b
--- /dev/null
+++ b/packages/opie-multikey/files/ru.keymap
@@ -0,0 +1,255 @@
+# Created by Anton Kachalov (mouse@altlinux.ru)
+title = Russian
+sw = RU
+
+1 0x1000 0 2 # and you can write whatever you want after the last element
+
+
+ "9 9 2 1"
+ ". c None"
+ "a c #000000"
+ "........."
+ "........."
+ ".aa.aa.aa"
+ ".a..a..a."
+ ".aa.aa.a."
+ ".a...a.a."
+ ".aa.aa.aa"
+ "........."
+ "........."
+
+1 0 0x0451 2 # CYRILLIC SMALL LETTER IO
+1 0 0x31 2 # 1
+1 0 0x32 2 # 2
+1 0 0x33 2 # 3
+1 0 0x34 2 # 4
+1 0 0x35 2 # 5
+1 0 0x36 2 # 6
+1 0 0x37 2 # 7
+1 0 0x38 2 # 8
+1 0 0x39 2 # 9
+1 0 0x30 2 # 0
+1 0 0x2d 2 # -
+1 0 0x3d 2 # =
+1 0x1003 0 2
+
+ "9 9 2 1"
+ ". c None"
+ "a c #000000"
+ "........."
+ "........."
+ "...a....."
+ "..aa....."
+ ".aaaaaaaa"
+ "..aa....."
+ "...a....."
+ "........."
+ "........."
+
+
+2 0x1001 0x9 3 # tab char, but why doesnt this work...?
+
+
+ "11 9 2 1"
+ ". c None"
+ "a c #000000"
+ "..........."
+ "..........."
+ ".....a..a.."
+ ".....aa.a.."
+ ".aaaaaaaa.."
+ ".....aa.a.."
+ ".....a..a.."
+ "..........."
+ "..........."
+2 0 0x0439 2 # CYRILLIC SMALL LETTER SHORT I
+2 0 0x0446 2 # CYRILLIC SMALL LETTER TSE
+2 0 0x0443 2 # CYRILLIC SMALL LETTER U
+2 0 0x043a 2 # CYRILLIC SMALL LETTER KA
+2 0 0x0435 2 # CYRILLIC SMALL LETTER IE
+2 0 0x043d 2 # CYRILLIC SMALL LETTER EN
+2 0 0x0433 2 # CYRILLIC SMALL LETTER GHE
+2 0 0x0448 2 # CYRILLIC SMALL LETTER SHA
+2 0 0x0449 2 # CYRILLIC SMALL LETTER SHCHA
+2 0 0x0437 2 # CYRILLIC SMALL LETTER ZE
+2 0 0x0445 2 # CYRILLIC SMALL LETTER HA
+2 0 0x044a 2 # CYRILLIC SMALL LETTER HARD SIGN
+2 0 0x2f 4 # /
+
+3 0x1024 0 4
+ "17 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " .. . .. .. "
+ " . . . . . . "
+ " . ... .. . "
+ " . . . . . "
+ " .. . . . .. "
+ " "
+3 0 0x0444 2 # CYRILLIC SMALL LETTER EF
+3 0 0x044b 2 # CYRILLIC SMALL LETTER YERU
+3 0 0x0432 2 # CYRILLIC SMALL LETTER VE
+3 0 0x0430 2 # CYRILLIC SMALL LETTER A
+3 0 0x043f 2 # CYRILLIC SMALL LETTER PE
+3 0 0x0440 2 # CYRILLIC SMALL LETTER ER
+3 0 0x043e 2 # CYRILLIC SMALL LETTER O
+3 0 0x043b 2 # CYRILLIC SMALL LETTER EL
+3 0 0x0434 2 # CYRILLIC SMALL LETTER DE
+3 0 0x0436 2 # CYRILLIC SMALL LETTER ZHE
+3 0 0x044d 2 # CYRILLIC SMALL LETTER E
+3 0x1004 0 5 # ENTER
+ "16 9 2 1"
+ ". c None"
+ "a c #000000"
+ "................"
+ "................"
+ "...........a...."
+ "....aa.....a...."
+ "...aa......a...."
+ "..aaaaaaaaaa...."
+ "...aa..........."
+ "....aa.........."
+ "................"
+
+4 0x1020 0 5
+ "21 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " .. . . ... ... ... "
+ " . . . . . . "
+ " . ... . .. . "
+ " . . . . . . "
+ " .. . . ... . . "
+ " "
+4 0 0x044f 2 # CYRILLIC SMALL LETTER YA
+4 0 0x0447 2 # CYRILLIC SMALL LETTER CHE
+4 0 0x0441 2 # CYRILLIC SMALL LETTER ES
+4 0 0x043c 2 # CYRILLIC SMALL LETTER EM
+4 0 0x0438 2 # CYRILLIC SMALL LETTER I
+4 0 0x0442 2 # CYRILLIC SMALL LETTER TE
+4 0 0x044c 2 # CYRILLIC SMALL LETTER SOFT SIGN
+4 0 0x0431 2 # CYRILLIC SMALL LETTER BE
+4 0 0x044e 2 # CYRILLIC SMALL LETTER YU
+4 0 0x2e 2 # .
+4 0x1020 0 5 # SHIFT
+ "21 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " .. . . ... ... ... "
+ " . . . . . . "
+ " . ... . .. . "
+ " . . . . . . "
+ " .. . . ... . . "
+ " "
+
+5 0x1021 0 3
+ "17 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " .. ... .. . "
+ " . . . . . "
+ " . . .. . "
+ " . . . . . "
+ " .. . . . ... "
+ " "
+5 0x1023 0 3
+ "13 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " . . ... "
+ " . . . . "
+ " ... . . "
+ " . . . . "
+ " . . ... . "
+ " "
+5 0 0x20 16
+5 0x1023 0 3
+ "13 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " . . ... "
+ " . . . . "
+ " ... . . "
+ " . . . . "
+ " . . ... . "
+ " "
+5 0x1021 0 3
+ "17 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " .. ... .. . "
+ " . . . . . "
+ " . . .. . "
+ " . . . . . "
+ " .. . . . ... "
+ " "
+5 0x1030 0 2 #original code is F1, but i'll use it for turning on/off the config dialog
+ "13 7 2 1"
+ " c None"
+ ". c #000000"
+ " "
+ " . "
+ " ... "
+ " ..... "
+ " . "
+ " . "
+ " "
+
+# shift table
+0x0451 0x0401 # CYRILLIC SMALL LETTER IO -> CYRILLIC CAPITAL LETTER IO
+0x31 0x21 # 1 -> !
+0x32 0x22 # 2 -> "
+0x33 0x4e # 3 -> N
+0x34 0x3b # 4 -> ;
+0x35 0x25 # 5 -> %
+0x36 0x3a # 6 -> :
+0x37 0x3f # 7 -> ?
+0x38 0x2a # 8 -> *
+0x39 0x28 # 9 -> (
+0x30 0x29 # 0 -> )
+0x2d 0x5f # - -> _
+0x3d 0x2b # = -> +
+
+0x0439 0x0419 # CYRILLIC SMALL LETTER SHORT I -> CYRILLIC CAPITAL LETTER SHORT I
+0x0446 0x0426 # CYRILLIC SMALL LETTER TSE -> CYRILLIC CAPITAL LETTER TSE
+0x0443 0x0423 # CYRILLIC SMALL LETTER U -> CYRILLIC CAPITAL LETTER U
+0x043a 0x041a # CYRILLIC SMALL LETTER KA -> CYRILLIC CAPITAL LETTER KA
+0x0435 0x0415 # CYRILLIC SMALL LETTER IE -> CYRILLIC CAPITAL LETTER IE
+0x043d 0x041d # CYRILLIC SMALL LETTER EN -> CYRILLIC CAPITAL LETTER EN
+0x0433 0x0413 # CYRILLIC SMALL LETTER GHE -> CYRILLIC CAPITAL LETTER GHE
+0x0448 0x0428 # CYRILLIC SMALL LETTER SHA -> CYRILLIC CAPITAL LETTER SHA
+0x0449 0x0429 # CYRILLIC SMALL LETTER SHCHA -> CYRILLIC CAPITAL LETTER SHCHA
+0x0437 0x0417 # CYRILLIC SMALL LETTER ZE -> CYRILLIC CAPITAL LETTER ZE
+0x0445 0x0425 # CYRILLIC SMALL LETTER HA -> CYRILLIC CAPITAL LETTER HA
+0x044a 0x042a # CYRILLIC SMALL LETTER HARD SIGN -> CYRILLIC CAPITAL LETTER HARD SIGN
+
+0x0444 0x0424 # CYRILLIC SMALL LETTER EF -> CYRILLIC CAPITAL LETTER EF
+0x044b 0x042b # CYRILLIC SMALL LETTER YERU -> CYRILLIC CAPITAL LETTER YERU
+0x0432 0x0412 # CYRILLIC SMALL LETTER VE -> CYRILLIC CAPITAL LETTER VE
+0x0430 0x0410 # CYRILLIC SMALL LETTER A -> CYRILLIC CAPITAL LETTER A
+0x043f 0x041f # CYRILLIC SMALL LETTER PE -> CYRILLIC CAPITAL LETTER PE
+0x0440 0x0420 # CYRILLIC SMALL LETTER ER -> CYRILLIC CAPITAL LETTER ER
+0x043e 0x041e # CYRILLIC SMALL LETTER O -> CYRILLIC CAPITAL LETTER O
+0x043b 0x041b # CYRILLIC SMALL LETTER EL -> CYRILLIC CAPITAL LETTER EL
+0x0434 0x0414 # CYRILLIC SMALL LETTER DE -> CYRILLIC CAPITAL LETTER DE
+0x0436 0x0416 # CYRILLIC SMALL LETTER ZHE -> CYRILLIC CAPITAL LETTER ZHE
+0x044d 0x042d # CYRILLIC SMALL LETTER E -> CYRILLIC CAPITAL LETTER E
+
+0x044f 0x042f # CYRILLIC SMALL LETTER YA -> CYRILLIC CAPITAL LETTER YA
+0x0447 0x0427 # CYRILLIC SMALL LETTER CHE -> CYRILLIC CAPITAL LETTER CHE
+0x0441 0x0421 # CYRILLIC SMALL LETTER ES -> CYRILLIC CAPITAL LETTER ES
+0x043c 0x041c # CYRILLIC SMALL LETTER EM -> CYRILLIC CAPITAL LETTER EM
+0x0438 0x0418 # CYRILLIC SMALL LETTER I -> CYRILLIC CAPITAL LETTER I
+0x0442 0x0422 # CYRILLIC SMALL LETTER TE -> CYRILLIC CAPITAL LETTER TE
+0x044c 0x042c # CYRILLIC SMALL LETTER SOFT SIGN -> CYRILLIC CAPITAL LETTER SOFT SIGN
+0x0431 0x0411 # CYRILLIC SMALL LETTER BE -> CYRILLIC CAPITAL LETTER BE
+0x044e 0x042e # CYRILLIC SMALL LETTER YU -> CYRILLIC CAPITAL LETTER YU
+0x2f 0x7c # / -> |
+0x2e 0x2c # . -> ,
diff --git a/packages/opie-multikey/opie-multikey.inc b/packages/opie-multikey/opie-multikey.inc
index e936072b4c..9676111efa 100644
--- a/packages/opie-multikey/opie-multikey.inc
+++ b/packages/opie-multikey/opie-multikey.inc
@@ -32,5 +32,6 @@ do_install() {
install -d ${D}${palmtopdir}/share/multikey/
install -m 0644 ${WORKDIR}/share/multikey/*.keymap ${D}${palmtopdir}/share/multikey/
install -m 0644 ${WORKDIR}/share/multikey/README ${D}${palmtopdir}/share/multikey/
+ install -m 0644 ${FILESDIR}/ru.keymap ${D}${palmtopdir}/share/multikey/
}
diff --git a/packages/opie-reader/files/.mtn2git_empty b/packages/opie-reader/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-reader/files/.mtn2git_empty
diff --git a/packages/opie-reader/files/opie-reader-unicode-copy.patch b/packages/opie-reader/files/opie-reader-unicode-copy.patch
new file mode 100644
index 0000000000..d7d1ae24bd
--- /dev/null
+++ b/packages/opie-reader/files/opie-reader-unicode-copy.patch
@@ -0,0 +1,11 @@
+--- opie-reader/QTReaderApp.cpp.orig 2005-05-18 00:48:25.000000000 +0200
++++ opie-reader/QTReaderApp.cpp 2006-04-08 15:55:43.000000000 +0200
+@@ -2558,7 +2558,7 @@
+ reader->jumpto(m_savedpos);
+ while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF)
+ {
+- text += ch;
++ text += QChar(ch);
+ }
+ cb->setText(text);
+ reader->locate(currentpos);
diff --git a/packages/opie-reader/files/qt4.patch b/packages/opie-reader/files/qt4.patch
new file mode 100644
index 0000000000..f19000f12f
--- /dev/null
+++ b/packages/opie-reader/files/qt4.patch
@@ -0,0 +1,2572 @@
+diff --git a/Aportis.cpp b/Aportis.cpp
+index 37dcc99..03c26ea 100644
+--- a/Aportis.cpp
++++ b/Aportis.cpp
+@@ -443,8 +443,7 @@ unsuspend();
+ gotorecordnumber(tgtrec);
+ UInt8* imgbuffer = new UInt8[reclen];
+ fread(imgbuffer, 1, reclen, fin);
+- QByteArray arr;
+- arr.assign((const char*)imgbuffer, reclen);
++ QByteArray arr((const char*)imgbuffer, reclen);
+
+ QImage* qimage = new QImage(arr);
+ fseek(fin, cur, SEEK_SET);
+diff --git a/Bkmks.cpp b/Bkmks.cpp
+index 45aa045..c67db9e 100644
+--- a/Bkmks.cpp
++++ b/Bkmks.cpp
+@@ -32,8 +32,7 @@ Bkmk::Bkmk(const Bkmk& rhs) :
+ m_annolen(0),
+ m_position(0)
+ {
+- init(rhs.name(), sizeof(tchar)*(ustrlen(rhs.name())+1), rhs.anno(),
+- sizeof(tchar)*(ustrlen(rhs.anno())+1), rhs.value());
++ *this = rhs;
+ }
+
+ Bkmk::Bkmk(const tchar* _nm, const tchar* _anno, unsigned int _p) : m_position(_p)
+diff --git a/BuffDoc.cpp b/BuffDoc.cpp
+index 355d14d..170ed43 100644
+--- a/BuffDoc.cpp
++++ b/BuffDoc.cpp
+@@ -23,6 +23,8 @@
+ #include "Reb.h"
+ #endif
+
++#include "uqtcommon.h"
++
+
+ linkType BuffDoc::hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm)
+ {
+@@ -674,35 +676,19 @@ int BuffDoc::openfile(QWidget* _parent, const char *src)
+ }
+ // //qDebug("Doing final open:%x:%x",exp,filt);
+ #else
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString codecpath(getenv("OPIEDIR"));
+-#else
+- QString codecpath(getenv("QTDIR"));
+-#endif
+- codecpath += "/plugins/reader/codecs";
+-#else
+- QString codecpath(getenv("READERDIR"));
+- codecpath += "/codecs";
+-#endif
+- QDir d(codecpath, "*.so");
++ QDir d(uqt_codecspath(), "*.so");
+
+ if (d.exists())
+ {
+
+- const QFileInfoList *list = d.entryInfoList();
+- QFileInfoListIterator it( *list ); // create list iterator
+- QFileInfo *fi; // pointer for traversing
+-
++ QFileInfoList list = d.entryInfoList();
+ int ret = -1;
+- while ( ret != 0 && (fi=it.current()) )
+- { // for each file...
++ for(QFileInfoListIterator it=list.begin();ret && it!=list.end();++it) {
+ if (exp != NULL) delete exp;
+- qDebug("Trying %s", (const char*)fi->fileName());
+- exp = new ebookcodec(fi->fileName());
++ qDebug("Trying %s", (const char*)it->fileName());
++ exp = new ebookcodec(it->fileName());
+ ret = exp->openfile(src);
+- ++it;
+- }
++ }
+ qDebug("Buffdoc:Finished opening");
+ if (ret != 0)
+ {
+diff --git a/ButtonPrefs.cpp b/ButtonPrefs.cpp
+index 762de55..2c4cad7 100644
+--- a/ButtonPrefs.cpp
++++ b/ButtonPrefs.cpp
+@@ -17,7 +17,7 @@
+ #include <qtooltip.h>
+ #include <qwhatsthis.h>
+ #include <qbuttongroup.h>
+-#include <qmultilineedit.h>
++#include <Qt3Support/Q3MultiLineEdit>
+ #ifdef USECOMBO
+ #include <qcombobox.h>
+ #else
+@@ -26,12 +26,14 @@
+ #include <qfontdatabase.h>
+
+ #include <qlistview.h>
++#include <Qt3Support/Q3ListViewItem>
++#include <QtGui/QKeyEvent>
+
+-class MyQListViewItem : public QListViewItem
++class MyQListViewItem : public Q3ListViewItem
+ {
+ orKey o;
+ public:
+- MyQListViewItem(const orKey& _o, QListView* p, const QString& c1, const QString& c2, const QString& c3) : QListViewItem(p, c1, c2, c3), o(_o) { }
++ MyQListViewItem(const orKey& _o, Q3ListView* p, const QString& c1, const QString& c2, const QString& c3) : Q3ListViewItem(p, c1, c2, c3), o(_o) { }
+ orKey getKey() { return o; }
+ };
+
+@@ -43,7 +45,7 @@ void CButtonPrefs::mapkey(Qt::ButtonState st, int _key)
+ void CButtonPrefs::mapkey(Qt::ButtonState st, int _key, int act)
+ {
+ orKey key(st, _key, ((act == cesScrollMore) || (act == cesScrollLess)));
+- QMap<orKey,QListViewItem*>::Iterator iter = listmap.find(key);
++ QMap<orKey,Q3ListViewItem*>::Iterator iter = listmap.find(key);
+ if (iter != listmap.end())
+ {
+ lb->takeItem(iter.data());
+@@ -112,7 +114,7 @@ CButtonPrefs::CButtonPrefs( QMap<orKey, int>* _kmap, QWidget* parent, const cha
+ {
+ QVBoxLayout* vo = new QVBoxLayout(this);
+ QHBoxLayout* lo = new QHBoxLayout();
+- setFocusPolicy(QWidget::StrongFocus);
++ setFocusPolicy(Qt::StrongFocus);
+ #ifdef USECOMBO
+ action = new QComboBox( this );
+ #else
+@@ -123,17 +125,17 @@ CButtonPrefs::CButtonPrefs( QMap<orKey, int>* _kmap, QWidget* parent, const cha
+
+
+
+- QMultiLineEdit* TextLabel1 = new QMultiLineEdit( this );
++ Q3MultiLineEdit* TextLabel1 = new Q3MultiLineEdit( this );
+ TextLabel1->setText( tr( "Press the key(s) you want assigned to the highlighted function.\n\nPress the delete button to unmap the key.\n\nUse the \"Close\" button (not the [x]) to finish." ) );
+ TextLabel1->setReadOnly(true);
+- TextLabel1->setWordWrap(QMultiLineEdit::WidgetWidth);
++ TextLabel1->setWordWrap(Q3MultiLineEdit::WidgetWidth);
+
+ // lo->addWidget(TextLabel, 0, Qt::AlignTop);
+ // lo->addWidget(action, 0, Qt::AlignTop);
+ lo->addWidget(TextLabel1);
+ lo->addWidget(action);
+ vo->addLayout(lo);
+- lb = new QListView(this);
++ lb = new Q3ListView(this);
+ lb->addColumn( tr( "Key" ) );
+ lb->addColumn( tr( "Function" ) );
+ lb->addColumn( tr( "Scroll" ) );
+diff --git a/ButtonPrefs.h b/ButtonPrefs.h
+index 9af04e1..f09ad02 100644
+--- a/ButtonPrefs.h
++++ b/ButtonPrefs.h
+@@ -11,11 +11,13 @@
+
+ #include <qvariant.h>
+ #include <qwidget.h>
+-#include <qtabdialog.h>
++#include <Qt3Support/Q3TabDialog>
+ #include <qtabwidget.h>
+ #include <qspinbox.h>
+ #include <qcheckbox.h>
+ #include <qlineedit.h>
++#include <qnamespace.h>
++using namespace Qt;
+
+ #define USECOMBO
+
+@@ -33,18 +35,18 @@ class QGridLayout;
+ //class QCheckBox;
+ class QLabel;
+ //class QSpinBox;
+-class QListViewItem;
++class Q3ListViewItem;
+
+-class QListView;
+-class QListViewItem;
++class Q3ListView;
++class Q3ListViewItem;
+
+ class CButtonPrefs : public QWidget
+ {
+ Q_OBJECT
+
+ QMap<orKey, int> *kmap;
+- QMap<orKey, QListViewItem*> listmap;
+- QListView* lb;
++ QMap<orKey, Q3ListViewItem*> listmap;
++ Q3ListView* lb;
+ void keyPressEvent(QKeyEvent* e);
+ #ifdef USECOMBO
+ void populate(QComboBox*);
+diff --git a/CAnnoEdit.cpp b/CAnnoEdit.cpp
+index 35821ed..6ee1321 100644
+--- a/CAnnoEdit.cpp
++++ b/CAnnoEdit.cpp
+@@ -83,8 +83,8 @@ CAnnoEdit::CAnnoEdit(QWidget *parent, const char *name, WFlags f) :
+ {
+ QVBoxLayout* grid = new QVBoxLayout(this);
+ m_name = new QLineEdit(this, "Name");
+- m_anno = new QMultiLineEdit(this, "Annotation");
+- m_anno->setWordWrap(QMultiLineEdit::WidgetWidth);
++ m_anno = new Q3MultiLineEdit(this, "Annotation");
++ m_anno->setWordWrap(Q3MultiLineEdit::WidgetWidth);
+ QPushButton* exitButton = new QPushButton("Okay", this);
+ connect(exitButton, SIGNAL( clicked() ), this, SLOT( slotOkay() ) );
+ QPushButton* cancelButton = new QPushButton("Cancel", this);
+diff --git a/CAnnoEdit.h b/CAnnoEdit.h
+index 78d3eeb..c74c560 100644
+--- a/CAnnoEdit.h
++++ b/CAnnoEdit.h
+@@ -4,15 +4,17 @@
+ #include <qlayout.h>
+ #include <qpushbutton.h>
+ #include <qlineedit.h>
+-#include <qmultilineedit.h>
++#include <Qt3Support/Q3MultiLineEdit>
+ #include <qcombobox.h>
++#include <qnamespace.h>
++using namespace Qt;
+
+ class CAnnoEdit : public QWidget
+ {
+ Q_OBJECT
+
+ QLineEdit* m_name;
+- QMultiLineEdit* m_anno;
++ Q3MultiLineEdit* m_anno;
+ size_t m_posn, m_posn2;
+ QComboBox* colorbox;
+ public:
+diff --git a/CFilter.cpp b/CFilter.cpp
+index a4ea60a..84fa451 100644
+--- a/CFilter.cpp
++++ b/CFilter.cpp
+@@ -9,6 +9,7 @@
+ #include "CDrawBuffer.h"
+ #include "CFilter.h"
+ #include "hrule.h"
++#include "uqtcommon.h"
+
+ #include <qregexp.h>
+ #include <qimage.h>
+@@ -665,17 +666,8 @@ class ErrorFilter : public CFilter
+ #ifndef __STATIC
+ ExternFilter::ExternFilter(const QString& nm, const QString& optional) : filt(NULL), handle(NULL)
+ {
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString filterpath(getenv("OPIEDIR"));
+-#else
+- QString filterpath(getenv("QTDIR"));
+-#endif
+- filterpath += "/plugins/reader/filters/lib";
+-#else
+- QString filterpath(getenv("READERDIR"));
+- filterpath += "/filters/lib";
+-#endif
++ QString filterpath = uqt_filterspath();
++ filterpath += "lib";
+ filterpath += nm;
+ filterpath += ".so";
+ if (QFile::exists(filterpath))
+diff --git a/CHM.cpp b/CHM.cpp
+index ace5abc..3c325bb 100644
+--- a/CHM.cpp
++++ b/CHM.cpp
+@@ -335,7 +335,7 @@ int CHM::getch() {
+ #else
+ QChar letter = chmBuffer[bufpos++];
+ #endif
+- return (int)(char)letter;
++ return letter.unicode();
+ }
+
+ void CHM::getch(tchar& ch, CStyle& sty)
+diff --git a/CloseDialog.cpp b/CloseDialog.cpp
+index 741fa67..62ae906 100644
+--- a/CloseDialog.cpp
++++ b/CloseDialog.cpp
+@@ -5,7 +5,7 @@ CCloseDialog::CCloseDialog(const QString& fname, bool fs, QWidget* parent, const
+ {
+ setCaption(tr("Tidy-up"));
+ QVBoxLayout *tmp = new QVBoxLayout(this);
+- QVButtonGroup* vb = new QVButtonGroup(tr("Delete"), this);
++ Q3VButtonGroup* vb = new Q3VButtonGroup(tr("Delete"), this);
+ tmp->addWidget(vb);
+ QString filestring = tr("Delete") + " " + fname;
+ file = new QCheckBox(filestring, vb);
+diff --git a/CloseDialog.h b/CloseDialog.h
+index 54aaf1c..84609f5 100644
+--- a/CloseDialog.h
++++ b/CloseDialog.h
+@@ -11,14 +11,17 @@
+
+ #include <qvariant.h>
+ #include <qwidget.h>
+-#include <qtabdialog.h>
++#include <Qt3Support/Q3TabDialog>
+ #include <qtabwidget.h>
+ #include <qspinbox.h>
+ #include <qcheckbox.h>
+ #include <qcombobox.h>
+ #include <qlineedit.h>
+ //#include <qpe/menubutton.h>
+-#include <qvbuttongroup.h>
++#include <Qt3Support/Q3VButtonGroup>
++#include <QtGui/QKeyEvent>
++#include <qnamespace.h>
++using namespace Qt;
+
+ class QVBoxLayout;
+ class QHBoxLayout;
+diff --git a/FontControl.cpp b/FontControl.cpp
+index 08b8c52..0be54ba 100644
+--- a/FontControl.cpp
++++ b/FontControl.cpp
+@@ -1,4 +1,5 @@
+ #include <qfontdatabase.h>
++#include <Qt3Support/Q3ValueList>
+
+ #include "FontControl.h"
+
+@@ -33,9 +34,9 @@ int FontControl::gzoom()
+
+ bool FontControl::ChangeFont(QString& n, int tgt)
+ {
+- QValueList<int>::Iterator it;
++ Q3ValueList<int>::Iterator it;
+ QFontDatabase fdb;
+- QValueList<int> sizes = fdb.pointSizes(n);
++ Q3ValueList<int> sizes = fdb.pointSizes(n);
+ if (sizes.count() == 0)
+ {
+ return false;
+@@ -65,3 +66,25 @@ bool FontControl::ChangeFont(QString& n, int tgt)
+ }
+ return true;
+ }
++
++void FontControl::setCourier() {
++ setCourier(m_fontname);
++}
++void FontControl::setCourier(const QString fn) {
++ QFontDatabase fdb;
++ QStringList fl = fdb.families();
++ setCourier(fn,fl);
++}
++void FontControl::setCourier(const QString fn,const QStringList fl) {
++ QString fp;
++ int sp = fn.indexOf(' ');
++ if(sp>=0) fp = fn.left(sp);
++ for(QStringList::const_iterator i=fl.begin();i!=fl.end();++i) {
++ if(
++ ( i->startsWith(fn,Qt::CaseInsensitive)
++ || ( (!fp.isEmpty()) && i->startsWith(fp,Qt::CaseInsensitive) ) )
++ && ( i->endsWith("mono",Qt::CaseInsensitive)
++ || i->endsWith("Fixed") ) )
++ hasCourier(true,*i);
++ }
++}
+diff --git a/FontControl.h b/FontControl.h
+index 563e1a8..c7a54ab 100644
+--- a/FontControl.h
++++ b/FontControl.h
+@@ -2,6 +2,7 @@
+ #define __FONTCONTROL_H
+
+ #include <qfontmetrics.h>
++#include <QFontDatabase>
+ #include "StyleConsts.h"
+
+ class FontControl
+@@ -32,6 +33,7 @@ class FontControl
+ m_fontsizes(NULL), m_hasCourier(false), m_leading(0), m_extraspace(0), m_fixgraphics(true)
+ {
+ ChangeFont(n, size);
++ setCourier();
+ }
+ ~FontControl()
+ {
+@@ -167,6 +169,10 @@ class FontControl
+ {
+ return m_extraspace;
+ }
++
++ void setCourier();
++ void setCourier(const QString fn);
++ void setCourier(const QString fn,const QStringList fl);
+ };
+
+ #endif
+diff --git a/GraphicWin.h b/GraphicWin.h
+index 70d5f7e..a6c556a 100644
+--- a/GraphicWin.h
++++ b/GraphicWin.h
+@@ -1,14 +1,16 @@
+ #ifndef __GRAPHICWIN_H
+ #define __GRAPHICWIN_H
+
+-#include <qscrollview.h>
++#include <Qt3Support/Q3ScrollView>
+ #include <qpixmap.h>
+ #include <qimage.h>
+ #include <qpushbutton.h>
+ #include <qlayout.h>
+ #include <qwmatrix.h>
++#include <qnamespace.h>
++using namespace Qt;
+
+-class GraphicScroll : public QScrollView
++class GraphicScroll : public Q3ScrollView
+ {
+ Q_OBJECT
+ QWidget* m_picture;
+@@ -19,7 +21,7 @@ class GraphicScroll : public QScrollView
+ }
+ public:
+ GraphicScroll( QWidget *parent=0, const char *name=0, WFlags f = 0)
+- : QScrollView(parent, name, f)
++ : Q3ScrollView(parent, name, f)
+ {
+ m_picture = new QWidget(viewport());
+ addChild(m_picture);
+diff --git a/Prefs.cpp b/Prefs.cpp
+index 6c4d45b..d20dc00 100644
+--- a/Prefs.cpp
++++ b/Prefs.cpp
+@@ -7,6 +7,7 @@
+ ** WARNING! All changes made in this file will be lost!
+ ****************************************************************************/
+ #include "Prefs.h"
++#include "uqtcommon.h"
+
+ #include <stdlib.h>
+
+@@ -27,6 +28,7 @@
+ #include <qpe/menubutton.h>
+ #endif
+ #include <qfontdatabase.h>
++#include <Qt3Support/Q3ButtonGroup>
+
+ #ifdef USECOMBO
+ void populate_colours(QComboBox *mb)
+@@ -58,7 +60,7 @@ CLayoutPrefs::CLayoutPrefs( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+ {
+ QHBoxLayout* hb = new QHBoxLayout(this);
+- QButtonGroup* bg = new QButtonGroup(2, Qt::Horizontal, "Text", this);
++ Q3ButtonGroup* bg = new Q3ButtonGroup(2, Qt::Horizontal, "Text", this);
+ hb->addWidget(bg);
+
+ StripCR = new QCheckBox( bg );
+@@ -592,7 +594,7 @@ CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl )
+ vl->setMargin( 0 );
+ hl->setMargin( 0 );
+
+- QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Select Action", this);
++ Q3GroupBox* gb = new Q3GroupBox(1, Qt::Horizontal, "Select Action", this);
+ hl->addWidget( gb );
+
+ annotation = new QCheckBox( gb );
+@@ -607,7 +609,7 @@ CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl )
+ boutput = new QCheckBox( gb );
+ boutput->setText( tr( "Output" ) );
+
+- QButtonGroup* bg = new QButtonGroup(1, Qt::Horizontal, "Plucker", this);
++ Q3ButtonGroup* bg = new Q3ButtonGroup(1, Qt::Horizontal, "Plucker", this);
+ hl->addWidget( bg );
+
+ Depluck = new QCheckBox( bg );
+@@ -618,7 +620,7 @@ CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl )
+
+ Continuous = new QCheckBox( bg );
+ Continuous->setText( tr( "Continuous" ) );
+- bg = new QButtonGroup(2, Qt::Horizontal, "Background", this);
++ bg = new Q3ButtonGroup(2, Qt::Horizontal, "Background", this);
+ vl->addWidget( bg );
+
+ // QLabel* TextLabel = new QLabel( bg );
+@@ -662,7 +664,7 @@ CScrollPrefs::CScrollPrefs( QWidget* parent, const char* name, WFlags fl )
+
+ hl->setMargin( 0 );
+
+- QButtonGroup* bg = new QButtonGroup(2, Qt::Horizontal, "Scroll", this);
++ Q3ButtonGroup* bg = new Q3ButtonGroup(2, Qt::Horizontal, "Scroll", this);
+ hl->addWidget( bg );
+
+ // scrollinplace = new QCheckBox( bg );
+@@ -707,18 +709,8 @@ CScrollPrefs::CScrollPrefs( QWidget* parent, const char* name, WFlags fl )
+ #else
+ outcodec = new MenuButton( this);
+ #endif
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString codecpath(getenv("OPIEDIR"));
+-#else
+- QString codecpath(getenv("QTDIR"));
+-#endif
+- codecpath += "/plugins/reader/outcodecs";
+-#else
+- QString codecpath(getenv("READERDIR"));
+- codecpath += "/outcodecs";
+-#endif
+- QDir ocd(codecpath, "lib*.so");
++ QString codecpath = uqt_outcodecspath();
++ QDir ocd(uqt_outcodecspath(), "lib*.so");
+ for (int i = 0; i < ocd.count(); ++i)
+ {
+ QString tmp(ocd[i]);
+@@ -772,7 +764,7 @@ CInterPrefs::CInterPrefs( QWidget* parent, const char* name, WFlags fl )
+ {
+ QHBoxLayout* hb = new QHBoxLayout(this);
+
+- QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, tr("International"), this);
++ Q3GroupBox* gb = new Q3GroupBox(1, Qt::Horizontal, tr("International"), this);
+
+ hb->addWidget(gb);
+
+@@ -784,7 +776,7 @@ CInterPrefs::CInterPrefs( QWidget* parent, const char* name, WFlags fl )
+ TextLabel = new QLabel( gb );
+ TextLabel->setText( tr( "Ideogram Width" ) );
+ ideogramwidth = new QSpinBox( gb );
+- ideogramwidth->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
++ // ideogramwidth->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+ ideogramwidth->setRange(1,200);
+
+ propfontchange = new QCheckBox( gb );
+@@ -809,7 +801,7 @@ CInterPrefs::CInterPrefs( QWidget* parent, const char* name, WFlags fl )
+
+ QVBoxLayout* vb = new QVBoxLayout;
+
+- gb = new QGroupBox(1, Qt::Horizontal, "Dictionary", this);
++ gb = new Q3GroupBox(1, Qt::Horizontal, "Dictionary", this);
+
+ TextLabel = new QLabel( gb );
+ TextLabel->setText( tr( "Application" ) );
+diff --git a/Prefs.h b/Prefs.h
+index 103484e..a499506 100644
+--- a/Prefs.h
++++ b/Prefs.h
+@@ -11,11 +11,14 @@
+
+ #include <qvariant.h>
+ #include <qwidget.h>
+-#include <qtabdialog.h>
++#include <Qt3Support/Q3TabDialog>
+ #include <qtabwidget.h>
+ #include <qspinbox.h>
+ #include <qcheckbox.h>
+ #include <qlineedit.h>
++#include <qnamespace.h>
++using namespace Qt;
++#include <QtGui/QKeyEvent>
+
+ #define USECOMBO
+
+diff --git a/QFloatBar.h b/QFloatBar.h
+index cc98233..0144fce 100644
+--- a/QFloatBar.h
++++ b/QFloatBar.h
+@@ -1,10 +1,11 @@
+ #ifndef __QFLOATBAR_H
+ #define __QFLOATBAR_H
+
+-#include <qtoolbar.h>
+-#include <qmainwindow.h>
++#include <Qt3Support/Q3ToolBar>
++#include <Qt3Support/Q3MainWindow>
++#include <qnamespace.h>
+
+-class QFloatBar : public QToolBar
++class QFloatBar : public Q3ToolBar
+ {
+ Q_OBJECT
+ virtual void hideEvent(QHideEvent* e)
+@@ -12,7 +13,7 @@ class QFloatBar : public QToolBar
+ /*if (e->spontaneous())*/ emit OnHide();
+ }
+ public:
+- QFloatBar(char* t, QMainWindow* mw, QMainWindow::ToolBarDock td, bool f) : QToolBar(t, mw, td, f) {}
++ QFloatBar(char* t, Q3MainWindow* mw, Qt::ToolBarDock td, bool f) : Q3ToolBar(t, mw, td, f) {}
+ signals:
+ void OnHide();
+ };
+diff --git a/QTReader.cpp b/QTReader.cpp
+index 75da8ac..2c698ba 100644
+--- a/QTReader.cpp
++++ b/QTReader.cpp
+@@ -1999,6 +1999,7 @@ void QTReader::drawFonts()
+ }
+ }
+ emitRedraw();
++ update();
+ }
+ /*
+ else
+@@ -2221,7 +2222,7 @@ void QTReader::init()
+ setBackgroundColor( m_bg );
+ buffdoc.setfilter(getfilter());
+ ChangeFont(m_textsize);
+- setFocusPolicy(QWidget::StrongFocus);
++ setFocusPolicy(Qt::StrongFocus);
+ timer = new QTimer(this);
+ connect(timer, SIGNAL(timeout()), this, SLOT(doscroll()));
+ #ifdef USETIMER
+@@ -3096,7 +3097,7 @@ void QTReader::blitRot(int dx, int dy, int sw, int sh, CDrawBuffer* txt)
+
+ QPixmap pm(sw, sh);
+
+- QPainter pd(&pm, this);
++ QPainter pd(&pm); // , this);
+ if (m_bgpm.isNull())
+ {
+ pd.eraseRect(pm.rect());
+@@ -3136,7 +3137,7 @@ void QTReader::blitRot(int dx, int dy, int sw, int sh, CDrawBuffer* txt)
+ /*
+ p.drawPixmap(QPoint(dx, dy), rp);
+ */
+- bitBlt(this, dx, dy, &rp, 0, 0, -1, -1, CopyROP);
++ bitBlt(this, dx, dy, &rp, 0, 0, -1, -1, QPainter::CompositionMode_Source);
+ }
+
+ QString QTReader::about()
+diff --git a/QTReader.h b/QTReader.h
+index 9daa07a..6afa3e7 100644
+--- a/QTReader.h
++++ b/QTReader.h
+@@ -8,6 +8,9 @@
+ #include "BuffDoc.h"
+ #include "FontControl.h"
+
++#include <qnamespace.h>
++using namespace Qt;
++
+ //#include <qtimer.h>
+
+ class CDrawBuffer;
+diff --git a/QTReaderApp.cpp b/QTReaderApp.cpp
+index b985094..529ec9e 100644
+--- a/QTReaderApp.cpp
++++ b/QTReaderApp.cpp
+@@ -20,7 +20,9 @@
+
+ #include <qregexp.h>
+ #include <qclipboard.h>
+-#include <qwidgetstack.h>
++#include <QStackedWidget>
++#include <Qt3Support/Q3Action>
++#include <qdesktopwidget.h>
+ #ifdef USEQPE
+ #include <qpe/qpemenubar.h>
+ #include <qpe/qpetoolbar.h>
+@@ -31,13 +33,12 @@
+ #include <qpe/menubutton.h>
+ #endif
+ #include <qcombobox.h>
+-#include <qpopupmenu.h>
++#include <Qt3Support/Q3PopupMenu>
+ #include <qaction.h>
+ #include <qapplication.h>
+ #include <qlineedit.h>
+ #include <qtoolbutton.h>
+ #include <qspinbox.h>
+-#include <qobjectlist.h>
+ #include <qstatusbar.h>
+ #ifdef USEQPE
+ #include <qpe/global.h>
+@@ -66,6 +67,7 @@
+ #include "FixedFont.h"
+ #include "URLDialog.h"
+ #include "util.h"
++#include "uqtcommon.h"
+ #include <qfontdatabase.h>
+
+ #ifdef USEQPE
+@@ -103,18 +105,10 @@ bool CheckVersion(int&, int&, char&, QWidget*);
+ #define USEMSGS
+ #define PICDIR "opie-reader/"
+ #else
+-//#define PICDIR "/home/tim/uqtreader/pics/"
+-QString picdir()
+-{
+- QString hd(getenv("READERDIR"));
+- return hd + "/pics";
+-}
+-#define PICDIR picdir()
++#define PICDIR uqt_picspath()
+ #endif
+ #endif
+
+-unsigned long QTReaderApp::m_uid = 0;
+-
+ void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); }
+
+ #ifdef USEQPE
+@@ -156,16 +150,9 @@ void QTReaderApp::listBkmkFiles()
+ d.setFilter( QDir::Files | QDir::NoSymLinks );
+ // d.setSorting( QDir::Size | QDir::Reversed );
+
+- const QFileInfoList *list = d.entryInfoList();
+- QFileInfoListIterator it( *list ); // create list iterator
+- QFileInfo *fi; // pointer for traversing
+- while ( (fi=it.current()) ) { // for each file...
+-
+- bkmkselector->insertItem(fi->fileName(), cnt++);
+-
+- //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
+- ++it; // goto next list element
+- }
++ QFileInfoList list = d.entryInfoList();
++ for(QFileInfoListIterator it=list.begin();it!=list.end();++it)
++ bkmkselector->insertItem(it->fileName(), cnt++);
+
+ #else /* USEQPE */
+ int cnt = 0;
+@@ -192,7 +179,7 @@ void QTReaderApp::listBkmkFiles()
+ //tjw menu->hide();
+
+
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cRmBkmkFile;
+ }
+@@ -207,6 +194,8 @@ void QTReaderApp::hidetoolbars()
+
+ #if defined(USEQPE)
+ menubar->hide();
++#else
++ mb->hide();
+ #endif
+
+ if (m_scrollbar != NULL) m_scrollbar->hide();
+@@ -233,7 +222,7 @@ void QTReaderApp::hidetoolbars()
+ }
+
+ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+- : QMainWindow( parent, name, f ), m_dontSave(false),
++ : Q3MainWindow( parent, name, f ), m_dontSave(false),
+ fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL), m_scrollbar(NULL), m_localscroll(2), m_hidebars(false), m_kmapchanged(false)
+ {
+ {
+@@ -337,41 +326,41 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ // QToolBar* markBar = new QToolBar("File", this);
+
+ #if defined(USEQPE)
+- menubar = new QToolBar("Menus", this, m_tbposition);
++ menubar = new Q3ToolBar("Menus", this, m_tbposition);
+ mb = new QPEMenuBar( menubar );
+ #else
+ mb = new QMenuBar( this );
+ #endif
+
+ #if defined(USEQPE)
+- QPopupMenu* tmp = new QPopupMenu(mb);
++ Q3PopupMenu* tmp = new Q3PopupMenu(mb);
+ mb->insertItem( geticon( "AppsIcon" ), tmp );
+ #else
+ QMenuBar* tmp = mb;
+ #endif
+
+- QPopupMenu *file = new QPopupMenu( mb );
++ Q3PopupMenu *file = new Q3PopupMenu( mb );
+ tmp->insertItem( tr( "File" ), file );
+
+- QPopupMenu *navigation = new QPopupMenu(mb);
++ Q3PopupMenu *navigation = new Q3PopupMenu(mb);
+ tmp->insertItem( tr( "Navigation" ), navigation );
+
+- QPopupMenu *view = new QPopupMenu( mb );
++ Q3PopupMenu *view = new Q3PopupMenu( mb );
+ tmp->insertItem( tr( "View" ), view );
+
+- QPopupMenu *marks = new QPopupMenu( this );
++ Q3PopupMenu *marks = new Q3PopupMenu( this );
+ tmp->insertItem( tr( "Marks" ), marks );
+
+- QPopupMenu *settings = new QPopupMenu( this );
++ Q3PopupMenu *settings = new Q3PopupMenu( this );
+ tmp->insertItem( tr( "Settings" ), settings );
+
+ // addToolBar(menubar, "Menus",QMainWindow::Top);
+ // addToolBar(fileBar, "Toolbar",QMainWindow::Top);
+
+- // QPopupMenu *edit = new QPopupMenu( this );
++ // Q3PopupMenu *edit = new Q3PopupMenu( this );
+
+ /*
+- QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
++ Q3Action *a = new Q3Action( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
+ a->addTo( bar );
+ a->addTo( file );
+@@ -379,34 +368,35 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ QWidget* widge = new QWidget(this);
+ setCentralWidget( widge );
+ QVBoxLayout* vlayout = new QVBoxLayout(widge);
++ vlayout->setMargin(0);
+ m_layout = new QBoxLayout(QBoxLayout::LeftToRight);
+ m_prog = new QLabel(widge);
+ vlayout->addLayout(m_layout, 1);
+ vlayout->addWidget(m_prog);
+
+- editorStack = new QWidgetStack( widge );
++ editorStack = new QStackedWidget( widge );
+ // setCentralWidget( editorStack );
+
+ searchVisible = FALSE;
+ regVisible = FALSE;
+ m_fontVisible = false;
+
+- m_buttonprefs = new CButtonPrefs(&kmap, this);
+- editorStack->addWidget(m_buttonprefs, get_unique_id());
++ m_buttonprefs = new CButtonPrefs(&kmap, editorStack);
++ editorStack->addWidget(m_buttonprefs);
+ connect( m_buttonprefs, SIGNAL( Closed() ), this, SLOT( infoClose() ) );
+
+
+ m_annoWin = new CAnnoEdit(editorStack);
+- editorStack->addWidget(m_annoWin, get_unique_id());
++ editorStack->addWidget(m_annoWin);
+ connect( m_annoWin, SIGNAL( finished(const QString&, const QString&) ), this, SLOT( addAnno(const QString&, const QString&) ) );
+ connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) );
+
+ m_infoWin = new infowin(editorStack);
+- editorStack->addWidget(m_infoWin, get_unique_id());
++ editorStack->addWidget(m_infoWin);
+ connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) );
+
+ m_graphicwin = new GraphicWin(editorStack);
+- editorStack->addWidget(m_graphicwin, get_unique_id());
++ editorStack->addWidget(m_graphicwin);
+ connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) );
+
+ // bkmkselector = new QListBox(editorStack, "Bookmarks");
+@@ -414,7 +404,7 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) );
+ connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) );
+ connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) );
+- editorStack->addWidget( bkmkselector, get_unique_id() );
++ editorStack->addWidget( bkmkselector);
+
+ /*
+ importSelector = new FileSelector( "*", editorStack, "importselector", false );
+@@ -572,139 +562,139 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ connect( reader, SIGNAL( HandleKeyRequest(QKeyEvent*) ), this, SLOT( handlekey(QKeyEvent*) ) );
+ connect( reader, SIGNAL( SetScrollState(bool) ), this, SLOT( setScrollState(bool) ) );
+ connect( reader, SIGNAL(RefreshBitmap()), this, SLOT(setBackgroundBitmap()));
+- editorStack->addWidget( reader, get_unique_id() );
++ editorStack->addWidget( reader );
+
+- m_preferences_action = new QAction( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL);
++ m_preferences_action = new Q3Action( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL);
+ connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) );
+ m_preferences_action->addTo( settings );
+
+- m_saveconfig_action = new QAction( tr( "Save Config" ), QString::null, 0, this, NULL);
++ m_saveconfig_action = new Q3Action( tr( "Save Config" ), QString::null, 0, this, NULL);
+ connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) );
+ m_saveconfig_action->addTo( settings );
+
+- m_loadconfig_action = new QAction( tr( "Load Config" ), QString::null, 0, this, NULL);
++ m_loadconfig_action = new Q3Action( tr( "Load Config" ), QString::null, 0, this, NULL);
+ connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) );
+ m_loadconfig_action->addTo( settings );
+
+- m_tidyconfig_action = new QAction( tr( "Delete Config" ), QString::null, 0, this, NULL);
++ m_tidyconfig_action = new Q3Action( tr( "Delete Config" ), QString::null, 0, this, NULL);
+ connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) );
+ m_tidyconfig_action->addTo( settings );
+
+ settings->insertSeparator();
+- m_toolbarprefs_action = new QAction( tr( "Toolbars" ), QString::null, 0, this, NULL);
++ m_toolbarprefs_action = new Q3Action( tr( "Toolbars" ), QString::null, 0, this, NULL);
+ connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) );
+ m_toolbarprefs_action->addTo( settings );
+
+- m_buttonprefs_action = new QAction( tr( "Buttons" ), QString::null, 0, this, NULL);
++ m_buttonprefs_action = new Q3Action( tr( "Buttons" ), QString::null, 0, this, NULL);
+ connect( m_buttonprefs_action, SIGNAL( activated() ), this, SLOT( showbuttonprefs() ) );
+ m_buttonprefs_action->addTo( settings );
+
+- m_loadtheme_action = new QAction( tr( "Load Theme" ), QString::null, 0, this, NULL);
++ m_loadtheme_action = new Q3Action( tr( "Load Theme" ), QString::null, 0, this, NULL);
+ connect( m_loadtheme_action, SIGNAL( activated() ), this, SLOT( LoadTheme() ) );
+ m_loadtheme_action->addTo( settings );
+
+- m_repara_action = new QAction( tr( "EOP Marker" ), QString::null, 0, this, NULL);
++ m_repara_action = new Q3Action( tr( "EOP Marker" ), QString::null, 0, this, NULL);
+ connect( m_repara_action, SIGNAL( activated() ), this, SLOT( reparastring() ) );
+ m_repara_action->addTo(settings);
+
+ #ifdef USEQPE
+- m_grab_action = new QAction( tr( "Grab Buttons" ), QString::null, 0, this, NULL, true );
++ m_grab_action = new Q3Action( tr( "Grab Buttons" ), QString::null, 0, this, NULL, true );
+ connect( m_grab_action, SIGNAL( toggled(bool) ), this, SLOT( setgrab(bool) ) );
+ m_grab_action->setOn(m_grabkeyboard);
+ m_grab_action->addTo( settings );
+ #endif
+
+- m_open_action = new QAction( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 );
++ m_open_action = new Q3Action( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 );
+ connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
+ m_open_action->addTo( file );
+
+- m_close_action = new QAction( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 );
++ m_close_action = new Q3Action( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 );
+ connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) );
+ m_close_action->addTo( file );
+
+ #ifdef _SCRIPT
+- a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL);
++ a = new Q3Action( tr( "Run Script" ), QString::null, 0, this, NULL);
+ connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) );
+ a->addTo( file );
+ #endif
+ /*
+- a = new QAction( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) );
+ a->addTo( file );
+
+- a = new QAction( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
+ a->addTo( filebar() );
+ a->addTo( edit );
+ */
+
+- m_info_action = new QAction( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL);
++ m_info_action = new Q3Action( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL);
+ connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) );
+ m_info_action->addTo( file );
+
+- m_touch_action = new QAction( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true );
++ m_touch_action = new Q3Action( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true );
+ connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) );
+ m_touch_action->setOn(m_twoTouch);
+ m_touch_action->addTo( file );
+
+- m_find_action = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL);
++ m_find_action = new Q3Action( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL);
+ connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) );
+ file->insertSeparator();
+ // a->addTo( bar );
+ m_find_action->addTo( file );
+
+- m_exportlinks_action = new QAction( tr( "Export Links" ), QString::null, 0, this, NULL);
++ m_exportlinks_action = new Q3Action( tr( "Export Links" ), QString::null, 0, this, NULL);
+ connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) );
+ m_exportlinks_action->addTo( file );
+
+- m_scrollButton = new QAction( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true );
++ m_scrollButton = new Q3Action( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true );
+ connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) );
+ m_scrollButton->addTo(navigation);
+ m_scrollButton->setOn(false);
+
+- m_start_action = new QAction( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL);
++ m_start_action = new Q3Action( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL);
+ connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) );
+ m_start_action->addTo(navigation);
+
+- m_end_action = new QAction( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL);
++ m_end_action = new Q3Action( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL);
+ connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) );
+ m_end_action->addTo(navigation);
+
+- m_jump_action = new QAction( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL);
++ m_jump_action = new Q3Action( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL);
+ connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) );
+ m_jump_action->addTo(navigation);
+
+- m_pageline_action = new QAction( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true );
++ m_pageline_action = new Q3Action( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true );
+ connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) );
+ m_pageline_action->addTo(navigation);
+ m_pageline_action->setOn(reader->m_bpagemode);
+
+- m_pageup_action = new QAction( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 );
++ m_pageup_action = new Q3Action( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 );
+ connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) );
+ m_pageup_action->addTo( navigation );
+
+- m_pagedn_action = new QAction( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 );
++ m_pagedn_action = new Q3Action( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 );
+ connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) );
+ m_pagedn_action->addTo( navigation );
+
+- m_back_action = new QAction( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 );
++ m_back_action = new Q3Action( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 );
+ connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) );
+ m_back_action->addTo( navigation );
+
+- m_home_action = new QAction( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 );
++ m_home_action = new Q3Action( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 );
+ connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) );
+ m_home_action->addTo( navigation );
+
+- m_forward_action = new QAction( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 );
++ m_forward_action = new Q3Action( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 );
+ connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) );
+ m_forward_action->addTo( navigation );
+
+ /*
+- a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true );
++ a = new Q3Action( tr( "Find" ), QString::null, 0, this, NULL, true );
+ // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) );
+ a->addTo( file );
+
+- a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true );
++ a = new Q3Action( tr( "Find Again" ), QString::null, 0, this, NULL, true );
+ // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) );
+ a->addTo( file );
+ */
+@@ -715,13 +705,13 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+
+ QActionGroup* ag = new QActionGroup(this);
+ ag->setExclusive(false);
+- spacemenu = new QPopupMenu(this);
++ spacemenu = new Q3PopupMenu(this);
+ file->insertItem( tr( "Scrolling" ), spacemenu );
+
+- a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL);
++ a = new Q3Action( tr( "Set Target" ), QString::null, 0, ag, NULL);
+ connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) );
+
+- a = new QAction( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true );
++ a = new Q3Action( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true );
+ connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) );
+ a->setOn(reader->m_pauseAfterEachPara);
+
+@@ -731,64 +721,64 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ #endif
+
+ /*
+- a = new QAction( tr( "Import" ), QString::null, 0, this, NULL );
++ a = new Q3Action( tr( "Import" ), QString::null, 0, this, NULL );
+ connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) );
+ a->addTo( file );
+ */
+
+ /*
+- a = new QAction( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
+ a->addTo( fileBar );
+ a->addTo( edit );
+ */
+
+-// a = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 );
++// a = new Q3Action( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 );
+
+ m_fullscreen = false;
+- m_actFullscreen = new QAction( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true );
++ m_actFullscreen = new Q3Action( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true );
+ connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) );
+ m_actFullscreen->setOn(m_fullscreen);
+ m_actFullscreen->addTo( view );
+
+- m_rotate_action = new QAction( tr( "Rotate" ), geticon( "repeat" ), QString::null, 0, this, NULL, true );
++ m_rotate_action = new Q3Action( tr( "Rotate" ), geticon( "repeat" ), QString::null, 0, this, NULL, true );
+ connect( m_rotate_action, SIGNAL( toggled(bool) ), this, SLOT( setrotated(bool) ) );
+ m_rotate_action->setOn(reader->m_rotated);
+ m_rotate_action->addTo( view );
+
+- m_inverse_action = new QAction( tr( "Invert" ), getmyicon( "invert" ), QString::null, 0, this, NULL, true );
++ m_inverse_action = new Q3Action( tr( "Invert" ), getmyicon( "invert" ), QString::null, 0, this, NULL, true );
+ connect( m_inverse_action, SIGNAL( toggled(bool) ), this, SLOT( setinverted(bool) ) );
+ m_inverse_action->setOn(reader->bInverse);
+ m_inverse_action->addTo( view );
+
+ view->insertSeparator();
+
+- m_zoomin_action = new QAction( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this);
++ m_zoomin_action = new Q3Action( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this);
+ connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) );
+ m_zoomin_action->addTo( view );
+
+- m_zoomout_action = new QAction( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this);
++ m_zoomout_action = new Q3Action( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this);
+ connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) );
+ m_zoomout_action->addTo( view );
+
+ view->insertSeparator();
+- m_setfont_action = new QAction( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this);
++ m_setfont_action = new Q3Action( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this);
+ connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) );
+ m_setfont_action->addTo( view );
+
+ view->insertSeparator();
+- m_setenc_action = new QAction( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this);
++ m_setenc_action = new Q3Action( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this);
+ connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) );
+ m_setenc_action->addTo( view );
+
+- m_setmono_action = new QAction( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true);
++ m_setmono_action = new Q3Action( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true);
+ connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) );
+ m_setmono_action->addTo( view );
+ m_setmono_action->setOn(reader->m_bMonoSpaced);
+
+
+- // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true );
+- // a = new QAction( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 );
++ // a = new Q3Action( tr( "Zoom" ), QString::null, 0, this, NULL, true );
++ // a = new Q3Action( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 );
+
+
+
+@@ -796,57 +786,57 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ // view->insertSeparator();
+
+ /*
+- a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true );
++ a = new Q3Action( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true );
+ connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) );
+ a->setOn(reader->m_bMonoSpaced);
+ a->addTo( view );
+ */
+ /*
+- a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL);
++ a = new Q3Action( tr( "Set Width" ), QString::null, 0, this, NULL);
+ connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) );
+ a->addTo( view );
+ */
+
+- m_mark_action = new QAction( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL);
++ m_mark_action = new Q3Action( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL);
+ connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) );
+ m_mark_action->addTo( marks );
+
+- m_annotate_action = new QAction( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL);
++ m_annotate_action = new Q3Action( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL);
+ connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) );
+ m_annotate_action->addTo( marks );
+
+- m_goto_action = new QAction( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false );
++ m_goto_action = new Q3Action( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false );
+ connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) );
+ m_goto_action->addTo( marks );
+
+- m_delete_action = new QAction( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL);
++ m_delete_action = new Q3Action( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL);
+ connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) );
+ m_delete_action->addTo( marks );
+
+- m_autogen_action = new QAction( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false );
++ m_autogen_action = new Q3Action( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false );
+ connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) );
+ marks->insertSeparator();
+ m_autogen_action->addTo( marks );
+
+- m_clear_action = new QAction( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL);
++ m_clear_action = new Q3Action( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL);
+ connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) );
+ m_clear_action->addTo( marks );
+
+- m_save_action = new QAction( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL );
++ m_save_action = new Q3Action( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL );
+ connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) );
+ m_save_action->addTo( marks );
+
+- m_tidy_action = new QAction( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL);
++ m_tidy_action = new Q3Action( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL);
+ connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) );
+ marks->insertSeparator();
+ m_tidy_action->addTo( marks );
+
+- m_startBlock_action = new QAction( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL);
++ m_startBlock_action = new Q3Action( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL);
+ connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) );
+ marks->insertSeparator();
+ m_startBlock_action->addTo( marks );
+
+- m_endBlock_action = new QAction( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL);
++ m_endBlock_action = new Q3Action( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL);
+ connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) );
+ m_endBlock_action->addTo( marks );
+
+@@ -868,10 +858,10 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ }
+
+
+- pbar = new QProgressBar(this);
++ pbar = new Q3ProgressBar(this);
+ pbar->hide();
+
+- searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE );
++ searchBar = new QFloatBar( "Search", this, Qt::Top, TRUE );
+
+ searchBar->setHorizontalStretchable( TRUE );
+
+@@ -890,17 +880,17 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ connect( searchEdit, SIGNAL( returnPressed( ) ),
+ this, SLOT( search( ) ) );
+ #endif
+- QAction*a = new QAction( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 );
++ Q3Action*a = new Q3Action( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
+ a->addTo( searchBar );
+
+- a = new QAction( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
+ a->addTo( searchBar );
+
+ searchBar->hide();
+
+- regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE );
++ regBar = new QFloatBar( "Autogen", this, Qt::Top, TRUE );
+ connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() ));
+
+ regBar->setHorizontalStretchable( TRUE );
+@@ -913,17 +903,17 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ connect( regEdit, SIGNAL( returnPressed( ) ),
+ this, SLOT( do_regaction() ) );
+
+- a = new QAction( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) );
+ a->addTo( regBar );
+
+- a = new QAction( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 );
++ a = new Q3Action( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) );
+ a->addTo( regBar );
+
+ regBar->hide();
+
+- m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE );
++ m_fontBar = new Q3ToolBar( "Autogen", this, Qt::Top, TRUE );
+
+ m_fontBar->setHorizontalStretchable( TRUE );
+
+@@ -940,9 +930,9 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+ {
+ realfont = true;
+ }
+- if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm);
+ }
+ if (!realfont) reader->m_fontname = flist[0];
++ reader->m_fontControl.setCourier(reader->m_fontname,flist);
+ } // delete the FontDatabase!!!
+ connect( m_fontSelector, SIGNAL( activated(const QString& ) ),
+ this, SLOT( do_setfont(const QString&) ) );
+@@ -965,7 +955,7 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
+
+ m_scrollbar->setVerticalStretchable( TRUE );
+ */
+- scrollbar = m_scrollbar = new QScrollBar(QScrollBar::Vertical, widge);
++ scrollbar = m_scrollbar = new QScrollBar(Qt::Vertical, widge);
+ m_layout->addWidget(scrollbar);
+ scrollbar->setTracking(false);
+ // connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
+@@ -1226,7 +1216,7 @@ void QTReaderApp::addtoolbars(Config* config)
+ {
+ if (m_bkmkAvail == NULL)
+ {
+- m_bkmkAvail = new QAction( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 );
++ m_bkmkAvail = new Q3Action( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 );
+ connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) );
+
+ m_bkmkAvail->setEnabled(false);
+@@ -1253,7 +1243,7 @@ bool QTReaderApp::checkbar(Config* _config, const QString& key)
+ }
+
+
+-QToolBar* QTReaderApp::filebar()
++Q3ToolBar* QTReaderApp::filebar()
+ {
+ if (fileBar == NULL)
+ {
+@@ -1270,21 +1260,21 @@ QToolBar* QTReaderApp::filebar()
+ case cesMenuTool:
+ case cesMultiple:
+ // qDebug("Creating new file bar");
+- fileBar = new QToolBar("File", this, m_tbposition);
++ fileBar = new Q3ToolBar("File", this, m_tbposition);
+ break;
+ }
+ // fileBar->setHorizontalStretchable( true );
+ }
+ return fileBar;
+ }
+-QToolBar* QTReaderApp::viewbar()
++Q3ToolBar* QTReaderApp::viewbar()
+ {
+ if (viewBar == NULL)
+ {
+ switch (m_tbpol)
+ {
+ case cesMultiple:
+- viewBar = new QToolBar("View", this, m_tbposition);
++ viewBar = new Q3ToolBar("View", this, m_tbposition);
+ break;
+ default:
+ qDebug("Incorrect toolbar policy set");
+@@ -1298,7 +1288,7 @@ QToolBar* QTReaderApp::viewbar()
+ }
+ return viewBar;
+ }
+-QToolBar* QTReaderApp::navbar()
++Q3ToolBar* QTReaderApp::navbar()
+ {
+ if (navBar == NULL)
+ {
+@@ -1306,7 +1296,7 @@ QToolBar* QTReaderApp::navbar()
+ {
+ case cesMultiple:
+ // qDebug("Creating new nav bar");
+- navBar = new QToolBar("Navigation", this, m_tbposition);
++ navBar = new Q3ToolBar("Navigation", this, m_tbposition);
+ break;
+ default:
+ qDebug("Incorrect toolbar policy set");
+@@ -1321,14 +1311,14 @@ QToolBar* QTReaderApp::navbar()
+ }
+ return navBar;
+ }
+-QToolBar* QTReaderApp::markbar()
++Q3ToolBar* QTReaderApp::markbar()
+ {
+ if (markBar == NULL)
+ {
+ switch (m_tbpol)
+ {
+ case cesMultiple:
+- markBar = new QToolBar("Marks", this, m_tbposition);
++ markBar = new Q3ToolBar("Marks", this, m_tbposition);
+ break;
+ default:
+ qDebug("Incorrect toolbar policy set");
+@@ -1343,26 +1333,26 @@ QToolBar* QTReaderApp::markbar()
+ return markBar;
+ }
+
+-void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a)
++void QTReaderApp::addfilebar(Config* _config, const QString& key, Q3Action* a)
+ {
+ if (_config->readBoolEntry(key, false)) a->addTo( filebar() );
+ }
+-void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a)
++void QTReaderApp::addnavbar(Config* _config, const QString& key, Q3Action* a)
+ {
+ if (_config->readBoolEntry(key, false)) a->addTo( navbar() );
+ }
+-void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a)
++void QTReaderApp::addmarkbar(Config* _config, const QString& key, Q3Action* a)
+ {
+ if (_config->readBoolEntry(key, false)) a->addTo( markbar() );
+ }
+-void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a)
++void QTReaderApp::addviewbar(Config* _config, const QString& key, Q3Action* a)
+ {
+ if (_config->readBoolEntry(key, false)) a->addTo( viewbar() );
+ }
+
+ void QTReaderApp::suspend() { reader->suspend(); }
+
+-void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data)
++void QTReaderApp::msgHandler(const Q3CString& _msg, const QByteArray& _data)
+ {
+ #ifndef USEMSGS
+ return;
+@@ -1787,7 +1777,7 @@ void QTReaderApp::setfullscreen(bool sfs)
+ reader->update();
+ }
+ /*
+-void QTReaderApp::buttonActionSelected(QAction* _a)
++void QTReaderApp::buttonActionSelected(Q3Action* _a)
+ {
+ //// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text()));
+ m_spaceTarget = ActNameToInt(_a->text());
+@@ -2007,14 +1997,14 @@ QString QTReaderApp::usefilebrowser()
+ void QTReaderApp::showgraphic(QImage& pm)
+ {
+ m_graphicwin->setImage(pm);
+- editorStack->raiseWidget( m_graphicwin );
++ editorStack->setCurrentWidget( m_graphicwin );
+ hidetoolbars();
+ m_graphicwin->setFocus();
+ }
+
+ void QTReaderApp::showbuttonprefs()
+ {
+- editorStack->raiseWidget( m_buttonprefs );
++ editorStack->setCurrentWidget( m_buttonprefs );
+ hidetoolbars();
+ m_buttonprefs->setFocus();
+ m_kmapchanged = true;
+@@ -2366,7 +2356,7 @@ void QTReaderApp::showinfo()
+ }
+ m_infoWin->setZoom(reader->m_fontControl.currentsize()*10);
+ m_infoWin->setAbout(QString("\nApplication (c) Tim Wentford\n")+reader->about());
+- editorStack->raiseWidget( m_infoWin );
++ editorStack->setCurrentWidget( m_infoWin );
+ hidetoolbars();
+ m_infoWin->setFocus();
+ }
+@@ -2482,7 +2472,7 @@ void QTReaderApp::addanno()
+ m_annoWin->setAnno("");
+ m_annoWin->setPosn(reader->pagelocate());
+ m_annoIsEditing = true;
+- editorStack->raiseWidget( m_annoWin );
++ editorStack->setCurrentWidget( m_annoWin );
+ hidetoolbars();
+ #ifdef USEQPE
+ Global::showInputMethod();
+@@ -2658,7 +2648,7 @@ void QTReaderApp::findNext()
+ #ifdef __ISEARCH
+ QString arg = searchEdit->text();
+ #else
+- QRegExp arg = searchEdit->text();
++ QRegExp arg(searchEdit->text());
+ #endif
+ CDrawBuffer test(&(reader->m_fontControl));
+ size_t start = reader->pagelocate();
+@@ -2722,7 +2712,7 @@ bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg)
+ while (strstr(test.data(),(const tchar*)arg) == NULL)
+ #else
+ #ifdef _UNICODE
+- while ((offset = arg.match(toQString(test.data()))) == -1)
++ while ((offset = arg.exactMatch(toQString(test.data()))) == -1)
+ #else
+ while (arg.match(test.data()) == -1)
+ #endif
+@@ -2962,7 +2952,7 @@ void QTReaderApp::handlekey(QKeyEvent* e)
+ #if defined(USEQPE) && defined(USENEWFULLSCREEN)
+ void QTReaderApp::focusInEvent(QFocusEvent *)
+ {
+- if (m_usenewfullscreen && m_fullscreen && (editorStack->visibleWidget() == reader))
++ if (m_usenewfullscreen && m_fullscreen && (editorStack->currentWidget() == reader))
+ {
+ m_usenewfullscreen = false;
+ reader->bDoUpdates = false;
+@@ -2975,7 +2965,7 @@ void QTReaderApp::focusInEvent(QFocusEvent *)
+
+ void QTReaderApp::resizeEvent(QResizeEvent *)
+ {
+- if (m_usenewfullscreen && m_fullscreen && (editorStack->visibleWidget() == reader))
++ if (m_usenewfullscreen && m_fullscreen && (editorStack->currentWidget() == reader))
+ {
+ m_usenewfullscreen = false;
+ reader->bDoUpdates = false;
+@@ -3078,7 +3068,7 @@ void QTReaderApp::showEditTools()
+ // qDebug("uc");
+ updateCaption();
+ // qDebug("rw");
+- editorStack->raiseWidget( reader );
++ editorStack->setCurrentWidget( reader );
+ // qDebug("sf");
+ reader->setFocus();
+ // qDebug("ref");
+@@ -3156,7 +3146,7 @@ void QTReaderApp::closeEvent( QCloseEvent *e )
+ showEditTools();
+ e->ignore();
+ }
+- else if (editorStack->visibleWidget() == m_buttonprefs)
++ else if (editorStack->currentWidget() == m_buttonprefs)
+ {
+ int ret = QMessageBox::warning(this, PROGNAME,
+ tr("Do you wish to map this key?\n\nIf you proceed you will map\nthe escape key and you will\nneed to press the close box\ntwice to exit this program\n\nContinue?"), tr("Yes"), tr("No"), QString::null, 0, 1);
+@@ -3172,7 +3162,7 @@ tr("Do you wish to map this key?\n\nIf you proceed you will map\nthe escape key
+ }
+ else
+ {
+- if (editorStack->visibleWidget() == reader)
++ if (editorStack->currentWidget() == reader)
+ {
+ if ((kmap.find(orKey(Qt::NoButton,Key_Escape,false)) != kmap.end()) && m_bcloseDisabled)
+ {
+@@ -3277,7 +3267,7 @@ bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab, bool presel)
+ if (cnt > 0)
+ {
+ hidetoolbars();
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ if (slt != -1) bkmkselector->setCurrentItem(slt);
+ return true;
+ }
+@@ -3799,7 +3789,7 @@ void QTReaderApp::do_autogen(const QString& regText)
+ }
+ i = reader->buffdoc.getpara(buff);
+ #ifdef _UNICODE
+- if (re.match(toQString(buff.data())) != -1)
++ if (re.exactMatch(toQString(buff.data())) != -1)
+ #else
+ if (re.match(buff.data()) != -1)
+ #endif
+@@ -4113,7 +4103,7 @@ void QTReaderApp::showAnnotation()
+ #ifdef USEQPE
+ Global::showInputMethod();
+ #endif
+- editorStack->raiseWidget( m_annoWin );
++ editorStack->setCurrentWidget( m_annoWin );
+ hidetoolbars();
+ m_annoWin->setFocus();
+ }
+@@ -4152,7 +4142,7 @@ void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, size_t posn2,
+ #ifdef USEQPE
+ Global::showInputMethod();
+ #endif
+- editorStack->raiseWidget( m_annoWin );
++ editorStack->setCurrentWidget( m_annoWin );
+ hidetoolbars();
+ }
+ #ifdef USEQPE
+@@ -4738,17 +4728,9 @@ bool QTReaderApp::PopulateConfig(const char* tgtdir, bool usedirs)
+ d.setFilter( ((usedirs) ? QDir::Dirs : QDir::Files) | QDir::NoSymLinks );
+ // d.setSorting( QDir::Size | QDir::Reversed );
+
+- const QFileInfoList *list = d.entryInfoList();
+- QFileInfoListIterator it( *list ); // create list iterator
+- QFileInfo *fi; // pointer for traversing
+-
+- while ( (fi=it.current()) ) { // for each file...
+-
+- bkmkselector->insertItem(fi->fileName(), cnt++);
+-
+- //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
+- ++it; // goto next list element
+- }
++ QFileInfoList list = d.entryInfoList();
++ for(QFileInfoListIterator it=list.begin();it!=list.end();++it)
++ bkmkselector->insertItem(it->fileName(), cnt++);
+
+ #else /* USEQPE */
+ int cnt = 0;
+@@ -4782,7 +4764,7 @@ void QTReaderApp::LoadTheme()
+ {
+ if (PopulateConfig("Themes", true))
+ {
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cLdTheme;
+ }
+@@ -4794,7 +4776,7 @@ void QTReaderApp::LoadConfig()
+ {
+ if (PopulateConfig("configs"))
+ {
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cLdConfig;
+ }
+@@ -4806,7 +4788,7 @@ void QTReaderApp::TidyConfig()
+ {
+ if (PopulateConfig("configs"))
+ {
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cRmConfig;
+ }
+@@ -4818,7 +4800,7 @@ void QTReaderApp::ExportLinks()
+ {
+ if (PopulateConfig("urls"))
+ {
+- editorStack->raiseWidget( bkmkselector );
++ editorStack->setCurrentWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cExportLinks;
+ }
+diff --git a/QTReaderApp.h b/QTReaderApp.h
+index ab1b7ad..502079f 100644
+--- a/QTReaderApp.h
++++ b/QTReaderApp.h
+@@ -35,7 +35,15 @@
+ #include <qmap.h>
+ #include <qlineedit.h>
+ #include <qstack.h>
+-#include <qlistbox.h>
++#include <Qt3Support/Q3ListBox>
++#include <Qt3Support/Q3CString>
++#include <Qt3Support/Q3ProgressBar>
++#include <Qt3Support/Q3MainWindow>
++#include <Qt3Support/Q3Action>
++#include <QStackedWidget>
++#include <qcombobox.h>
++#include <qnamespace.h>
++using namespace Qt;
+ #ifdef USEQPE
+ #include <qpe/qpeapplication.h>
+ #endif
+@@ -126,7 +134,7 @@ struct searchrecord
+ class infowin;
+ class GraphicWin;
+
+-class QTReaderApp : public QMainWindow
++class QTReaderApp : public Q3MainWindow
+ {
+ Q_OBJECT
+
+@@ -180,7 +188,7 @@ class QTReaderApp : public QMainWindow
+
+ protected:
+ void setfontHelper(const QString& lcn, int size = 0);
+- QAction* m_bkmkAvail, *m_actFullscreen;
++ Q3Action* m_bkmkAvail, *m_actFullscreen;
+ CAnnoEdit* m_annoWin;
+ Bkmk* m_anno;
+ int m_scrollcolor, m_scrollbarcolor, m_background, m_foreground;
+@@ -262,8 +270,8 @@ private slots:
+ void showAnnotation();
+ void do_setencoding(int i);
+ void do_setfont(const QString&);
+- // void buttonActionSelected(QAction*);
+- void msgHandler(const QCString&, const QByteArray&);
++ // void buttonActionSelected(Q3Action*);
++ void msgHandler(const Q3CString&, const QByteArray&);
+ void monospace(bool);
+ void jump();
+ void reparastring();
+@@ -346,35 +354,35 @@ private slots:
+ void setscrollcolour();
+ void setscrollbarcolour();
+ void writeUrl(const QString& file, const QString& href);
+- QAction *m_preferences_action, *m_open_action, *m_close_action;
+- QAction *m_info_action, *m_touch_action, *m_find_action, *m_start_action;
+- QAction *m_end_action, *m_jump_action, *m_pageline_action;
+- QAction *m_pageup_action, *m_pagedn_action, *m_back_action;
+- QAction *m_home_action, *m_forward_action, *m_zoomin_action;
+- QAction *m_zoomout_action, *m_setfont_action, *m_mark_action;
+- QAction *m_annotate_action, *m_goto_action, *m_delete_action;
+- QAction *m_autogen_action, *m_clear_action, *m_save_action;
+- QAction *m_tidy_action, *m_startBlock_action, *m_endBlock_action;
+- QAction *m_setenc_action, *m_setmono_action, *m_saveconfig_action;
+- QAction *m_loadconfig_action, *m_loadtheme_action, *m_toolbarprefs_action, *m_tidyconfig_action;
+- QAction *m_exportlinks_action, *m_rotate_action, *m_buttonprefs_action, *m_inverse_action;
+- QAction *m_repara_action;
++ Q3Action *m_preferences_action, *m_open_action, *m_close_action;
++ Q3Action *m_info_action, *m_touch_action, *m_find_action, *m_start_action;
++ Q3Action *m_end_action, *m_jump_action, *m_pageline_action;
++ Q3Action *m_pageup_action, *m_pagedn_action, *m_back_action;
++ Q3Action *m_home_action, *m_forward_action, *m_zoomin_action;
++ Q3Action *m_zoomout_action, *m_setfont_action, *m_mark_action;
++ Q3Action *m_annotate_action, *m_goto_action, *m_delete_action;
++ Q3Action *m_autogen_action, *m_clear_action, *m_save_action;
++ Q3Action *m_tidy_action, *m_startBlock_action, *m_endBlock_action;
++ Q3Action *m_setenc_action, *m_setmono_action, *m_saveconfig_action;
++ Q3Action *m_loadconfig_action, *m_loadtheme_action, *m_toolbarprefs_action, *m_tidyconfig_action;
++ Q3Action *m_exportlinks_action, *m_rotate_action, *m_buttonprefs_action, *m_inverse_action;
++ Q3Action *m_repara_action;
+ #ifdef USEQPE
+- QAction *m_grab_action;
++ Q3Action *m_grab_action;
+ #endif
+ void addtoolbars(Config* config);
+ ToolbarPolicy m_tbpol, m_tbpolsave;
+ ToolBarDock m_tbposition;
+ bool m_tbmove, m_tbmovesave;
+- QToolBar* filebar();
+- QToolBar* viewbar();
+- QToolBar* navbar();
+- QToolBar* markbar();
++ Q3ToolBar* filebar();
++ Q3ToolBar* viewbar();
++ Q3ToolBar* navbar();
++ Q3ToolBar* markbar();
+ void hidetoolbars();
+- void addfilebar(Config* _config, const QString& key, QAction* a);
+- void addviewbar(Config* _config, const QString& key, QAction* a);
+- void addnavbar(Config* _config, const QString& key, QAction* a);
+- void addmarkbar(Config* _config, const QString& key, QAction* a);
++ void addfilebar(Config* _config, const QString& key, Q3Action* a);
++ void addviewbar(Config* _config, const QString& key, Q3Action* a);
++ void addnavbar(Config* _config, const QString& key, Q3Action* a);
++ void addmarkbar(Config* _config, const QString& key, Q3Action* a);
+ bool checkbar(Config* _config, const QString& key);
+ #ifdef _SCRIPT
+ void SaveScript(const char* sname);
+@@ -401,9 +409,9 @@ private slots:
+
+ private:
+
+- QAction* m_scrollButton;
++ Q3Action* m_scrollButton;
+
+- QAction* m_buttonAction[MAX_ACTIONS];
++ Q3Action* m_buttonAction[MAX_ACTIONS];
+
+ CBkmkSelector* bkmkselector;
+
+@@ -418,27 +426,25 @@ private slots:
+ #else
+ bool dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg);
+ #endif
+- QWidgetStack *editorStack;
++ QStackedWidget *editorStack;
+ QTReader* reader;
+ QComboBox* m_fontSelector;
+ // QPEToolBar /* *menu,*/ *fileBar;
+ #if defined(USEQPE)
+- QToolBar *menubar;
++ Q3ToolBar *menubar;
+ #endif
+- QToolBar *fileBar, *navBar, *viewBar, *markBar;
++ Q3ToolBar *fileBar, *navBar, *viewBar, *markBar;
+ #if defined(USEQPE)
+ QPEMenuBar *mb;
+ #else
+ QMenuBar *mb;
+ #endif
+ QFloatBar *searchBar, *regBar/*, *m_fontBar*/;
+- QToolBar /* *searchBar, *regBar,*/ *m_fontBar;
++ Q3ToolBar /* *searchBar, *regBar,*/ *m_fontBar;
+ QLineEdit *searchEdit, *regEdit;
+ bool searchVisible;
+ bool regVisible;
+ bool m_fontVisible, m_twoTouch;
+- static unsigned long m_uid;
+- long unsigned get_unique_id() { return m_uid++; }
+ /*
+ void resizeEvent( QResizeEvent * r)
+ {
+@@ -451,7 +457,7 @@ private slots:
+ CList<Bkmk>* pOpenlist;
+ infowin* m_infoWin;
+ GraphicWin* m_graphicwin;
+- QProgressBar* pbar;
++ Q3ProgressBar* pbar;
+ bool m_fBkmksChanged;
+ // int m_nRegAction;
+ regedit_type m_nRegAction;
+diff --git a/QtrListView.cpp b/QtrListView.cpp
+index 67040f8..e73a395 100644
+--- a/QtrListView.cpp
++++ b/QtrListView.cpp
+@@ -1,4 +1,7 @@
+ #include "QtrListView.h"
++#include <QtGui/QKeyEvent>
++#include <qnamespace.h>
++using namespace Qt;
+
+ void QtrListView::keyPressEvent(QKeyEvent* e)
+ {
+@@ -19,6 +22,6 @@ void QtrListView::keyPressEvent(QKeyEvent* e)
+ emit OnCancelButton();
+ break;
+ default:
+- QListView::keyPressEvent(e);
++ Q3ListView::keyPressEvent(e);
+ }
+ }
+diff --git a/QtrListView.h b/QtrListView.h
+index c1b7f4d..02a74cc 100644
+--- a/QtrListView.h
++++ b/QtrListView.h
+@@ -2,18 +2,19 @@
+ #define __QTRLISTVIEW_H
+
+ #include <qlistview.h>
++#include <Qt3Support/Q3ListViewItem>
+
+-class QtrListView : public QListView
++class QtrListView : public Q3ListView
+ {
+ Q_OBJECT
+
+ virtual void keyPressEvent(QKeyEvent* e);
+ public:
+- QtrListView(QWidget* parent, char* name) : QListView(parent, name) {};
++ QtrListView(QWidget* parent, char* name) : Q3ListView(parent, name) {};
+
+ signals:
+- void OnOKButton(QListViewItem*);
+- void OnCentreButton(QListViewItem*);
++ void OnOKButton(Q3ListViewItem*);
++ void OnCentreButton(Q3ListViewItem*);
+ void OnCancelButton();
+ };
+
+diff --git a/Reb.cpp b/Reb.cpp
+index 65de9f6..9e6e552 100644
+--- a/Reb.cpp
++++ b/Reb.cpp
+@@ -105,8 +105,7 @@ QImage* CReb::getPicture(const QString& ref)
+ char* imgbuffer = new char[rs.len];
+ fseek(fin, page2pos(iter.data()), SEEK_SET);
+ fread(imgbuffer, rs.len, 1, fin);
+- QByteArray arr;
+- arr.assign((const char*)imgbuffer, rs.len);
++ QByteArray arr((const char*)imgbuffer, rs.len);
+ QImage* qimage = new QImage(arr);
+ return qimage;
+ }
+@@ -581,7 +580,7 @@ void RBPage::startpage(UInt32 pos, UInt32 _cp, bool _isCompressed, UInt32 _len)
+ int CReb::getch()
+ {
+ if (tagoffset < tagstring.length())
+- return tagstring[tagoffset++].unicode();
++ return tagstring.at(tagoffset++).unicode();
+ else
+ return currentpage.getch(this);
+ }
+diff --git a/TableDialog.cpp b/TableDialog.cpp
+index b67d534..d0748d6 100644
+--- a/TableDialog.cpp
++++ b/TableDialog.cpp
+@@ -4,7 +4,7 @@ CTableDialog::CTableDialog(const QFont& f, const QString& tabtext, bool fs, QWid
+ {
+ setCaption("Table View");
+ QVBoxLayout *tmp = new QVBoxLayout(this);
+- QTextView* qtv = new QTextView(this);
++ Q3TextView* qtv = new Q3TextView(this);
+ qtv->setFont(f);
+ tmp->addWidget(qtv);
+ qtv->setText(tabtext);
+diff --git a/TableDialog.h b/TableDialog.h
+index 2257a81..14b1cf2 100644
+--- a/TableDialog.h
++++ b/TableDialog.h
+@@ -2,8 +2,11 @@
+ #define __TABLEDIALOG_H
+
+ #include <qdialog.h>
+-#include <qtextview.h>
++#include <Qt3Support/Q3TextView>
++#include <QtGui/QKeyEvent>
+ #include <qlayout.h>
++#include <qnamespace.h>
++using namespace Qt;
+
+ class CTableDialog : public QDialog
+ {
+diff --git a/ToolbarPrefs.cpp b/ToolbarPrefs.cpp
+index 56c4e9b..10fc6ec 100644
+--- a/ToolbarPrefs.cpp
++++ b/ToolbarPrefs.cpp
+@@ -22,6 +22,7 @@
+ #ifdef USEQPE
+ #include <qpe/menubutton.h>
+ #endif
++#include <Qt3Support/Q3GroupBox>
+
+ CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true), config( appdir )
+ {
+@@ -222,7 +223,7 @@ CFileBarPrefs::CFileBarPrefs( Config& _config, QWidget* parent, const char* nam
+ config.setGroup( "Toolbar" );
+ QVBoxLayout* vb = new QVBoxLayout(this);
+
+- QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "File", this);
++ Q3GroupBox* bg = new Q3GroupBox(2, Qt::Horizontal, "File", this);
+ vb->addWidget(bg);
+
+ open = new QCheckBox( tr("Open"), bg );
+@@ -263,7 +264,7 @@ CNavBarPrefs::CNavBarPrefs( Config& _config, QWidget* parent, const char* name,
+ config.setGroup( "Toolbar" );
+ QVBoxLayout* vb = new QVBoxLayout(this);
+
+- QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this);
++ Q3GroupBox* bg = new Q3GroupBox(2, Qt::Horizontal, "Navigation", this);
+ vb->addWidget(bg);
+ scroll = new QCheckBox( tr("Scroll"), bg );
+ scroll->setChecked(config.readBoolEntry( "Scroll", false ));
+@@ -324,7 +325,7 @@ CViewBarPrefs::CViewBarPrefs( Config& _config, QWidget* parent, const char* nam
+ {
+ QVBoxLayout* vb = new QVBoxLayout(this);
+
+- QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "View", this);
++ Q3GroupBox* bg = new Q3GroupBox(2, Qt::Horizontal, "View", this);
+ vb->addWidget(bg);
+
+ config.setGroup( "Toolbar" );
+@@ -381,7 +382,7 @@ CMarkBarPrefs::CMarkBarPrefs( Config& _config, QWidget* parent, const char* nam
+ {
+ QVBoxLayout* vb = new QVBoxLayout(this);
+
+- QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Marks", this);
++ Q3GroupBox* bg = new Q3GroupBox(2, Qt::Horizontal, "Marks", this);
+ vb->addWidget(bg);
+ mark = new QCheckBox( tr("Bookmark"), bg );
+ mark->setChecked(config.readBoolEntry( "Mark", false ));
+@@ -443,13 +444,13 @@ CMiscBarPrefs::CMiscBarPrefs( QWidget* parent, const char* name, WFlags fl )
+
+ hl->setMargin( 0 );
+
+- QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Dialogs", this);
++ Q3GroupBox* gb = new Q3GroupBox(1, Qt::Horizontal, "Dialogs", this);
+ floating = new QCheckBox(gb);
+ floating->setText(tr("Floating"));
+ hl->addWidget( gb, 0, 0 );
+
+
+- gb = new QGroupBox(1, Qt::Horizontal, "Bars (Restart)", this);
++ gb = new Q3GroupBox(1, Qt::Horizontal, "Bars (Restart)", this);
+
+ // QLabel* ql = new QLabel("Restart to apply changes", gb);
+ // TextLabel = new QLabel( gb );
+@@ -485,7 +486,7 @@ CMiscBarPrefs::CMiscBarPrefs( QWidget* parent, const char* name, WFlags fl )
+
+ hl->addWidget(gb, 0, 1);
+
+- gb = new QGroupBox(1, Qt::Horizontal, "QT Scroll Bar", this);
++ gb = new Q3GroupBox(1, Qt::Horizontal, "QT Scroll Bar", this);
+
+ #ifdef USECOMBO
+ qtscroll = new QComboBox(gb);
+@@ -497,7 +498,7 @@ CMiscBarPrefs::CMiscBarPrefs( QWidget* parent, const char* name, WFlags fl )
+ qtscroll->insertItem(tr("Left"));
+
+ hl->addWidget(gb, 1, 0);
+- gb = new QGroupBox(1, Qt::Horizontal, "Miniscroll", this);
++ gb = new Q3GroupBox(1, Qt::Horizontal, "Miniscroll", this);
+
+ #ifdef USECOMBO
+ localscroll = new QComboBox(gb);
+@@ -527,7 +528,7 @@ CIndBarPrefs::CIndBarPrefs( Config& _config, QWidget* parent, const char* name,
+ {
+ QVBoxLayout* vb = new QVBoxLayout(this);
+
+- QGroupBox* bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this);
++ Q3GroupBox* bg = new Q3GroupBox(1, Qt::Horizontal, "Indicators", this);
+ vb->addWidget(bg);
+ indannotate = new QCheckBox( tr("Annotation"), bg );
+ indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false ));
+diff --git a/ToolbarPrefs.h b/ToolbarPrefs.h
+index 9df8940..2a9d5cd 100644
+--- a/ToolbarPrefs.h
++++ b/ToolbarPrefs.h
+@@ -11,12 +11,14 @@
+
+ #include <qvariant.h>
+ #include <qwidget.h>
+-#include <qtabdialog.h>
++#include <Qt3Support/Q3TabDialog>
+ #include <qtabwidget.h>
+ #include <qspinbox.h>
+ #include <qcheckbox.h>
+ #include <qcombobox.h>
+ #include <qlineedit.h>
++#include <qnamespace.h>
++using namespace Qt;
+ #ifdef USEQPE
+ #include <qpe/menubutton.h>
+ #include <qpe/config.h>
+@@ -25,6 +27,8 @@
+ #endif
+ #define USECOMBO
+
++#include <QtGui/QKeyEvent>
++
+ class QVBoxLayout;
+ class QHBoxLayout;
+ class QGridLayout;
+diff --git a/URLDialog.cpp b/URLDialog.cpp
+index dd4568b..9497979 100644
+--- a/URLDialog.cpp
++++ b/URLDialog.cpp
+@@ -5,7 +5,7 @@ CURLDialog::CURLDialog(const QString& fname, bool fs, QWidget* parent, const cha
+ {
+ setCaption(tr("Save URL"));
+ QVBoxLayout *tmp = new QVBoxLayout(this);
+- QVButtonGroup* vb = new QVButtonGroup(fname, this);
++ Q3VButtonGroup* vb = new Q3VButtonGroup(fname, this);
+ tmp->addWidget(vb);
+ m_clipboard = new QCheckBox(tr("Clipboard"), vb);
+ m_localfile = new QCheckBox(tr("Local file"), vb);
+diff --git a/URLDialog.h b/URLDialog.h
+index 792d13a..fffaf2b 100644
+--- a/URLDialog.h
++++ b/URLDialog.h
+@@ -11,14 +11,17 @@
+
+ #include <qvariant.h>
+ #include <qwidget.h>
+-#include <qtabdialog.h>
++#include <Qt3Support/Q3TabDialog>
+ #include <qtabwidget.h>
+ #include <qspinbox.h>
+ #include <qcheckbox.h>
+ #include <qcombobox.h>
+ #include <qlineedit.h>
+ //#include <qpe/menubutton.h>
+-#include <qvbuttongroup.h>
++#include <Qt3Support/Q3VButtonGroup>
++#include <QtGui/QKeyEvent>
++#include <qnamespace.h>
++using namespace Qt;
+
+ class QVBoxLayout;
+ class QHBoxLayout;
+diff --git a/arrierego.cpp b/arrierego.cpp
+index be2a3fa..b4f857f 100644
+--- a/arrierego.cpp
++++ b/arrierego.cpp
+@@ -114,8 +114,7 @@ void CArriere::setlink(QString& fn, const QString& wrd)
+
+ QImage* CArriere::imagefromdata(UInt8* imgbuffer, UInt32 imgsize)
+ {
+- QByteArray arr;
+- arr.assign((const char*)imgbuffer, imgsize);
++ QByteArray arr((const char*)imgbuffer, imgsize);
+
+ QImage* qimage = new QImage(arr);
+
+diff --git a/cbkmkselector.h b/cbkmkselector.h
+index ec0c6e8..e36d31a 100644
+--- a/cbkmkselector.h
++++ b/cbkmkselector.h
+@@ -1,13 +1,15 @@
+ #include <qwidget.h>
+-#include <qlistbox.h>
++#include <Qt3Support/Q3ListBox>
+ #include <qpushbutton.h>
+ #include <qlayout.h>
++#include <qnamespace.h>
++using namespace Qt;
+
+-class CBkmkSelectorItem : public QListBoxText
++class CBkmkSelectorItem : public Q3ListBoxText
+ {
+ int m_ref;
+ public:
+- CBkmkSelectorItem(const QString& _t, int ref) : QListBoxText(_t), m_ref(ref)
++ CBkmkSelectorItem(const QString& _t, int ref) : Q3ListBoxText(_t), m_ref(ref)
+ {
+ }
+ int reference() { return m_ref; }
+@@ -18,7 +20,7 @@ class CBkmkSelector : public QWidget
+
+ Q_OBJECT
+
+- QListBox* bkmkselector;
++ Q3ListBox* bkmkselector;
+ QPushButton* exitButton;
+ /*
+ void keyPressEvent ( QKeyEvent * e )
+@@ -38,7 +40,7 @@ signals:
+ void selected(int i);
+ void cancelled();
+ private slots:
+- void slotSelected(QListBoxItem* t)
++ void slotSelected(Q3ListBoxItem* t)
+ {
+ if (t != NULL)
+ {
+@@ -64,13 +66,13 @@ public:
+
+ QVBoxLayout* grid = new QVBoxLayout(this);
+ QHBoxLayout* hgrid = new QHBoxLayout();
+- bkmkselector = new QListBox(this, tr("Bookmarks"));
++ bkmkselector = new Q3ListBox(this, tr("Bookmarks"));
+ QPushButton* _sort = new QPushButton(tr("Sort"), this);
+ connect(_sort, SIGNAL(clicked()), this, SLOT( slotSort() ) );
+ exitButton = new QPushButton(tr("Cancel"), this);
+ // connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( slotSelected(int) ) );
+- connect(bkmkselector, SIGNAL( clicked(QListBoxItem*) ), this, SLOT( slotSelected(QListBoxItem*) ) );
+- connect(bkmkselector, SIGNAL( returnPressed(QListBoxItem*) ), this, SLOT( slotSelected(QListBoxItem*) ) );
++ connect(bkmkselector, SIGNAL( clicked(Q3ListBoxItem*) ), this, SLOT( slotSelected(Q3ListBoxItem*) ) );
++ connect(bkmkselector, SIGNAL( returnPressed(Q3ListBoxItem*) ), this, SLOT( slotSelected(Q3ListBoxItem*) ) );
+ connect(exitButton, SIGNAL( clicked() ), this, SLOT( slotCancel() ) );
+ grid->addWidget(bkmkselector,1);
+ grid->addLayout(hgrid);
+diff --git a/decompress.cpp b/decompress.cpp
+index 6034e01..979b642 100644
+--- a/decompress.cpp
++++ b/decompress.cpp
+@@ -2,6 +2,7 @@
+ #include "decompress.h"
+ #include <zlib.h>
+ #include <stdlib.h>
++#include "uqtcommon.h"
+
+ size_t UnZip(UInt8* compressedbuffer, size_t reclen, UInt8* tgtbuffer, size_t bsize)
+ {
+@@ -60,17 +61,7 @@ size_t (*getdecompressor(char* _s))(UInt8*, size_t, UInt8*, size_t)
+
+ size_t (*getdecompressor(char* _s))(UInt8*, size_t, UInt8*, size_t)
+ {
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString codecpath(getenv("OPIEDIR"));
+-#else
+- QString codecpath(getenv("QTDIR"));
+-#endif
+- codecpath += "/plugins/reader/support/libpluckerdecompress.so";
+-#else
+- QString codecpath(getenv("READERDIR"));
+- codecpath += "/support/libpluckerdecompress.so";
+-#endif
++ QString codecpath = uqt_supportpath()+"/libpluckerdecompress.so";
+ qDebug("Codec:%s", (const char*)codecpath);
+ if (QFile::exists(codecpath))
+ {
+diff --git a/ebookcodec.h b/ebookcodec.h
+index 4229fb9..091894a 100644
+--- a/ebookcodec.h
++++ b/ebookcodec.h
+@@ -1,4 +1,5 @@
+ #include "CExpander.h"
++#include "uqtcommon.h"
+
+ #include <qfileinfo.h>
+ #include <qdir.h>
+@@ -22,17 +23,7 @@ class ebookcodec : public CExpander_Interface
+ }
+ ebookcodec(const QString& _s) : codec(NULL), handle(NULL), status(0)
+ {
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString codecpath(getenv("OPIEDIR"));
+-#else
+- QString codecpath(getenv("QTDIR"));
+-#endif
+- codecpath += "/plugins/reader/codecs/";
+-#else
+- QString codecpath(getenv("READERDIR"));
+- codecpath += "/codecs/";
+-#endif
++ QString codecpath = uqt_codecspath();
+ codecpath += _s;
+ if (QFile::exists(codecpath))
+ {
+diff --git a/fileBrowser.cpp b/fileBrowser.cpp
+index c8c371a..688f035 100644
+--- a/fileBrowser.cpp
++++ b/fileBrowser.cpp
+@@ -53,18 +53,18 @@ fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, boo
+ ListView->addColumn( tr( "Name" ) );
+ ListView->setSorting( 2, FALSE);
+ ListView->addColumn( tr( "Size" ) );
+- ListView->setSelectionMode(QListView::Single);
++ ListView->setSelectionMode(Q3ListView::Single);
+ ListView->setAllColumnsShowFocus( TRUE );
+- ListView->setColumnWidthMode(0, ((modal) ? QListView::Manual : QListView::Maximum));
+- ListView->setColumnWidthMode(1, QListView::Manual);
++ ListView->setColumnWidthMode(0, ((modal) ? Q3ListView::Manual : Q3ListView::Maximum));
++ ListView->setColumnWidthMode(1, Q3ListView::Manual);
+
+ // signals and slots connections
+ connect( buttonShowHidden, SIGNAL( toggled(bool) ), this, SLOT( setHidden(bool) ) );
+ connect( buttonOk, SIGNAL( clicked() ), this, SLOT( OnRoot() ) );
+- connect( ListView, SIGNAL(doubleClicked( QListViewItem*)), SLOT(listDoubleClicked(QListViewItem *)) );
+- connect( ListView, SIGNAL(clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
+- connect( ListView, SIGNAL(OnOKButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
+- connect( ListView, SIGNAL(OnCentreButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
++ connect( ListView, SIGNAL(doubleClicked( Q3ListViewItem*)), SLOT(listDoubleClicked(Q3ListViewItem *)) );
++ connect( ListView, SIGNAL(clicked( Q3ListViewItem*)), SLOT(listClicked(Q3ListViewItem *)) );
++ connect( ListView, SIGNAL(OnOKButton( Q3ListViewItem*)), SLOT(listClicked(Q3ListViewItem *)) );
++ connect( ListView, SIGNAL(OnCentreButton( Q3ListViewItem*)), SLOT(listClicked(Q3ListViewItem *)) );
+ connect( ListView, SIGNAL(OnCancelButton()), SLOT(OnCancel()) );
+
+ QVBoxLayout* grid = new QVBoxLayout(this);
+@@ -143,16 +143,13 @@ void fileBrowser::populateList()
+ currentDir.setNameFilter(filterStr);
+ // currentDir.setNameFilter("*.txt;*.etx");
+ QString fileL, fileS;
+- const QFileInfoList *list = currentDir.entryInfoList();
+- QFileInfoListIterator it(*list);
+- QFileInfo *fi;
+- while ( (fi=it.current()) )
+- {
+- if (fi->fileName() != ".")
++ QFileInfoList list = currentDir.entryInfoList();
++ for(QFileInfoListIterator it=list.begin();it!=list.end();++it) {
++ if (it->fileName() != ".")
+ {
+- fileS.sprintf( "%10li", fi->size() );
+- fileL.sprintf( "%s",fi->fileName().data() );
+- if( fi->isDir() )
++ fileS.sprintf( "%10li", it->size() );
++ fileL.sprintf( "%s",it->fileName().data() );
++ if( it->isDir() )
+ {
+ fileL+="/";
+ }
+@@ -160,9 +157,8 @@ void fileBrowser::populateList()
+ {
+ //// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL);
+ }
+- new QListViewItem( ListView,fileL,fileS );
++ new Q3ListViewItem( ListView,fileL,fileS );
+ }
+- ++it;
+ }
+ ListView->setSorting( 2, FALSE);
+ dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath());
+@@ -174,7 +170,7 @@ void fileBrowser::upDir()
+ //// qDebug(currentDir.canonicalPath());
+ }
+
+-void fileBrowser::listClicked(QListViewItem *selectedItem)
++void fileBrowser::listClicked(Q3ListViewItem *selectedItem)
+ {
+ if (selectedItem == NULL) return;
+ QString strItem=selectedItem->text(0);
+@@ -196,12 +192,12 @@ void fileBrowser::listClicked(QListViewItem *selectedItem)
+
+ if(QDir(strItem).exists())
+ {
+- currentDir.cd(strItem, TRUE);
++ currentDir.cd(strItem);
+ populateList();
+ }
+ } else
+ {
+- QListViewItem *selectedItem = ListView->selectedItem();
++ Q3ListViewItem *selectedItem = ListView->selectedItem();
+ if (selectedItem == NULL)
+ {
+ filename = "";
+@@ -218,7 +214,7 @@ void fileBrowser::listClicked(QListViewItem *selectedItem)
+ }
+
+ // you may want to switch these 2 functions. I like single clicks
+-void fileBrowser::listDoubleClicked(QListViewItem *selectedItem)
++void fileBrowser::listDoubleClicked(Q3ListViewItem *selectedItem)
+ {
+ }
+
+@@ -253,7 +249,7 @@ void fileBrowser::setHidden(bool _hidden)
+
+ void fileBrowser::onReturn()
+ {
+- QListViewItem *selectedItem = ListView->selectedItem();
++ Q3ListViewItem *selectedItem = ListView->selectedItem();
+ if (selectedItem == NULL)
+ {
+ filename = m_filename->text();
+@@ -282,7 +278,7 @@ void fileBrowser::onHome()
+
+ void fileBrowser::setdir(const QString& s)
+ {
+- currentDir.cd(s, TRUE);
++ currentDir.cd(s);
+ populateList();
+ chdir(s);
+ }
+diff --git a/fileBrowser.h b/fileBrowser.h
+index c536e96..959e866 100644
+--- a/fileBrowser.h
++++ b/fileBrowser.h
+@@ -22,6 +22,9 @@ blah,blah,blah
+ #include <qstringlist.h>
+ #include <qlabel.h>
+ #include <qstring.h>
++#include <qnamespace.h>
++using namespace Qt;
++#include <Qt3Support/Q3ListViewItem>
+
+ class QVBoxLayout;
+ class QHBoxLayout;
+@@ -50,7 +53,7 @@ class fileBrowser : public QDialog
+ QFile file;
+ QString getCurrentFile();
+ QLineEdit* m_filename;
+- int filterspec;
++ QDir::Filters filterspec;
+ // QDir::FilterSpec filterspec;
+
+ //QListViewItem * item;
+@@ -60,8 +63,8 @@ class fileBrowser : public QDialog
+ QString filename;
+ private slots:
+ void upDir();
+- void listDoubleClicked(QListViewItem *);
+- void listClicked(QListViewItem *);
++ void listDoubleClicked(Q3ListViewItem *);
++ void listClicked(Q3ListViewItem *);
+ void OnRoot();
+ void OnCancel();
+ void setHidden(bool);
+diff --git a/hrule.cpp b/hrule.cpp
+index d697acb..4705057 100644
+--- a/hrule.cpp
++++ b/hrule.cpp
+@@ -1,4 +1,5 @@
+ #include <qimage.h>
++#include <qpixmap.h>
+
+ QImage* hRule(int w, int h, unsigned char r, unsigned char g, unsigned char b)
+ {
+diff --git a/infowin.cpp b/infowin.cpp
+index 816a09f..0a25571 100644
+--- a/infowin.cpp
++++ b/infowin.cpp
+@@ -1,7 +1,7 @@
+ #include "infowin.h"
+ #include "version.h"
+ #include <stdio.h>
+-#include <qmultilineedit.h>
++#include <Qt3Support/Q3MultiLineEdit>
+ #include <qlayout.h>
+ #include <qpushbutton.h>
+ #include "names.h"
+@@ -20,9 +20,9 @@ infowin::infowin( QWidget *parent, const char *name, WFlags f) :
+ QWidget(parent, name, f)
+ {
+ QVBoxLayout* vl = new QVBoxLayout(this);
+- aboutbox = new QMultiLineEdit(this);
++ aboutbox = new Q3MultiLineEdit(this);
+ aboutbox->setReadOnly(true);
+- aboutbox->setWordWrap(QMultiLineEdit::WidgetWidth);
++ aboutbox->setWordWrap(Q3MultiLineEdit::WidgetWidth);
+ //grid->addWidget(l, 5, 0);
+ vl->addWidget(aboutbox);
+ QGridLayout* grid = new QGridLayout(vl, 10, 2);
+diff --git a/infowin.h b/infowin.h
+index c003998..92cff3a 100644
+--- a/infowin.h
++++ b/infowin.h
+@@ -2,6 +2,9 @@
+ #define __INFOWIN_H
+
+ #include <qlabel.h>
++#include <Qt3Support/Q3MultiLineEdit>
++#include <qnamespace.h>
++using namespace Qt;
+ class QString;
+ class QMultiLineEdit;
+
+@@ -17,7 +20,7 @@ Q_OBJECT
+ QLabel* docSize;
+ QLabel* docLocation;
+ QLabel* zoom;
+- QMultiLineEdit* aboutbox;
++ Q3MultiLineEdit* aboutbox;
+ public:
+ infowin( QWidget *parent=0, const char *name=0, WFlags f = 0);
+ void setFileSize(int sz) { fileSize->setNum(sz); }
+diff --git a/opiedir/include.pro b/opiedir/include.pro
+new file mode 100644
+index 0000000..44c572b
+--- /dev/null
++++ b/opiedir/include.pro
+@@ -0,0 +1,15 @@
++DEFINES -= OPIE USEQPE
++DEFINES += QT3_SUPPORT
++
++LIBS -= -lopiecore2 -lopieui2 -lqpe
++LIBS += -L${OPIEDIR}/lib
++
++QT += core gui qt3support
++
++isEmpty(UQT_LIBDIR) {
++ UQT_LIBDIR = /usr/lib/uqtreader
++}
++isEmpty(UQT_DATADIR) {
++ UQT_DATADIR = /usr/share/uqtreader
++}
++DEFINES += UQT_LIBDIR='\\"$$UQT_LIBDIR\\"' UQT_DATADIR='\\"$$UQT_DATADIR\\"'
+diff --git a/outputcodec.h b/outputcodec.h
+index 727575c..dfba5a2 100644
+--- a/outputcodec.h
++++ b/outputcodec.h
+@@ -2,6 +2,8 @@
+ #include <qfileinfo.h>
+ #include <qdir.h>
+
++#include "uqtcommon.h"
++
+ #ifdef USEQPE
+ #include <qpe/global.h>
+ #endif
+@@ -29,17 +31,8 @@ class outputcodec : public COutput
+ }
+ outputcodec(const QString& _s) : codec(NULL), handle(NULL), status(-1)
+ {
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString codecpath(getenv("OPIEDIR"));
+-#else
+- QString codecpath(getenv("QTDIR"));
+-#endif
+- codecpath += "/plugins/reader/outcodecs/lib";
+-#else
+- QString codecpath(getenv("READERDIR"));
+- codecpath += "/outcodecs/lib";
+-#endif
++ QString codecpath = uqt_outcodecspath();
++ codecpath += "lib";
+ codecpath += _s;
+ codecpath += ".so";
+ if (QFile::exists(codecpath))
+diff --git a/preferences.cpp b/preferences.cpp
+index 67960ed..044a003 100755
+--- a/preferences.cpp
++++ b/preferences.cpp
+@@ -14,7 +14,7 @@ Config::Config(const QString& _fn) : fname(_fn)
+ {
+ QTextStream t(&fl);
+ QString key, value;
+- while (!t.eof())
++ while (!t.atEnd())
+ {
+ QString data = t.readLine();
+ int colon = data.find(':');
+diff --git a/reader/reader.pro b/reader/reader.pro
+index dc6a5dd..7552bd1 100644
+--- a/reader/reader.pro
++++ b/reader/reader.pro
+@@ -51,7 +51,8 @@ HEADERS = Aportis.h \
+ util.h \
+ utypes.h \
+ version.h \
+- ztxt.h
++ ztxt.h \
++ preferences.h
+
+ SOURCES = BuffDoc.cpp \
+ ButtonPrefs.cpp \
+@@ -76,7 +77,8 @@ SOURCES = BuffDoc.cpp \
+ main.cpp \
+ orkey.cpp \
+ util.cpp \
+- version.cpp
++ version.cpp \
++ preferences.cpp
+
+ INTERFACES =
+ DESTDIR = $(OPIEDIR)/bin
+diff --git a/striphtml.cpp b/striphtml.cpp
+index a2ad56b..1346dc3 100644
+--- a/striphtml.cpp
++++ b/striphtml.cpp
+@@ -8,6 +8,7 @@
+ #include "CDrawBuffer.h"
+ #include "striphtml.h"
+ #include "hrule.h"
++#include "uqtcommon.h"
+
+ #include <qregexp.h>
+ #include <qimage.h>
+@@ -209,14 +210,14 @@ QString striphtml::dehtml(const QString& _info)
+ QString info;
+ for (int i = 0; i < _info.length(); i++)
+ {
+- tchar ch = _info[i];
++ tchar ch = _info[i].unicode();
+ if (ch == '%')
+ {
+ ch = 0;
+ for (int j = 0; j < 2; j++)
+ {
+ ch <<= 4;
+- tchar ch1 = _info[++i];
++ tchar ch1 = _info[++i].unicode();
+ if ('0' <= ch1 && ch1 <= '9')
+ {
+ ch += ch1 - '0';
+@@ -285,7 +286,7 @@ bool striphtml::findanchor(const QString& _info)
+ while (1)
+ {
+ // qApp->processEvents();
+- if ((offset = name.match(toQString(test.data()))) != -1) break;
++ if ((offset = name.exactMatch(toQString(test.data()))) != -1) break;
+ #ifdef USEQPE
+ if ((offset = id.match(toQString(test.data()))) != -1) break;
+ #endif
+@@ -325,17 +326,7 @@ striphtml::~striphtml()
+ void striphtml::initentmap()
+ {
+ entmap = new QMap<QString, tchar>;
+-#ifdef USEQPE
+-#ifdef OPIE
+- QString fname(getenv("OPIEDIR"));
+-#else
+- QString fname(getenv("QTDIR"));
+-#endif
+- fname += "/plugins/reader/data";
+-#else
+- QString fname(getenv("READERDIR"));
+- fname += "/data";
+-#endif
++ QString fname = uqt_datapath();
+ QFileInfo fi;
+ fi.setFile(fname, "HTMLentities");
+ if (fi.exists())
+@@ -347,7 +338,7 @@ void striphtml::initentmap()
+ {
+ QTextStream t(&fl);
+ QString key, value;
+- while (!t.eof())
++ while (!t.atEnd())
+ {
+ QString data = t.readLine();
+ int colon = data.find(':');
+diff --git a/uqtcommon.h b/uqtcommon.h
+new file mode 100644
+index 0000000..e551740
+--- /dev/null
++++ b/uqtcommon.h
+@@ -0,0 +1,57 @@
++#ifndef __UQTCOMMON_H
++#define __UQTCOMMON_H
++
++#include <qstring.h>
++
++#ifdef USEQPE
++# ifdef OPIE
++# define Q_DIR_ENV "OPIEDIR"
++# else
++# define Q_DIR_ENV "QTDIR"
++# endif
++#endif
++
++inline QString uqt_libdir() {
++# ifdef USEQPE
++ return QString(getenv(Q_DIR_ENV))+"/plugins/reader";
++# else
++ const char *rd = getenv("READERDIR");
++ if(rd) return rd;
++ return UQT_LIBDIR;
++# endif
++}
++inline QString uqt_datadir() {
++# ifdef USEQPE
++ return QString(geenv(Q_DIR_ENV));
++# else
++ const char *rd = getenv("READERDIR");
++ if(rd) return rd;
++ return UQT_DATADIR;
++# endif
++}
++
++inline QString uqt_codecspath() {
++ return uqt_libdir()+"/codecs/";
++}
++inline QString uqt_outcodecspath() {
++ return uqt_libdir()+"/outcodecs/";
++}
++inline QString uqt_filterspath() {
++ return uqt_libdir()+"/filters/";
++}
++inline QString uqt_supportpath() {
++ return uqt_libdir()+"/support/";
++}
++
++inline QString uqt_picspath() {
++ return uqt_datadir()+"/pics/";
++}
++inline QString uqt_datapath() {
++# ifdef QPE
++ return uqt_datadir()+"/plugins/reader/data";
++# else
++ return uqt_datadir()+"/data";
++# endif
++}
++
++#endif /* __UQTCOMMON_H */
+diff --git a/version.cpp b/version.cpp
+index aafb3d8..743ef38 100644
+--- a/version.cpp
++++ b/version.cpp
+@@ -2,9 +2,9 @@
+ #include "names.h"
+ #include <qmessagebox.h>
+
+-#include <qmultilineedit.h>
++#include <Qt3Support/Q3MultiLineEdit>
+ #include <qlayout.h>
+-#include <qtextview.h>
++#include <Qt3Support/Q3TextView>
+ class versionbox : public QDialog
+ {
+ public:
+@@ -19,7 +19,7 @@ public:
+ box->setWordWrap(QMultiLineEdit::WidgetWidth);
+ box->setText(txt);
+ */
+- QTextView* box = new QTextView(this);
++ Q3TextView* box = new Q3TextView(this);
+ v->addWidget(box);
+ box->setText(txt);
+ #ifdef USEQPE
diff --git a/packages/opie-reader/opie-reader_cvs.bb b/packages/opie-reader/opie-reader_cvs.bb
index 2f844d8dfd..82b3547ae1 100644
--- a/packages/opie-reader/opie-reader_cvs.bb
+++ b/packages/opie-reader/opie-reader_cvs.bb
@@ -1,8 +1,10 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = r1
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/apps/opie-reader \
${HANDHELDS_CVS};module=opie/pics \
- ${HANDHELDS_CVS};module=opie/apps"
+ ${HANDHELDS_CVS};module=opie/apps \
+ file://opie-reader-unicode-copy.patch;patch=1"
diff --git a/packages/opie-reader/uqtreader_cvs.bb b/packages/opie-reader/uqtreader_cvs.bb
new file mode 100644
index 0000000000..04b03243c4
--- /dev/null
+++ b/packages/opie-reader/uqtreader_cvs.bb
@@ -0,0 +1,72 @@
+DESCRIPTION = "qt4-x11 opie-reader ebook reader port"
+SECTION = "x11/applications"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+RRECOMMENDS="${PN}-filter-html"
+
+SRCDATE = "20070601"
+PV = "1.2.2opie+cvs${SRCDATE}"
+PR = "r3"
+
+SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/apps/opie-reader \
+ ${HANDHELDS_CVS};module=opie/pics \
+ ${HANDHELDS_CVS};module=opie/apps \
+ file://qt4.patch;patch=1"
+S = "${WORKDIR}/opie-reader"
+
+export OPIEDIR="${S}/opiedir"
+
+inherit qmake-base qt4x11
+
+do_configure() {
+ ${OE_QMAKE_QMAKE} -recursive opie-reader.pro UQT_DATADIR="${datadir}/${PN}" UQT_LIBDIR="${libdir}/${PN}"
+}
+do_compile() {
+ oe_runmake
+}
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/opiedir/bin/opie-reader ${D}${bindir}/uqtreader
+ install -d ${D}${libdir}/${PN}
+ cp -Rpd ${S}/opiedir/lib/lib*.so.* ${D}${libdir}
+ for so in ${S}/opiedir/plugins/reader/{codecs,filters,outcodecs,support}/lib*.so ; do
+ soso="${so#${S}/opiedir/plugins/reader/}"
+ dd="${D}${libdir}/${PN}/$(dirname "$soso")"
+ install -d "$dd"
+ install -m 0755 "$so" "${dd}/$(basename "$soso")"
+ done
+ install -d ${D}${datadir}/${PN}
+ cp -Rpd ${S}/opiedir/plugins/reader/data ${D}${datadir}/${PN}
+ install -d ${D}${datadir}/${PN}/pics
+ cp \
+ ${WORKDIR}/pics/opie-reader/*.png \
+ ${WORKDIR}/pics/inline/{AppsIcon,SettingsIcon,fileopen,close,cut,UtilsIcon,1to1,find,start,finish,rotate,up,down,back,home,forward,paste,fullscreen,repeat,zoom,mag,exec,new,copy,next,enter}.png \
+ ${D}${datadir}/${PN}/pics/
+ install -d ${D}${datadir}/applications
+ sed <${WORKDIR}/apps/Applications/opie-reader.desktop \
+ -e '/^CanFastLoad/d' -e 's,^Icon=.*,Icon=${datadir}/${PN}/pics/OpieReader.png,g' \
+ -e 's,^Exec=.*,Exec=${bindir}/uqtreader,g' \
+ -e '$aType=Application' -e 'aCategories=Applications' \
+ -e '/^Name/s/Opie/UQT/g' \
+ >${D}${datadir}/applications/uqtreader.desktop
+}
+PACKAGES += "${PN}-pdblib ${PN}-codeclib \
+ ${PN}-codec-aportis ${PN}-codec-arrierego ${PN}-codec-chm ${PN}-codec-plucker ${PN}-codec-reb ${PN}-codec-weasel ${PN}-codec-isilo ${PN}-codec-ppms \
+ ${PN}-filter-html ${PN}-output-flitecmd"
+
+
+FILES_${PN}-pdblib = "${libdir}/libreader_pdb.so.*"
+FILES_${PN}-codeclib = "${libdir}/libreader_codec.so.*"
+FILES_${PN}-codec-aportis = "${libdir}/uqtreader/codecs/libAportis.so"
+FILES_${PN}-codec-arrierego = "${libdir}/uqtreader/codecs/libArriereGo.so"
+FILES_${PN}-codec-chm = "${libdir}/uqtreader/codecs/libCHM.so"
+DEBIAN_NOAUTONAME_${PN}-codec-plucker = 1
+FILES_${PN}-codec-plucker = "${libdir}/uqtreader/codecs/libPlucker.so ${libdir}/lib*plucker*.so.* ${libdir}/uqtreader/support/libpluckerdecompress.so"
+FILES_${PN}-codec-reb = "${libdir}/uqtreader/codecs/libReb.so"
+FILES_${PN}-codec-weasel = "${libdir}/uqtreader/codecs/libWeasel.so"
+FILES_${PN}-codec-isilo = "${libdir}/uqtreader/codecs/libiSilo.so"
+FILES_${PN}-codec-ppms = "${libdir}/uqtreader/codecs/libppms.so"
+FILES_${PN}-filter-html = "${libdir}/uqtreader/filters/libHTMLfilter.so"
+FILES_${PN}-output-flitecmd = "${libdir}/uqtreader/outcodecs/libflitecmd.so"
+FILES_${PN} = "${bindir}/uqtreader ${datadir}/uqtreader/data/* ${datadir}/uqtreader/pics/* ${datadir}/applications/*.desktop"
diff --git a/packages/opie-tinykate/opie-tinykate.inc b/packages/opie-tinykate/opie-tinykate.inc
index aeb2fddad8..7d700cb0dd 100644
--- a/packages/opie-tinykate/opie-tinykate.inc
+++ b/packages/opie-tinykate/opie-tinykate.inc
@@ -4,7 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "libqtaux2"
APPNAME = "tinykate"
-
+PR = "r1"
S = "${WORKDIR}/tinykate"
@@ -23,7 +23,7 @@ do_install() {
install -m 0644 ${WORKDIR}/share/${APPNAME}/syntax/*.* ${D}${palmtopdir}/share/${APPNAME}/syntax/
}
-PACKAGES = " \
+PACKAGES += " \
opie-tinykate-syntax-commondev \
opie-tinykate-syntax-documentation \
opie-tinykate-syntax-misc \
diff --git a/packages/opie-tinykate/opie-tinykate_1.2.2.bb b/packages/opie-tinykate/opie-tinykate_1.2.2.bb
index e964a4886e..528848b356 100644
--- a/packages/opie-tinykate/opie-tinykate_1.2.2.bb
+++ b/packages/opie-tinykate/opie-tinykate_1.2.2.bb
@@ -1,7 +1,5 @@
require ${PN}.inc
-
-
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/apps/tinykate \
${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
${HANDHELDS_CVS};tag=${TAG};module=opie/share \
diff --git a/packages/ossie/ossie-c-wavloader_svn.bb b/packages/ossie/ossie-c-wavloader_svn.bb
deleted file mode 100644
index 8f79f4667e..0000000000
--- a/packages/ossie/ossie-c-wavloader_svn.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "OSSIE Waveform Loader"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-PR = "r0"
-
-DEPENDS = "ossiecf expat"
-
-S="${WORKDIR}/c_wavLoader"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/c_wavLoader/trunk;module=c_wavLoader;proto=https"
-
-inherit autotools
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-channeldemo_svn.bb b/packages/ossie/ossie-channeldemo_svn.bb
deleted file mode 100644
index c7b6ffebff..0000000000
--- a/packages/ossie/ossie-channeldemo_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE Demo channel component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/ChannelDemo"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/ChannelDemo/trunk;module=ChannelDemo;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/ChannelDemo/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-demo_svn.bb b/packages/ossie/ossie-demo_svn.bb
deleted file mode 100644
index cef94f40a2..0000000000
--- a/packages/ossie/ossie-demo_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE Demo waveform"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-channeldemo ossie-rxdemo"
-RDEPENDS = "ossie-channeldemo ossie-rxdemo"
-
-S = "${WORKDIR}/ossie_demo"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/waveforms/ossie_demo/trunk;module=ossie_demo;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/waveforms/ossie_demo/*.xml /home/sca/xml/TxDemo/*.xml"
-BROKEN = "1"
diff --git a/packages/ossie/ossie-gpp-device_svn.bb b/packages/ossie/ossie-gpp-device_svn.bb
deleted file mode 100644
index 24099746b0..0000000000
--- a/packages/ossie/ossie-gpp-device_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE General Purpose Processor device"
-SECTION = "apps"
-PRIORITY = "optional"
-MAINTAINER = "Philip Balister philip@balister.org"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/GPP"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/GPP/trunk;module=GPP;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/GPP/*xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-interpolator_svn.bb b/packages/ossie/ossie-interpolator_svn.bb
deleted file mode 100644
index 24d641d0a2..0000000000
--- a/packages/ossie/ossie-interpolator_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE Interpolator component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-
-S = "${WORKDIR}/Interpolator"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/Interpolator/trunk;module=Interpolator;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/Interpolator/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-modulator_svn.bb b/packages/ossie/ossie-modulator_svn.bb
deleted file mode 100644
index bead988782..0000000000
--- a/packages/ossie/ossie-modulator_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE Modulator component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-
-S = "${WORKDIR}/Modulator"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/Modulator/trunk;module=Modulator;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/Modulator/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-nodebooter_svn.bb b/packages/ossie/ossie-nodebooter_svn.bb
deleted file mode 100644
index f37df3da74..0000000000
--- a/packages/ossie/ossie-nodebooter_svn.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "OSSIE Node Booter"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/nodebooter"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/nodebooter/trunk;module=nodebooter;proto=https"
-
-inherit autotools
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-randombits_svn.bb b/packages/ossie/ossie-randombits_svn.bb
deleted file mode 100644
index 6f9185910a..0000000000
--- a/packages/ossie/ossie-randombits_svn.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "OSSIE Random bit generator component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-
-S = "${WORKDIR}/RandomBits"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/RandomBits/trunk;module=RandomBits;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/RandomBits/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-rxdemo_svn.bb b/packages/ossie/ossie-rxdemo_svn.bb
deleted file mode 100644
index 2260cb9956..0000000000
--- a/packages/ossie/ossie-rxdemo_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE Demo receiver component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/RxDemo"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/RxDemo/trunk;module=RxDemo;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/RxDemo/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-sigproc_svn.bb b/packages/ossie/ossie-sigproc_svn.bb
deleted file mode 100644
index 20fe0b6460..0000000000
--- a/packages/ossie/ossie-sigproc_svn.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "OSSIE Signal Processing routines"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/SigProc"
-
-SRCDATE = "now"
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/SigProc/trunk;module=SigProc;proto=https"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF_append_arm = " --enable-fpm=arm"
-
-CXXFLAGS_powerpc = "-lstdc++"
-
-do_stage () {
- autotools_stage_all
-}
-BROKEN = "1"
diff --git a/packages/ossie/ossie-soundout-device_svn.bb b/packages/ossie/ossie-soundout-device_svn.bb
deleted file mode 100644
index 83daa5b013..0000000000
--- a/packages/ossie/ossie-soundout-device_svn.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "OSSIE sound playback device"
-SECTION = "apps"
-PRIORITY = "optional"
-MAINTAINER = "Philip Balister philip@balister.org"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "alsa-lib ossiecf ossie-standardinterfaces"
-
-S = "${WORKDIR}/Sound_out"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/Sound_out/trunk;module=Sound_out;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
-
-FILES_${PN} += "/home/sca/xml/soundCard/*xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-standardinterfaces_svn.bb b/packages/ossie/ossie-standardinterfaces_svn.bb
deleted file mode 100644
index 44e2f3899e..0000000000
--- a/packages/ossie/ossie-standardinterfaces_svn.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "OSSIE Standard port interfaces"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf"
-
-S = "${WORKDIR}/standardInterfaces"
-
-SRCDATE = "now"
-SRC_URI = "svn://ossie-dev.mprg.org/repos/ossie/standardInterfaces/trunk;module=standardInterfaces;proto=https"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
-
-CXXFLAGS_powerpc += "-lstdc++"
-
-do_stage () {
- autotools_stage_all
-}
-BROKEN = "1"
diff --git a/packages/ossie/ossie-tx-random-data_svn.bb b/packages/ossie/ossie-tx-random-data_svn.bb
deleted file mode 100644
index 744e505679..0000000000
--- a/packages/ossie/ossie-tx-random-data_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE transmit random bits waveform"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-randombits ossie-modulator ossie-interpolator ossie-usrp-tx-control ossie-usrp-device ossie-gpp-device"
-RDEPENDS = "ossie-randombits ossie-modulator ossie-interpolator ossie-usrp-tx-control ossie-usrp-device ossie-gpp-device"
-
-S = "${WORKDIR}/TX_Random_data"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/waveforms/TX_Random_data/trunk;module=TX_Random_data;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/waveforms/Random_BPSK/*.xml"
-BROKEN = "1"
diff --git a/packages/ossie/ossie-usrp-device_svn.bb b/packages/ossie/ossie-usrp-device_svn.bb
deleted file mode 100644
index e28996ce15..0000000000
--- a/packages/ossie/ossie-usrp-device_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE General Purpose Processor device"
-SECTION = "apps"
-PRIORITY = "optional"
-MAINTAINER = "Philip Balister philip@balister.org"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf usrp ossie-standardinterfaces"
-
-S = "${WORKDIR}/USRP"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/USRP/trunk;module=USRP;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/USRP/*xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossie-usrp-tx-control_svn.bb b/packages/ossie/ossie-usrp-tx-control_svn.bb
deleted file mode 100644
index 756fce9d61..0000000000
--- a/packages/ossie/ossie-usrp-tx-control_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "OSSIE USRP TX side control component"
-SECTION = "apps"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0.0+svn${SRCDATE}"
-
-DEPENDS = "ossiecf ossie-standardinterfaces"
-
-S = "${WORKDIR}/USRP_TX_Control"
-
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/USRP_TX_Control/trunk;module=USRP_TX_Control;proto=https"
-
-prefix="/home/sca"
-
-inherit autotools
-
-FILES_${PN} += "/home/sca/xml/USRP_TX_Control/*.xml"
-
-BROKEN = "1"
diff --git a/packages/ossie/ossiecf_svn.bb b/packages/ossie/ossiecf_svn.bb
deleted file mode 100644
index 35bf7523f0..0000000000
--- a/packages/ossie/ossiecf_svn.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "OSSIE Core Framework"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-DEPENDS = "xerces-c omniorb libtool-cross"
-PV = "0.0.0+svn${SRCDATE}"
-
-S = "${WORKDIR}/ossie"
-
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/ossie/trunk;module=ossie;proto=https"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
-
-CXXFLAGS_powerpc += "-lstdc++"
-
-do_stage () {
- autotools_stage_all
-}
-
-FILES_${PN} += "/home/sca/xml/dtd/*.dtd"
-
-BROKEN = "1"
diff --git a/packages/patcher/patcher-native_20040913.bb b/packages/patcher/patcher-native_20040913.bb
index 7da61e91c2..c071d52404 100644
--- a/packages/patcher/patcher-native_20040913.bb
+++ b/packages/patcher/patcher-native_20040913.bb
@@ -4,7 +4,6 @@ LICENSE = "Perl"
DEPENDS = ""
SECTION = "base"
PRIORITY = "optional"
-MAINTAINER = "Holger Schurig <hs4233@mail.mn-solutions.de>"
PACKAGES = ""
PR = "r1"
diff --git a/packages/patcher/patcher_20040913.bb b/packages/patcher/patcher_20040913.bb
index af4d91217c..471f75af7b 100644
--- a/packages/patcher/patcher_20040913.bb
+++ b/packages/patcher/patcher_20040913.bb
@@ -4,7 +4,6 @@ LICENSE = "Perl"
DEPENDS = ""
SECTION = "base"
PRIORITY = "optional"
-MAINTAINER = "Holger Schurig <hs4233@mail.mn-solutions.de>"
INHIBIT_DEFAULT_DEPS = "1"
SRC_URI = "http://www.holgerschurig.de/files/linux/patcher-${PV}.tar.bz2"
diff --git a/packages/pcmcia-cs/pcmcia-cs_3.2.8.bb b/packages/pcmcia-cs/pcmcia-cs_3.2.8.bb
index 3f4472b501..018f33550f 100644
--- a/packages/pcmcia-cs/pcmcia-cs_3.2.8.bb
+++ b/packages/pcmcia-cs/pcmcia-cs_3.2.8.bb
@@ -3,7 +3,8 @@ SECTION = "base"
PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "virtual/kernel"
-PR = "r27"
+RDEPENDS = "hostap-conf orinoco-conf"
+PR = "r28"
SRC_URI = "${SOURCEFORGE_MIRROR}/pcmcia-cs/pcmcia-cs-${PV}.tar.gz \
file://busybox.patch;patch=1 \
diff --git a/packages/pcmciautils/pcmciautils-014/makefile_fix.patch b/packages/pcmciautils/pcmciautils-014/makefile_fix.patch
index fed5d37bf8..f5bb64b9bd 100644
--- a/packages/pcmciautils/pcmciautils-014/makefile_fix.patch
+++ b/packages/pcmciautils/pcmciautils-014/makefile_fix.patch
@@ -13,3 +13,76 @@ Index: pcmciautils-014/Makefile
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
+--- pcmciautils-014/Makefile~ 2007-05-25 19:40:39.000000000 +0200
++++ pcmciautils-014/Makefile 2007-05-25 19:40:39.000000000 +0200
+@@ -258,28 +258,29 @@
+
+ install-hotplug:
+ $(INSTALL) -d $(DESTDIR)$(hotplugdir)
+- $(INSTALL_PROGRAM) -D hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
+- $(INSTALL_PROGRAM) -D hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
++ $(INSTALL_PROGRAM) hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
++ $(INSTALL_PROGRAM) hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
+
+ uninstall-hotplug:
+ - rm -f $(DESTDIR)$(hotplugdir)/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.rc
+
+ install-socket-hotplug:
+- $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
+- $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
++ $(INSTALL_PROGRAM) hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
++ $(INSTALL_PROGRAM) hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
+
+ uninstall-socket-hotplug:
+ - rm -f $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
+ install-socket-tools:
+- $(INSTALL_PROGRAM) -D $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(sbindir)/$(PCMCIA_SOCKET_STARTUP)
++ $(INSTALL) -d $(DESTDIR)$(sbindir)
++ $(INSTALL_PROGRAM) $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(sbindir)/$(PCMCIA_SOCKET_STARTUP)
+
+ uninstall-socket-tools:
+ - rm -f $(DESTDIR)$(sbindir)/$(PCMCIA_SOCKET_STARTUP)
+
+ install-tools:
+ $(INSTALL) -d $(DESTDIR)$(sbindir)
+- $(INSTALL_PROGRAM) -D $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
+- $(INSTALL_PROGRAM) -D $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(sbindir)/$(PCMCIA_CHECK_BROKEN_CIS)
++ $(INSTALL_PROGRAM) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
++ $(INSTALL_PROGRAM) $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(sbindir)/$(PCMCIA_CHECK_BROKEN_CIS)
+ $(SYMLINK) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(LSPCMCIA)
+
+ uninstall-tools:
+@@ -289,18 +290,20 @@
+
+ install-config:
+ $(INSTALL) -d $(DESTDIR)$(pcmciaconfdir)
+- $(INSTALL_DATA) -D config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
++ $(INSTALL_DATA) config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
+
+ uninstall-config:
+ # - rm -f $(DESTDIR)$(pcmciaconfdir)/config.opts
+
+ install-udev:
+- $(INSTALL_DATA) -D $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
++ $(INSTALL) -d $(DESTDIR)$(udevrulesdir)
++ $(INSTALL_DATA) $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
+
+ uninstall-udev:
+ - rm -f $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
+
+ install-man:
++ $(INSTALL) -d $(DESTDIR)$(mandir)/man8
+ $(INSTALL_DATA) -D man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
+ $(SYMLINK) pccardctl.8 $(DESTDIR)$(mandir)/man8/lspcmcia.8
+
+--- pcmciautils-014/Makefile~ 2007-05-25 19:43:01.000000000 +0200
++++ pcmciautils-014/Makefile 2007-05-25 19:43:01.000000000 +0200
+@@ -304,7 +304,7 @@
+
+ install-man:
+ $(INSTALL) -d $(DESTDIR)$(mandir)/man8
+- $(INSTALL_DATA) -D man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
++ $(INSTALL_DATA) man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
+ $(SYMLINK) pccardctl.8 $(DESTDIR)$(mandir)/man8/lspcmcia.8
+
+ uninstall-man:
diff --git a/packages/perl/libalgorithm-diff-perl_1.1902.bb b/packages/perl/libalgorithm-diff-perl_1.1902.bb
index 947b1a1191..4adc4e81f0 100644
--- a/packages/perl/libalgorithm-diff-perl_1.1902.bb
+++ b/packages/perl/libalgorithm-diff-perl_1.1902.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars \
perl-module-strict perl-module-vars"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TY/TYEMQ/Algorithm-Diff-${PV}.tar.gz"
diff --git a/packages/perl/libarchive-tar-perl_1.30.bb b/packages/perl/libarchive-tar-perl_1.30.bb
index 1c7a1d88c9..f9485a7548 100644
--- a/packages/perl/libarchive-tar-perl_1.30.bb
+++ b/packages/perl/libarchive-tar-perl_1.30.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-${PV}.tar.gz"
diff --git a/packages/perl/libcache-cache-perl_1.05.bb b/packages/perl/libcache-cache-perl_1.05.bb
index 2a810b7815..60908ad648 100644
--- a/packages/perl/libcache-cache-perl_1.05.bb
+++ b/packages/perl/libcache-cache-perl_1.05.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DC/DCLINTON/Cache-Cache-${PV}.tar.gz"
diff --git a/packages/perl/libclass-container-perl_0.12.bb b/packages/perl/libclass-container-perl_0.12.bb
index 7122d83601..81b00f544a 100644
--- a/packages/perl/libclass-container-perl_0.12.bb
+++ b/packages/perl/libclass-container-perl_0.12.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libparams-validate-perl-native"
RDEPENDS = "libparams-validate-perl"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Class-Container-${PV}.tar.gz"
diff --git a/packages/perl/libclass-data-inheritable-perl_0.06.bb b/packages/perl/libclass-data-inheritable-perl_0.06.bb
index 837968f93a..6bb5c597ed 100644
--- a/packages/perl/libclass-data-inheritable-perl_0.06.bb
+++ b/packages/perl/libclass-data-inheritable-perl_0.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Class::Data::Inheritable - Inheritable, overridable class data"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TM/TMTM/Class-Data-Inheritable-${PV}.tar.gz"
diff --git a/packages/perl/libcompress-zlib-perl_1.42.bb b/packages/perl/libcompress-zlib-perl_1.42.bb
index f30692f576..3326d961bf 100644
--- a/packages/perl/libcompress-zlib-perl_1.42.bb
+++ b/packages/perl/libcompress-zlib-perl_1.42.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Compress::Zlib - Interface to zlib compression library"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r7"
+PR = "r9"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-${PV}.tar.gz"
diff --git a/packages/perl/libdata-optlist-perl_0.101.bb b/packages/perl/libdata-optlist-perl_0.101.bb
index 2b3cc2a979..084a055329 100644
--- a/packages/perl/libdata-optlist-perl_0.101.bb
+++ b/packages/perl/libdata-optlist-perl_0.101.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libsub-install-perl-native libparams-util-perl-native"
RDEPENDS += "perl-module-list-util libparams-util-perl perl-module-strict \
libsub-install-perl perl-module-warnings "
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Data-OptList-${PV}.tar.gz"
diff --git a/packages/perl/libdevel-stacktrace-perl_1.13.bb b/packages/perl/libdevel-stacktrace-perl_1.13.bb
index e5e3dcaada..fd1b290364 100644
--- a/packages/perl/libdevel-stacktrace-perl_1.13.bb
+++ b/packages/perl/libdevel-stacktrace-perl_1.13.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Devel::StackTrace - Stack trace and stack trace frame objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Devel-StackTrace-${PV}.tar.gz"
diff --git a/packages/perl/libdigest-sha1-perl_2.11.bb b/packages/perl/libdigest-sha1-perl_2.11.bb
index fa9f2bcbcc..c6d629417f 100644
--- a/packages/perl/libdigest-sha1-perl_2.11.bb
+++ b/packages/perl/libdigest-sha1-perl_2.11.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Digest::SHA1 - Perl interface to the SHA-1 algorithm"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r11"
+PR = "r13"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz"
diff --git a/packages/perl/liberror-perl_0.17004.bb b/packages/perl/liberror-perl_0.17004.bb
index a2ba120148..9e5b2b4d71 100644
--- a/packages/perl/liberror-perl_0.17004.bb
+++ b/packages/perl/liberror-perl_0.17004.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Error - Error/exception handling in an OO-ish way"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r6"
+PR = "r7"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Error-${PV}.tar.gz"
diff --git a/packages/perl/libexception-class-perl_1.23.bb b/packages/perl/libexception-class-perl_1.23.bb
index 62df7e58c6..b26af13d84 100644
--- a/packages/perl/libexception-class-perl_1.23.bb
+++ b/packages/perl/libexception-class-perl_1.23.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libclass-data-inheritable-perl-native libdevel-stacktrace-perl-native"
RDEPENDS = "libclass-data-inheritable-perl libdevel-stacktrace-perl"
-PR = "r6"
+PR = "r7"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Exception-Class-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-cbuilder-perl_0.18.bb b/packages/perl/libextutils-cbuilder-perl_0.18.bb
index d446c9934a..aedb04f707 100644
--- a/packages/perl/libextutils-cbuilder-perl_0.18.bb
+++ b/packages/perl/libextutils-cbuilder-perl_0.18.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::CBuilder - Compile and link C code for Perl modules"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-CBuilder-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-depends-perl-native_0.205.bb b/packages/perl/libextutils-depends-perl-native_0.205.bb
new file mode 100644
index 0000000000..e0216cbfb5
--- /dev/null
+++ b/packages/perl/libextutils-depends-perl-native_0.205.bb
@@ -0,0 +1,5 @@
+SECTION = "libs"
+
+inherit native
+
+require libextutils-depends-perl_${PV}.bb
diff --git a/packages/perl/libextutils-depends-perl_0.205.bb b/packages/perl/libextutils-depends-perl_0.205.bb
new file mode 100644
index 0000000000..af4f6ffd8f
--- /dev/null
+++ b/packages/perl/libextutils-depends-perl_0.205.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "ExtUtils::Depends - Easily build XS extensions that depend on XS extensions"
+SECTION = "libs"
+LICENSE = "Artistic|GPL"
+PR = "r3"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RM/RMCFARLA/Gtk2-Perl/ExtUtils-Depends-${PV}.tar.gz"
+
+S = "${WORKDIR}/ExtUtils-Depends-${PV}"
+
+inherit cpan
diff --git a/packages/perl/libextutils-parsexs-perl_2.16.bb b/packages/perl/libextutils-parsexs-perl_2.16.bb
index bf18dadd38..431b04127b 100644
--- a/packages/perl/libextutils-parsexs-perl_2.16.bb
+++ b/packages/perl/libextutils-parsexs-perl_2.16.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::ParseXS - converts Perl XS code into C code"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-ParseXS-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-pkgconfig-perl-native_1.07.bb b/packages/perl/libextutils-pkgconfig-perl-native_1.07.bb
new file mode 100644
index 0000000000..b5cd092dbd
--- /dev/null
+++ b/packages/perl/libextutils-pkgconfig-perl-native_1.07.bb
@@ -0,0 +1,5 @@
+SECTION = "libs"
+
+inherit native
+
+require libextutils-pkgconfig-perl_${PV}.bb
diff --git a/packages/perl/libextutils-pkgconfig-perl_1.07.bb b/packages/perl/libextutils-pkgconfig-perl_1.07.bb
new file mode 100644
index 0000000000..d023beac69
--- /dev/null
+++ b/packages/perl/libextutils-pkgconfig-perl_1.07.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "ExtUtils::PkgConfig - simplistic interface to pkg-config"
+SECTION = "libs"
+LICENSE = "Artistic|GPL"
+PR = "r4"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RM/RMCFARLA/Gtk2-Perl/ExtUtils-PkgConfig-${PV}.tar.gz"
+
+S = "${WORKDIR}/ExtUtils-PkgConfig-${PV}"
+
+inherit cpan
diff --git a/packages/perl/libhtml-mason-perl_1.35.bb b/packages/perl/libhtml-mason-perl_1.35.bb
new file mode 100644
index 0000000000..71e96005e8
--- /dev/null
+++ b/packages/perl/libhtml-mason-perl_1.35.bb
@@ -0,0 +1,35 @@
+SECTION = "libs"
+LICENSE = "Artistic|GPL"
+DEPENDS = "libexception-class-perl-native libparams-validate-perl-native \
+ libcache-cache-perl-native libclass-container-perl-native"
+RDEPENDS_${PN} = "libexception-class-perl libparams-validate-perl \
+ libcache-cache-perl libclass-container-perl perl-module-strict \
+ perl-module-warnings perl-module-file-basename perl-module-file-path \
+ perl-module-file-spec perl-module-file-spec-unix perl-module-file-temp \
+ perl-module-carp-heavy perl-module-io-handle perl-module-io \
+ perl-module-exporter-heavy perl-module-cwd perl-module-scalar-util \
+ perl-module-list-util perl-module-bytes perl-module-file-glob \
+ perl-module-data-dumper"
+PR = "r1"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/HTML-Mason-${PV}.tar.gz"
+
+S = "${WORKDIR}/HTML-Mason-${PV}"
+
+inherit cpan_build
+
+do_install_append () {
+ # Fix up paths to the perl interpreter
+ for i in ${D}${bindir}/*.pl; do
+ sed -i -e "s#${STAGING_BINDIR}/perl#${bindir}/perl#g" $i
+ done
+
+ # Install the html documentation and example files
+ install -m 0755 -d ${D}${docdir}/${PN}/html \
+ ${D}${docdir}/${PN}/examples/samples \
+ ${D}${docdir}/${PN}/examples/eg
+ cp -pRP ${S}/htdocs ${D}${docdir}/${PN}/html
+ cp -pRP ${S}/eg ${D}${docdir}/${PN}/examples/eg
+ cp -pRP ${S}/samples ${D}${docdir}/${PN}/examples/samples
+}
+
diff --git a/packages/perl/libintl-perl_1.16.bb b/packages/perl/libintl-perl_1.16.bb
index e987934c65..e7cebd7458 100644
--- a/packages/perl/libintl-perl_1.16.bb
+++ b/packages/perl/libintl-perl_1.16.bb
@@ -3,7 +3,7 @@ LICENSE = "Artistic|GPL"
RDEPENDS = "perl-module-vars perl-module-locale perl-module-io-handle \
perl-module-symbol perl-module-selectsaver perl-module-io \
perl-module-integer perl-module-exporter-heavy"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://www.cpan.org/authors/id/G/GU/GUIDO/libintl-perl-${PV}.tar.gz"
diff --git a/packages/perl/libio-zlib-perl_1.04.bb b/packages/perl/libio-zlib-perl_1.04.bb
index 1c99166e16..40292f1a95 100644
--- a/packages/perl/libio-zlib-perl_1.04.bb
+++ b/packages/perl/libio-zlib-perl_1.04.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libcompress-zlib-perl-native"
RDEPENDS += "libcompress-zlib-perl"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-${PV}.tar.gz"
diff --git a/packages/perl/libipc-sharelite-perl_0.09.bb b/packages/perl/libipc-sharelite-perl_0.09.bb
index d56f0a99d4..6cef180374 100644
--- a/packages/perl/libipc-sharelite-perl_0.09.bb
+++ b/packages/perl/libipc-sharelite-perl_0.09.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "IPC::ShareLite - Light-weight interface to shared memory"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r11"
+PR = "r13"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MAURICE/IPC-ShareLite-${PV}.tar.gz"
diff --git a/packages/perl/liblocale-gettext-perl_1.05.bb b/packages/perl/liblocale-gettext-perl_1.05.bb
index f9490c0c41..763a5680cf 100644
--- a/packages/perl/liblocale-gettext-perl_1.05.bb
+++ b/packages/perl/liblocale-gettext-perl_1.05.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Locale::gettext - message handling functions"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/libintl"
-PR = "r7"
+PR = "r9"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-${PV}.tar.gz"
diff --git a/packages/perl/liblog-dispatch-perl_2.13.bb b/packages/perl/liblog-dispatch-perl_2.13.bb
index 85fdf7e616..ee4a2198c1 100644
--- a/packages/perl/liblog-dispatch-perl_2.13.bb
+++ b/packages/perl/liblog-dispatch-perl_2.13.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Log::Dispatch - Dispatches messages to one or more outputs"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Log-Dispatch-${PV}.tar.gz"
diff --git a/packages/perl/liblog-log4perl-perl_1.06.bb b/packages/perl/liblog-log4perl-perl_1.06.bb
index 16ec9f57f9..beecaad0fb 100644
--- a/packages/perl/liblog-log4perl-perl_1.06.bb
+++ b/packages/perl/liblog-log4perl-perl_1.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Log::Log4perl - Log4j implementation for Perl"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl-${PV}.tar.gz"
diff --git a/packages/perl/libmail-sendmail-perl_0.79.bb b/packages/perl/libmail-sendmail-perl_0.79.bb
index 1ed84fd150..b333c8239b 100644
--- a/packages/perl/libmail-sendmail-perl_0.79.bb
+++ b/packages/perl/libmail-sendmail-perl_0.79.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://www.cpan.org/modules/by-module/Mail/Mail-Sendmail-${PV}.tar.gz"
diff --git a/packages/perl/libmath-bigint-gmp-perl_1.18.bb b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
index 3eb24eda10..6a0e91d00c 100644
--- a/packages/perl/libmath-bigint-gmp-perl_1.18.bb
+++ b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "gmp-native"
RDEPENDS += "gmp"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-${PV}.tar.gz"
diff --git a/packages/perl/libmodule-build-perl_0.2805.bb b/packages/perl/libmodule-build-perl_0.2805.bb
index ae7ac7e973..8a7ce9fa04 100644
--- a/packages/perl/libmodule-build-perl_0.2805.bb
+++ b/packages/perl/libmodule-build-perl_0.2805.bb
@@ -8,7 +8,7 @@ DEPENDS = "libyaml-perl-native libversion-perl-native \
libarchive-tar-perl-native"
RDEPENDS = "libyaml-perl libversion-perl libextutils-cbuilder-perl \
libextutils-parsexs-perl libarchive-tar-perl"
-PR = "r4"
+PR = "r5"
S = "${WORKDIR}/Module-Build-${PV}"
diff --git a/packages/perl/libnet-ip-perl_1.25.bb b/packages/perl/libnet-ip-perl_1.25.bb
index f51cc18fc7..351e96187e 100644
--- a/packages/perl/libnet-ip-perl_1.25.bb
+++ b/packages/perl/libnet-ip-perl_1.25.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl perl-module-math-bigint"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-${PV}.tar.gz"
diff --git a/packages/perl/libnetserver-generic-perl_1.03.bb b/packages/perl/libnetserver-generic-perl_1.03.bb
index 5b0ecb1800..c4153b8c4c 100644
--- a/packages/perl/libnetserver-generic-perl_1.03.bb
+++ b/packages/perl/libnetserver-generic-perl_1.03.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://www.cpan.org/modules/by-module/NetServer/NetServer-Generic-${PV}.tar.gz"
diff --git a/packages/perl/libparams-util-perl_0.20.bb b/packages/perl/libparams-util-perl_0.20.bb
index b6d1feabaf..ef5b6e186a 100644
--- a/packages/perl/libparams-util-perl_0.20.bb
+++ b/packages/perl/libparams-util-perl_0.20.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-overload \
perl-module-scalar-util perl-module-strict perl-module-vars"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Params-Util-${PV}.tar.gz"
diff --git a/packages/perl/libparams-validate-perl_0.86.bb b/packages/perl/libparams-validate-perl_0.86.bb
index f3a11d2d60..52c23333e9 100644
--- a/packages/perl/libparams-validate-perl_0.86.bb
+++ b/packages/perl/libparams-validate-perl_0.86.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Params::Validate - Validate method/function parameters"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r11"
+PR = "r13"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Params-Validate-${PV}.tar.gz"
diff --git a/packages/perl/libperl6-junction-perl_1.10.bb b/packages/perl/libperl6-junction-perl_1.10.bb
index 81840b0b11..8cfef00670 100644
--- a/packages/perl/libperl6-junction-perl_1.10.bb
+++ b/packages/perl/libperl6-junction-perl_1.10.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Perl6::Junction - Perl6 style Junction operators in Perl5."
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/C/CF/CFRANKS/Perl6-Junction-${PV}.tar.gz"
diff --git a/packages/perl/libsub-exporter-perl_0.970.bb b/packages/perl/libsub-exporter-perl_0.970.bb
index b6ac2b17ee..44756601a2 100644
--- a/packages/perl/libsub-exporter-perl_0.970.bb
+++ b/packages/perl/libsub-exporter-perl_0.970.bb
@@ -5,7 +5,7 @@ DEPENDS += "libdata-optlist-perl-native libsub-install-perl-native \
libparams-util-perl-native"
RDEPENDS += "perl-module-carp libdata-optlist-perl libparams-util-perl \
perl-module-strict libsub-install-perl perl-module-warnings"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Exporter-${PV}.tar.gz"
diff --git a/packages/perl/libsub-install-perl_0.922.bb b/packages/perl/libsub-install-perl_0.922.bb
index 119094bf95..72bbfcc73b 100644
--- a/packages/perl/libsub-install-perl_0.922.bb
+++ b/packages/perl/libsub-install-perl_0.922.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-warnings"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Install-${PV}.tar.gz"
diff --git a/packages/perl/libsub-uplevel-perl_0.13.bb b/packages/perl/libsub-uplevel-perl_0.13.bb
index 38d3fcd593..032d924856 100644
--- a/packages/perl/libsub-uplevel-perl_0.13.bb
+++ b/packages/perl/libsub-uplevel-perl_0.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Sub::Uplevel - apparently run a function in a higher stack frame"
SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-${PV}.tar.gz"
diff --git a/packages/perl/libtest-builder-tester-perl_1.01.bb b/packages/perl/libtest-builder-tester-perl_1.01.bb
index 1fd884cfff..0704506ac7 100644
--- a/packages/perl/libtest-builder-tester-perl_1.01.bb
+++ b/packages/perl/libtest-builder-tester-perl_1.01.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-strict perl-module-carp perl-module-exporter \
perl-module-symbol perl-module-vars"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MARKF/Test-Builder-Tester-${PV}.tar.gz"
diff --git a/packages/perl/libtest-differences-perl_0.47.bb b/packages/perl/libtest-differences-perl_0.47.bb
index a66a39182e..e76f35ff0d 100644
--- a/packages/perl/libtest-differences-perl_0.47.bb
+++ b/packages/perl/libtest-differences-perl_0.47.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libtext-diff-perl-native"
RDEPENDS += "perl-module-carp perl-module-constant perl-module-exporter \
perl-module-strict libtext-diff-perl"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Test-Differences-${PV}.tar.gz"
diff --git a/packages/perl/libtest-exception-perl_0.22.bb b/packages/perl/libtest-exception-perl_0.22.bb
index b095ea3e4a..021770b01a 100644
--- a/packages/perl/libtest-exception-perl_0.22.bb
+++ b/packages/perl/libtest-exception-perl_0.22.bb
@@ -5,7 +5,7 @@ DEPENDS += "libsub-uplevel-perl-native"
RDEPENDS += "perl-module-base perl-module-carp perl-module-strict \
libsub-uplevel-perl perl-module-test-builder \
perl-module-warnings"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADIE/Test-Exception-${PV}.tar.gz"
diff --git a/packages/perl/libtest-mockmodule-perl_0.05.bb b/packages/perl/libtest-mockmodule-perl_0.05.bb
index e30a81cb18..422bd41ed0 100644
--- a/packages/perl/libtest-mockmodule-perl_0.05.bb
+++ b/packages/perl/libtest-mockmodule-perl_0.05.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-vars "
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SI/SIMONFLK/Test-MockModule-${PV}.tar.gz"
diff --git a/packages/perl/libtest-output-perl_0.10.bb b/packages/perl/libtest-output-perl_0.10.bb
index fb5bebdefe..3a2452ecfd 100644
--- a/packages/perl/libtest-output-perl_0.10.bb
+++ b/packages/perl/libtest-output-perl_0.10.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libsub-exporter-perl-native"
RDEPENDS += "libsub-exporter-perl"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SS/SSORICHE/Test-Output-${PV}.tar.gz"
diff --git a/packages/perl/libtext-diff-perl_0.35.bb b/packages/perl/libtext-diff-perl_0.35.bb
index 126d091d8e..07dde46945 100644
--- a/packages/perl/libtext-diff-perl_0.35.bb
+++ b/packages/perl/libtext-diff-perl_0.35.bb
@@ -5,7 +5,7 @@ DEPENDS += "libalgorithm-diff-perl-native"
RDEPENDS += "libalgorithm-diff-perl perl-module-carp perl-module-constant \
perl-module-exporter perl-module-strict perl-module-carp \
perl-module-strict "
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Text-Diff-${PV}.tar.gz"
diff --git a/packages/perl/liburi-perl_1.35.bb b/packages/perl/liburi-perl_1.35.bb
index c62de2c0fa..23116aced9 100644
--- a/packages/perl/liburi-perl_1.35.bb
+++ b/packages/perl/liburi-perl_1.35.bb
@@ -2,6 +2,7 @@ DESCRIPTION = "Manipulates and accesses URI strings"
SECTION = "libs"
LICENSE = "Artistic|GPL"
#RDEPENDS += " libmime-base64-perl libnet-perl"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/URI-${PV}.tar.gz"
diff --git a/packages/perl/libversion-perl_0.6701.bb b/packages/perl/libversion-perl_0.6701.bb
index 1081d98135..817824edec 100644
--- a/packages/perl/libversion-perl_0.6701.bb
+++ b/packages/perl/libversion-perl_0.6701.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "version - Perl extension for Version Objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r6"
+PR = "r8"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-${PV}.tar.gz"
diff --git a/packages/perl/libxml-parser-perl-native_2.34.bb b/packages/perl/libxml-parser-perl-native_2.34.bb
index 8932656171..193de60c80 100644
--- a/packages/perl/libxml-parser-perl-native_2.34.bb
+++ b/packages/perl/libxml-parser-perl-native_2.34.bb
@@ -3,6 +3,3 @@ SECTION = "libs"
inherit native
require libxml-parser-perl_${PV}.bb
-
-DEPENDS = "perl-native expat-native"
-EXTRA_CPANFLAGS += " EXPATINCPATH='${STAGING_INCDIR}' EXPATLIBPATH='${STAGING_LIBDIR}'"
diff --git a/packages/perl/libxml-parser-perl_2.34.bb b/packages/perl/libxml-parser-perl_2.34.bb
index b1676bb2fd..46ce6512ca 100644
--- a/packages/perl/libxml-parser-perl_2.34.bb
+++ b/packages/perl/libxml-parser-perl_2.34.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
LICENSE = "Artistic"
DEPENDS += "expat-native"
-PR = "r7"
+PR = "r10"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
diff --git a/packages/perl/libyaml-perl_0.62.bb b/packages/perl/libyaml-perl_0.62.bb
index f8b75b10b7..f6398097b8 100644
--- a/packages/perl/libyaml-perl_0.62.bb
+++ b/packages/perl/libyaml-perl_0.62.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/I/IN/INGY/YAML-${PV}.tar.gz"
diff --git a/packages/perl/perl-5.8.8/generate-sh.patch b/packages/perl/perl-5.8.8/generate-sh.patch
index 4c2b0bd752..50ce00b42f 100644
--- a/packages/perl/perl-5.8.8/generate-sh.patch
+++ b/packages/perl/perl-5.8.8/generate-sh.patch
@@ -1,16 +1,46 @@
Use the ld flags from the supplied configuration file. For sh we need the
flags that specify to build PIC code so that the shared libraries work.
---- perl-5.8.7/Cross/generate_config_sh~ 2006-09-25 16:34:09.000000000 +1000
-+++ perl-5.8.7/Cross/generate_config_sh 2006-09-25 16:34:09.000000000 +1000
-@@ -19,8 +19,8 @@
+Index: perl-5.8.8/Cross/generate_config_sh
+===================================================================
+--- perl-5.8.8.orig/Cross/generate_config_sh 2003-09-05 18:31:08.000000000 +1000
++++ perl-5.8.8/Cross/generate_config_sh 2007-05-30 09:12:50.000000000 +1000
+@@ -19,10 +19,10 @@
$callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
$callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
$callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
-$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
-$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+-$callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+-$callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+#$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+#$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
- $callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
- $callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
++$callbacks->{'ccflags'} = [\&simple_process_insert, ["CFLAGS", "-fno-strict-aliasing -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
++$callbacks->{'ccflags_uselargefiles'} = [\&simple_process_insert, ["CFLAGS", "-D_GNU_SOURCE -DTHREADS_HAVE_PIDS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
$callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+ $callbacks->{'cpp'} = [\&simple_process, ["CCP", "arm-linux-cpp"]];
+ $callbacks->{'cppflags'} = [\&simple_process, ["CCPFLAGS", "-fno-strict-aliasing"]];
+@@ -105,6 +105,23 @@
+
+ }
+
++# Insert env var into the variables value
++sub simple_process_insert {
++ my $key = shift;
++ my $value = shift;
++ my $envvar = $callbacks->{$key}->[1][0];
++
++ if ($ENV{$envvar}) {
++ # Strip quotes from value
++ $value =~ s/^\'//;
++ $value =~ s/\'$//;
++ # Remove -I/usr/local/... from the value
++ $value =~ s#\W-I/usr/local/\w+\W##g;
++ # Prepend env var (OE setting) to value
++ print("$key=\'$ENV{$envvar} $value\'\n");
++ }
++}
++
+ sub library_munge {
+ my $key = shift;
+ my $value = shift;
diff --git a/packages/perl/perl-5.8.8/native-makedepend-dash.patch b/packages/perl/perl-5.8.8/native-makedepend-dash.patch
new file mode 100644
index 0000000000..1f15474377
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-makedepend-dash.patch
@@ -0,0 +1,13 @@
+Index: perl-5.8.8/makedepend.SH
+===================================================================
+--- perl-5.8.8.orig/makedepend.SH 2007-05-24 12:06:52.000000000 +1000
++++ perl-5.8.8/makedepend.SH 2007-05-24 12:27:33.000000000 +1000
+@@ -128,7 +128,7 @@
+ *.y) filebase=`basename $file .y` ;;
+ esac
+ case "$file" in
+- */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;;
++ */*) finc="-I`echo $file | sed 's#/[^/]*$##'`" ;;
+ *) finc= ;;
+ esac
+ $echo "Finding dependencies for $filebase$_o."
diff --git a/packages/perl/perl-5.8.8/native-perlinc.patch b/packages/perl/perl-5.8.8/native-perlinc.patch
new file mode 100644
index 0000000000..aea38a0b56
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-perlinc.patch
@@ -0,0 +1,16 @@
+Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm
+===================================================================
+--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:16:47.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:18:12.000000000 +1000
+@@ -1597,6 +1597,11 @@
+ $self->{PERL_LIB} ||= $Config{privlibexp};
+ $self->{PERL_ARCHLIB} ||= $Config{archlibexp};
+ $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
++ # Check for environment override so we'll find the headers in the correct place
++ if (defined $ENV{PERL_INC})
++ {
++ $self->{PERL_INC} = $ENV{PERL_INC};
++ }
+ my $perl_h;
+
+ if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
diff --git a/packages/perl/perl-5.8.8/native-ssp.patch b/packages/perl/perl-5.8.8/native-ssp.patch
new file mode 100644
index 0000000000..f815aad452
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-ssp.patch
@@ -0,0 +1,14 @@
+Fix for compiling with ssp enabled gcc:
+See http://bugs.openembedded.org/show_bug.cgi?id=1980
+
+diff -Naur perl-5.8.7.orig/cflags.SH perl-5.8.7/cflags.SH
+--- perl-5.8.7.orig/cflags.SH 2002-09-30 10:59:07.000000000 +0000
++++ perl-5.8.7/cflags.SH 2005-10-02 04:08:39.000000000 +0000
+@@ -165,6 +165,8 @@
+ esac
+
+ : Can we perhaps use $ansi2knr here
++ [[ $file == regcomp ]] && export ccflags="${ccflags} -fno-stack-protector"
++ [[ $file == regexec ]] && export ccflags="${ccflags} -fno-stack-protector"
+ echo "$cc -c -DPERL_CORE $ccflags $optimize $warn"
+ eval "$also "'"$cc -DPERL_CORE -c $ccflags $optimize $warn"'
diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb
index c9d9b51771..ea839e00e8 100644
--- a/packages/perl/perl-native_5.8.8.bb
+++ b/packages/perl/perl-native_5.8.8.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.perl.org/"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/db-native gdbm-native"
-PR = "r7"
+PR = "r12"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
@@ -12,7 +12,12 @@ SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
file://Configure-multilib.patch;patch=1 \
file://perl-configpm-switch.patch;patch=1 \
file://native-nopacklist.patch;patch=1 \
- file://native-no-gdbminc.patch;patch=1"
+ file://native-no-gdbminc.patch;patch=1 \
+ file://native-perlinc.patch;patch=1 \
+ file://native-makedepend-dash.patch;patch=1"
+
+# This sloppy patch breaks normal gcc
+# file://native-ssp.patch;patch=1
S = "${WORKDIR}/perl-${PV}"
@@ -26,7 +31,16 @@ do_configure () {
-Dcf_by="Open Embedded" \
-Dprefix=${prefix} \
-Dvendorprefix=${prefix} \
- -Dsiteprefix=${prefix}/local \
+ -Dvendorprefix=${prefix} \
+ -Dsiteprefix=${prefix} \
+ \
+ -Dprivlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Darchlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dvendorlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dvendorarch=${STAGING_LIBDIR}/perl/${PV} \
+ -Dsitelib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dsitearch=${STAGING_LIBDIR}/perl/${PV} \
+ \
-Duseshrplib \
-Dusethreads \
-Duseithreads \
@@ -50,6 +64,9 @@ do_configure () {
do_stage_append() {
# We need a hostperl link for building perl
ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl
+ # Store native config in non-versioned directory
+ install -d ${STAGING_DIR}/${HOST_SYS}/perl
+ install config.sh ${STAGING_DIR}/${HOST_SYS}/perl
}
PARALLEL_MAKE = ""
diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb
index c8e7afebc7..edd0618a86 100644
--- a/packages/perl/perl_5.8.8.bb
+++ b/packages/perl/perl_5.8.8.bb
@@ -5,7 +5,7 @@ LICENSE = "Artistic|GPL"
PRIORITY = "optional"
# We need gnugrep (for -I)
DEPENDS = "virtual/db perl-native grep-native"
-PR = "r16"
+PR = "r20"
# Major part of version
PVM = "5.8"
@@ -17,6 +17,7 @@ SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
file://perl-moreconfig.patch;patch=1 \
file://letgcc-find-errno.patch;patch=1 \
file://generate-sh.patch;patch=1 \
+ file://perl-5.8.8-gcc-4.2.patch;patch=1 \
file://09_fix_installperl.patch;patch=1 \
file://52_debian_extutils_hacks.patch;patch=1 \
file://53_debian_mod_paths.patch;patch=1 \
@@ -37,7 +38,7 @@ SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl${PV}"
# Where to find .so files - use the -native versions not those from the target build
-export PERLHOSTLIB = "${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/${BUILD_ARCH}-${BUILD_OS}-thread-multi/"
+export PERLHOSTLIB = "${STAGING_DIR}/${BUILD_SYS}/lib/perl/${PV}/"
do_configure() {
# Make hostperl in build directory be the native perl
@@ -58,10 +59,15 @@ do_configure() {
# Fixups for uclibc
if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
+ -e "s,\(crypt_r_proto=\)'\w+',\1'0',g" \
-e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetbyname_r_proto=\)'\w+',\1'0',g" \
-e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetbyaddr_r_proto=\)'\w+',\1'0',g" \
-e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetent_r_proto=\)'\w+',\1'0',g" \
-e "s,\(d_sockatmark=\)'define',\1'undef',g" \
+ -e "s,\(d_sockatmarkproto=\)'\w+',\1'0',g" \
config.sh-${TARGET_ARCH}-${TARGET_OS}
fi
@@ -121,9 +127,25 @@ do_install() {
fi
}
do_stage() {
- install -d ${STAGING_DIR}/${HOST_SYS}/perl/
+ install -d ${STAGING_DIR}/${HOST_SYS}/perl \
+ ${STAGING_DIR}/${BUILD_SYS}/lib/perl/${PV} \
+ ${STAGING_LIBDIR}/perl/${PV}/CORE
+ # target config, used by cpan.bbclass to extract version information
install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/
- install lib/Config_heavy.pl ${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/Config_heavy-target.pl
+ # target configuration, used by native perl when cross-compiling
+ install lib/Config_heavy.pl ${STAGING_DIR}/${BUILD_SYS}/lib/perl/${PV}/Config_heavy-target.pl
+ # perl shared library headers
+ for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \
+ uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \
+ perliol.h pp_proto.h regnodes.h unixish.h config.h EXTERN.h \
+ hv.h malloc_ctl.h pad.h perlsdio.h proto.h scope.h utf8.h \
+ cop.h fakesdio.h INTERN.h mg.h patchlevel.h perlsfio.h \
+ reentr.h sv.h utfebcdic.h cv.h fakethr.h intrpvar.h \
+ nostdio.h perlapi.h perlvars.h reentr.inc thrdvar.h util.h \
+ dosish.h form.h iperlsys.h opcode.h perl.h perly.h regcomp.h \
+ thread.h warnings.h; do
+ install $i ${STAGING_LIBDIR}/perl/${PV}/CORE
+ done
}
PACKAGES = "perl-dbg perl perl-misc perl-lib perl-dev perl-pod perl-doc"
diff --git a/packages/pointercal/files/h2200/pointercal b/packages/pointercal/files/h2200/pointercal
deleted file mode 100644
index 13329047d8..0000000000
--- a/packages/pointercal/files/h2200/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-23214 147 -3929622 156 -28248 24825082 65536
diff --git a/packages/pointercal/files/hx4700/pointercal b/packages/pointercal/files/hx4700/pointercal
deleted file mode 100644
index 62b97378a9..0000000000
--- a/packages/pointercal/files/hx4700/pointercal
+++ /dev/null
@@ -1 +0,0 @@
--1109 0 33398576 7 1479 -3859852 65536
diff --git a/packages/pointercal/files/magician/pointercal b/packages/pointercal/files/magician/pointercal
deleted file mode 100644
index 7ea2d11310..0000000000
--- a/packages/pointercal/files/magician/pointercal
+++ /dev/null
@@ -1 +0,0 @@
--553 0 16838922 0 -718 22062080 65536
diff --git a/packages/pointercal/pointercal_0.0.bb b/packages/pointercal/pointercal_0.0.bb
index 7d47cb8d78..563e62900e 100644
--- a/packages/pointercal/pointercal_0.0.bb
+++ b/packages/pointercal/pointercal_0.0.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Touchscreen calibration data"
SECTION = "base"
-PR = "r0"
+PR = "r1"
SRC_URI = "file://pointercal"
S = "${WORKDIR}"
diff --git a/packages/powertop/powertop_1.2.bb b/packages/powertop/powertop_1.5.bb
index 2f9c7e44b0..ab84161ddc 100644
--- a/packages/powertop/powertop_1.2.bb
+++ b/packages/powertop/powertop_1.5.bb
@@ -1,9 +1,17 @@
DESCRIPTION = "PowerTOP, a tool that helps you find what software is using the most power."
HOMEPAGE = "http://www.linuxpowertop.org/"
LICENSE = "GPLv2"
+DEPENDS = "ncurses"
SRC_URI = "http://www.linuxpowertop.org/download/powertop-${PV}.tar.gz"
+CFLAGS += "${LDFLAGS}"
+
+do_configure() {
+ # We do not build ncurses with wide char support
+ sed -i -e "s/lncursesw/lncurses/" ${S}/Makefile
+}
+
do_install() {
oe_runmake install DESTDIR=${D}
}
diff --git a/packages/pptp-linux/pptp-linux-1.5.0/.mtn2git_empty b/packages/pptp-linux/pptp-linux-1.5.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pptp-linux/pptp-linux-1.5.0/.mtn2git_empty
diff --git a/packages/pptp-linux/pptp-linux/makefile.patch b/packages/pptp-linux/pptp-linux-1.5.0/makefile.patch
index ea2b5711a2..ea2b5711a2 100644
--- a/packages/pptp-linux/pptp-linux/makefile.patch
+++ b/packages/pptp-linux/pptp-linux-1.5.0/makefile.patch
diff --git a/packages/pptp-linux/pptp-linux/options.pptp b/packages/pptp-linux/pptp-linux-1.5.0/options.pptp
index f446e22a6a..f446e22a6a 100644
--- a/packages/pptp-linux/pptp-linux/options.pptp
+++ b/packages/pptp-linux/pptp-linux-1.5.0/options.pptp
diff --git a/packages/pptp-linux/pptp-linux-1.7.1/.mtn2git_empty b/packages/pptp-linux/pptp-linux-1.7.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pptp-linux/pptp-linux-1.7.1/.mtn2git_empty
diff --git a/packages/pptp-linux/pptp-linux-1.7.1/options.pptp b/packages/pptp-linux/pptp-linux-1.7.1/options.pptp
new file mode 100644
index 0000000000..f446e22a6a
--- /dev/null
+++ b/packages/pptp-linux/pptp-linux-1.7.1/options.pptp
@@ -0,0 +1,30 @@
+#
+# Lock the port
+#
+lock
+
+#
+# We don't need the tunnel server to authenticate itself
+#
+noauth
+
+#
+# Turn off transmission protocols we know won't be used
+#
+nobsdcomp
+nodeflate
+
+#
+# We want MPPE
+# (option naming specific to ppp 2.4.0 with unofficial patch)
+#
+#mppe-40
+mppe-128
+#mppe-stateless
+
+#
+# We want a sane mtu/mru
+# (ppp 2.4.0 with unofficial patch)
+#
+#mtu 1000
+#mru 1000
diff --git a/packages/pptp-linux/pptp-linux_1.7.1.bb b/packages/pptp-linux/pptp-linux_1.7.1.bb
new file mode 100644
index 0000000000..b233cef723
--- /dev/null
+++ b/packages/pptp-linux/pptp-linux_1.7.1.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "PPTP Client is a Linux, FreeBSD, NetBSD \
+and OpenBSD client for the proprietary Microsoft Point-to-Point \
+Tunneling Protocol, PPTP. Allows connection to a PPTP based \
+Virtual Private Network (VPN) as used by employers and some \
+cable and ADSL internet service providers."
+HOMEPAGE = "http://pptpclient.sourceforge.net"
+SECTION = "network"
+LICENSE = "GPL"
+RDEPENDS = "ppp"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sourceforge/pptpclient/pptp-${PV}.tar.gz \
+ file://options.pptp"
+
+S = "${WORKDIR}/pptp-${PV}"
+
+do_compile() {
+ oe_runmake
+}
+do_install() {
+ install -d ${D}${sbindir} ${D}${sysconfdir}/ppp ${D}${mandir}/man8
+ install -m 555 pptp ${D}${sbindir}
+ install -m 644 pptp.8 ${D}${mandir}/man8
+ install -m 644 ${WORKDIR}/options.pptp ${D}${sysconfdir}/ppp
+}
diff --git a/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/wireless.patch b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/wireless.patch
new file mode 100644
index 0000000000..dfa579f7b1
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/wireless.patch
@@ -0,0 +1,12 @@
+diff -ur prismstumbler-0.7.4pre1_old/src/daemon/cards.c prismstumbler-0.7.4pre1/src/daemon/cards.c
+--- prismstumbler-0.7.4pre1_old/src/daemon/cards.c 2006-03-28 19:31:26.000000000 +0200
++++ prismstumbler-0.7.4pre1/src/daemon/cards.c 2007-05-22 14:59:15.000000000 +0200
+@@ -9,6 +9,8 @@
+
+ #include <stdio.h>
+ #include <sys/socket.h>
++#include <linux/types.h>
++#include <net/if.h>
+ #include <linux/wireless.h>
+ #include <glib.h>
+ #include <string.h>
diff --git a/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
index 9311f894d0..3005476e50 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
@@ -1,5 +1,5 @@
SECTION = "x11/network"
-PR = "r1"
+PR = "r2"
PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
@@ -10,7 +10,8 @@ RDEPENDS = "wireless-tools"
RRECOMMENDS = "gpsd"
SRC_URI = "http://projects.linuxtogo.org/frs/download.php/14/${PN}-0.7.4pre1.tar.gz \
- file://gpsapi.patch;patch=1"
+ file://gpsapi.patch;patch=1 \
+ file://wireless.patch;patch=1"
S = "${WORKDIR}/${PN}-0.7.4pre1"
diff --git a/packages/prismstumbler/prismstumbler_0.7.3.bb b/packages/prismstumbler/prismstumbler_0.7.3.bb
index c0bfdcc5be..eaebe2087f 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3.bb
@@ -4,7 +4,7 @@ PR = "r5"
PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
LICENSE = "GPL"
-DEPENDS = "libpcap gtk+ wireless-tools sqlite zlib"
+DEPENDS = "libpcap gtk+ wireless-tools sqlite zlib libxpm"
RDEPENDS = "wireless-tools"
SRC_URI = "${SOURCEFORGE_MIRROR}/prismstumbler/${PN}-${PV}.tar.bz2 \
diff --git a/packages/pulseaudio/libatomics-ops_1.2.bb b/packages/pulseaudio/libatomics-ops_1.2.bb
new file mode 100644
index 0000000000..c4e838eb78
--- /dev/null
+++ b/packages/pulseaudio/libatomics-ops_1.2.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "A library for atomic integer operations"
+LICENSE = "MIT"
+
+SRC_URI = "http://www.hpl.hp.com/research/linux/atomic_ops/download/libatomic_ops-1.2.tar.gz"
+S = "${WORKDIR}/libatomic_ops-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/pulseaudio/pulse.inc b/packages/pulseaudio/pulse.inc
new file mode 100644
index 0000000000..d4a9c5ef54
--- /dev/null
+++ b/packages/pulseaudio/pulse.inc
@@ -0,0 +1,108 @@
+DESCRIPTION = "Pulseaudio is a sound server for Linux and Unix-like operating systems."
+HOMEPAGE = "http://www.pulseaudio.org"
+AUTHOR = "Lennart Poettering"
+SECTION = "libs/multimedia"
+LICENSE = "LGPL"
+
+DEPENDS = "libatomics-ops liboil avahi libsamplerate0 libsndfile1 libtool"
+# optional
+DEPENDS += "alsa-lib"
+
+PR = "r2"
+
+SRC_URI = "http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-${PV}.tar.gz"
+
+SRC_URI += "file://volatiles.04_pulse"
+
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "\
+ --disable-lynx \
+ --without-x \
+ --without-glib \
+ --without-jack \
+ --with-alsa \
+ --with-oss \
+ "
+
+PARALLEL_MAKE = ""
+
+export TARGET_PFPU="${TARGET_FPU}"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse
+
+ if [ "x${TARGET_PFPU}" == "xsoft" ] ; then
+ sed -i -e s:\;\ resample-method\ =\ sinc-fastest:resample-method\ =\ trivial: ${D}${sysconfdir}/pulse/daemon.conf
+ fi
+}
+
+
+PACKAGES =+ "libpulsecore libpulse libpulse-simple libpulse-browse libpulse-mainloop-glib pulseaudio-server \
+ pulseaudio-misc pulseaudio-gconf-helper"
+
+#upgrade path:
+RREPLACES_pulseaudio-server = "libpulse-bin libpulse-conf"
+
+
+PACKAGES_DYNAMIC = "pulseaudio-lib* pulseaudio-module* libpulse-lib* libpulse-module* "
+
+
+FILES_libpulsecore = "${libdir}/libpulsecore.so.*"
+FILES_libpulse = "${libdir}/libpulse.so.*"
+FILES_libpulse-simple = "${libdir}/libpulse-simple.so.*"
+FILES_libpulse-browse = "${libdir}/libpulse-browse.so.*"
+FILES_libpulse-mainloop-glib = "${libdir}/libpulse-mainloop-glib.so.*"
+
+FILES_${PN}-dbg += "${libexecdir}/pulse/.debug \
+ ${libdir}/pulse-0.9/modules/.debug"
+FILES_${PN}-dev += "${libdir}/pulse-0.9/modules/*.la"
+FILES_${PN}-conf = "${sysconfdir}"
+FILES_${PN}-bin = "${bindir}/* \
+ ${sysconfdir}/default/volatiles/volatiles.04_pulse"
+FILES_${PN}-server = "${bindir}/pulseaudio ${sysconfdir}"
+FILES_${PN}-gconf-helper = "${libexecdir}/pulse/gconf-helper"
+FILES_${PN}-misc = "${bindir}/*"
+
+CONFFILES_pulseaudio-server = "\
+ ${sysconfdir}/pulse/default.pa \
+ ${sysconfdir}/pulse/daemon.conf \
+ ${sysconfdir}/pulse/client.conf \
+ "
+pkg_postinst_libppulse() {
+if test "x$D" != "x"; then
+ exit 1
+else
+ grep -q pulse: /etc/group || addgroup pulse
+ grep -q pulse: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/pulse/ --system \
+ --ingroup pulse --no-create-home -g "Pulse audio daemon" pulse
+ /etc/init.d/populate-volatile.sh update
+fi
+}
+
+pkg_postrm_libpulse() {
+if test "x$D" != "x"; then
+ exit 1
+else
+ deluser pulse
+fi
+}
+
+
+
+
+do_stage() {
+ autotools_stage_all
+}
+
+
+python populate_packages_prepend() {
+ #bb.data.setVar('PKG_pulseaudio', 'pulseaudio', d)
+
+ plugindir = bb.data.expand('${libdir}/pulse-0.9/modules/', d)
+ do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='' )
+ do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='' )
+}
diff --git a/packages/pulseaudio/pulseaudio_0.9.5.bb b/packages/pulseaudio/pulseaudio_0.9.5.bb
index 35fd9a8342..3a4ab46cae 100644
--- a/packages/pulseaudio/pulseaudio_0.9.5.bb
+++ b/packages/pulseaudio/pulseaudio_0.9.5.bb
@@ -1,95 +1,3 @@
-DESCRIPTION = "Pulseaudio is a sound server for Linux and Unix-like operating systems."
-HOMEPAGE = "http://www.pulseaudio.org"
-AUTHOR = "Lennart Poettering"
-SECTION = "libs/multimedia"
-LICENSE = "LGPL"
+require pulse.inc
-DEPENDS = "liboil avahi libsamplerate0 libsndfile1 libtool"
-# optional
-DEPENDS += "alsa-lib"
-
-
-PR = "r7"
-
-SRC_URI = "http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-${PV}.tar.gz"
-
-SRC_URI += "file://volatiles.04_pulse"
-
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "\
- --disable-lynx \
- --without-x \
- --without-glib \
- --without-jack \
- --with-alsa \
- --with-oss \
- "
-
-PARALLEL_MAKE = ""
-
-export TARGET_FPU="${TARGET_FPU}"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/default/volatiles
- install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse
-
- if [ "x${TARGET_FPU}" == "xsoft" ] ; then
- sed -i -e s:\;\ resample-method\ =\ sinc-fastest:resample-method\ =\ trivial: ${D}${sysconfdir}/pulse/daemon.conf
- fi
-}
-
-
-LEAD_SONAME = "libpulse.so"
-
-PACKAGES =+ "${PN}-bin ${PN}-conf"
-PACKAGES_DYNAMIC = "pulseaudio-module-* pulseaudio-lib-*"
-
-FILES_${PN}-dbg += "${libexecdir}/pulse/.debug \
- ${libdir}/pulse-0.9/modules/.debug"
-FILES_${PN}-dev += "${libdir}/pulse-0.9/modules/*.la"
-FILES_${PN}-conf = "${sysconfdir}"
-FILES_${PN}-bin = "${bindir}/* \
- ${sysconfdir}/default/volatiles/volatiles.04_pulse"
-
-CONFFILES_${PN}-conf = "\
- ${sysconfdir}/pulse/default.pa \
- ${sysconfdir}/pulse/daemon.conf \
- ${sysconfdir}/pulse/client.conf \
- "
-pkg_postinst_${PN}-bin() {
-if test "x$D" != "x"; then
- exit 1
-else
- grep -q pulse: /etc/group || addgroup pulse
- grep -q pulse: /etc/passwd || \
- adduser --disabled-password --home=/var/run/pulse/ --system \
- --ingroup pulse --no-create-home -g "Pulse audio daemon" pulse
- /etc/init.d/populate-volatile.sh update
-fi
-}
-
-pkg_postrm${PN}-bin() {
-if test "x$D" != "x"; then
- exit 1
-else
- deluser pulse
-fi
-}
-
-
-
-
-do_stage() {
- autotools_stage_all
-}
-
-
-python populate_packages_prepend() {
- #bb.data.setVar('PKG_pulseaudio', 'pulseaudio', d)
-
- plugindir = bb.data.expand('${libdir}/pulse-0.9/modules/', d)
- do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='' )
- do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='' )
-}
+PR = "r10"
diff --git a/packages/pulseaudio/pulseaudio_0.9.6.bb b/packages/pulseaudio/pulseaudio_0.9.6.bb
new file mode 100644
index 0000000000..cd088c9843
--- /dev/null
+++ b/packages/pulseaudio/pulseaudio_0.9.6.bb
@@ -0,0 +1,3 @@
+require pulse.inc
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/python/fix-path.inc b/packages/python/fix-path.inc
new file mode 100644
index 0000000000..0738c59ada
--- /dev/null
+++ b/packages/python/fix-path.inc
@@ -0,0 +1,22 @@
+do_install_append() {
+ for i in `find ${D} -name "*.py"` ; do \
+ sed -i -e s:${D}::g $i
+ done
+
+ for i in `find ${D} -name "*.la"` ; do \
+ sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i
+ done
+
+ if test -e ${D}${bindir} ; then
+ for i in ${D}${bindir}/* ; do \
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ done
+ fi
+
+ if test -e ${D}${sbindir} ; then
+ for i in ${D}${sbindir}/* ; do \
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ done
+ fi
+}
+
diff --git a/packages/python/python-gst_0.10.7.bb b/packages/python/python-gst_0.10.7.bb
index d206c0ab12..ef4cac7b6b 100644
--- a/packages/python/python-gst_0.10.7.bb
+++ b/packages/python/python-gst_0.10.7.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "Python Gstreamer bindings"
SECTION = "devel/python"
LICENSE = "LGPL"
-DEPENDS = "gstreamer"
+DEPENDS = "gstreamer python-pygobject"
+PR = "r1"
SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
file://python-path.patch;patch=1"
@@ -20,3 +21,5 @@ do_configure_prepend() {
do_stage() {
autotools_stage_all
}
+
+FILES_${PN}-dbg = "${libdir}/python2.4/site-packages/gst-0.10/gst/.debug/"
diff --git a/packages/python/python-pygtk2_2.10.3.bb b/packages/python/python-pygtk2_2.10.3.bb
index a71765dfbc..d3811ddddd 100644
--- a/packages/python/python-pygtk2_2.10.3.bb
+++ b/packages/python/python-pygtk2_2.10.3.bb
@@ -5,7 +5,7 @@ DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
RDEPENDS = "python-shell"
SRCNAME = "pygtk"
LICENSE = "LGPL"
-PR = "ml3"
+PR = "ml4"
SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/${SRCNAME}-${PV}.tar.bz2 \
file://fix-gtkunixprint.patch;patch=1 \
@@ -21,6 +21,8 @@ do_configure_prepend() {
install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
}
+require fix-path.inc
+
FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/*/.debug"
FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/.debug"
diff --git a/packages/python/python-pyqt4_4.0.bb b/packages/python/python-pyqt4_4.2.bb
index 64a9a71f68..64a9a71f68 100644
--- a/packages/python/python-pyqt4_4.0.bb
+++ b/packages/python/python-pyqt4_4.2.bb
diff --git a/packages/python/python-pysqlite2_2.2.2.bb b/packages/python/python-pysqlite2_2.2.2.bb
index 37be3bc0ea..89d4030f5c 100644
--- a/packages/python/python-pysqlite2_2.2.2.bb
+++ b/packages/python/python-pysqlite2_2.2.2.bb
@@ -4,10 +4,15 @@ PRIORITY = "optional"
LICENSE = "PSF"
RDEPENDS = "python-core python-re python-lang python-datetime"
DEPENDS = "sqlite3"
-SRCNAME = "pysqlite"
-PR = "ml1"
+SRCNAME = "pysqlite2"
+PR = "ml2"
-SRC_URI = "http://initd.org/pub/software/pysqlite/releases/2.2/${PV}/${SRCNAME}-${PV}.tar.gz"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
+SRC_URI = "http://initd.org/pub/software/pysqlite/releases/2.2/${PV}/pysqlite-${PV}.tar.gz"
+S = "${WORKDIR}/pysqlite-${PV}"
inherit distutils
+
+do_install_append() {
+ install -d ${D}${docdir}/doc
+ mv ${D}/${datadir}/pysqlite2-doc ${D}${docdir}/${SRCNAME}
+}
diff --git a/packages/qmake/qmake2-native-2.01a/0001-fix-mkspecs.patch b/packages/qmake/qmake2-native-2.01a/0001-fix-mkspecs.patch
new file mode 100644
index 0000000000..abebfdfa27
--- /dev/null
+++ b/packages/qmake/qmake2-native-2.01a/0001-fix-mkspecs.patch
@@ -0,0 +1,123 @@
+From 594157753a24d0575aaf948dc0e9500f6bdb2178 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:39:58 +0200
+Subject: [PATCH] fix mkspecs
+
+---
+ mkspecs/common/g++.conf | 18 +++++++++---------
+ mkspecs/common/linux.conf | 26 +++++++++++++-------------
+ 2 files changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
+index f5a5c8e..4007c7e 100644
+--- a/mkspecs/common/g++.conf
++++ b/mkspecs/common/g++.conf
+@@ -2,12 +2,12 @@
+ # qmake configuration for common gcc
+ #
+
+-QMAKE_CC = gcc
+-QMAKE_CFLAGS += -pipe
++QMAKE_CC = $(OE_QMAKE_CC)
++QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS)
+ QMAKE_CFLAGS_DEPS += -M
+ QMAKE_CFLAGS_WARN_ON += -Wall -W
+ QMAKE_CFLAGS_WARN_OFF += -w
+-QMAKE_CFLAGS_RELEASE += -O2
++QMAKE_CFLAGS_RELEASE += -O2
+ QMAKE_CFLAGS_DEBUG += -g
+ QMAKE_CFLAGS_SHLIB += -fPIC
+ QMAKE_CFLAGS_STATIC_LIB += -fPIC
+@@ -16,8 +16,8 @@ QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+ QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+-QMAKE_CXX = g++
+-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
++QMAKE_CXX = $(OE_QMAKE_CXX)
++QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS)
+ QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+ QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+ QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+@@ -30,9 +30,9 @@ QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+ QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+-QMAKE_LINK = g++
+-QMAKE_LINK_SHLIB = g++
+-QMAKE_LFLAGS +=
++QMAKE_LINK = $(OE_QMAKE_LINK)
++QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
++QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+ QMAKE_LFLAGS_RELEASE +=
+ QMAKE_LFLAGS_DEBUG +=
+ QMAKE_LFLAGS_APP +=
+@@ -40,7 +40,7 @@ QMAKE_LFLAGS_SHLIB += -shared
+ QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+ QMAKE_LFLAGS_SONAME += -Wl,-soname,
+ QMAKE_LFLAGS_THREAD +=
+-QMAKE_RPATH = -Wl,-rpath,
++QMAKE_RPATH = -Wl,-rpath-link,
+
+ QMAKE_PCH_OUTPUT_EXT = .gch
+
+diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
+index 3796a87..52acf16 100644
+--- a/mkspecs/common/linux.conf
++++ b/mkspecs/common/linux.conf
+@@ -7,26 +7,26 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+ QMAKE_INCDIR =
+ QMAKE_LIBDIR =
+-QMAKE_INCDIR_X11 = /usr/X11R6/include
+-QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+-QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+-QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+-QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+-QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
++QMAKE_INCDIR_X11 =
++QMAKE_LIBDIR_X11 =
++QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
++QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
++QMAKE_INCDIR_OPENGL =
++QMAKE_LIBDIR_OPENGL =
+
+ QMAKE_LIBS =
+ QMAKE_LIBS_DYNLOAD = -ldl
+-QMAKE_LIBS_X11 = -lXext -lX11 -lm
+-QMAKE_LIBS_X11SM = -lSM -lICE
++QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
++QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+ QMAKE_LIBS_NIS = -lnsl
+ QMAKE_LIBS_OPENGL = -lGLU -lGL
+ QMAKE_LIBS_OPENGL_QT = -lGL
+ QMAKE_LIBS_THREAD = -lpthread
+
+-QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+-QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
++QMAKE_MOC = $(OE_QMAKE_MOC)
++QMAKE_UIC = $(OE_QMAKE_UIC)
+
+-QMAKE_AR = ar cqs
++QMAKE_AR = $(OE_QMAKE_AR) cqs
+ QMAKE_RANLIB =
+
+ QMAKE_TAR = tar -cf
+@@ -38,11 +38,11 @@ QMAKE_COPY_DIR = $(COPY) -r
+ QMAKE_MOVE = mv -f
+ QMAKE_DEL_FILE = rm -f
+ QMAKE_DEL_DIR = rmdir
+-QMAKE_STRIP = strip
++QMAKE_STRIP = $(OE_QMAKE_STRIP)
+ QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+ QMAKE_CHK_DIR_EXISTS = test -d
+ QMAKE_MKDIR = mkdir -p
+ QMAKE_INSTALL_FILE = install -m 644 -p
+ QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+-include(unix.conf)
+\ No newline at end of file
++include(unix.conf)
+--
+1.5.1.6
+
diff --git a/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf b/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf
index d803f036fc..f58481a693 100644
--- a/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf
+++ b/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf
@@ -1,90 +1 @@
-#
-# qmake configuration for linux-oe-g++ / OpenEmbedded Build System / http://openembedded.org
-#
-
-MAKEFILE_GENERATOR = UNIX
-TEMPLATE = app
-CONFIG += qt warn_on release incremental link_prl
-QT += core gui
-QMAKE_INCREMENTAL_STYLE = sublib
-
-QMAKE_CC = $(OE_QMAKE_CC)
-QMAKE_LEX = flex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = yacc
-QMAKE_YACCFLAGS = -d
-QMAKE_YACCFLAGS_MANGLE = -p $base -b $base
-QMAKE_YACC_HEADER = $base.tab.h
-QMAKE_YACC_SOURCE = $base.tab.c
-QMAKE_CFLAGS = -pipe $(OE_QMAKE_CFLAGS) $(CFLAGS_EXTRA)
-QMAKE_CFLAGS_DEPS = -M
-QMAKE_CFLAGS_WARN_ON = -Wall -W
-QMAKE_CFLAGS_WARN_OFF =
-QMAKE_CFLAGS_RELEASE = $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2)
-QMAKE_CFLAGS_DEBUG = -g
-QMAKE_CFLAGS_SHLIB = -fPIC
-QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_THREAD = -D_REENTRANT
-QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
-
-QMAKE_CXX = $(OE_QMAKE_CXX)
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS) $(CXXFLAGS_EXTRA)
-QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
-QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-
-QMAKE_INCDIR =
-QMAKE_LIBDIR =
-QMAKE_INCDIR_X11 = $(OE_QMAKE_INCDIR_X11)
-QMAKE_LIBDIR_X11 = $(OE_QMAKE_LIBDIR_X11)
-QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
-QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
-QMAKE_INCDIR_OPENGL =
-QMAKE_LIBDIR_OPENGL =
-
-QMAKE_LINK = $(OE_QMAKE_LINK)
-QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
-QMAKE_LFLAGS = $(OE_QMAKE_LDFLAGS) $(LFLAGS_EXTRA)
-QMAKE_LFLAGS_RELEASE =
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_SHLIB = -shared
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -Wl,-soname,
-QMAKE_LFLAGS_THREAD =
-QMAKE_RPATH = -Wl,-rpath-link,
-
-QMAKE_LIBS = $(LIBS_EXTRA)
-QMAKE_LIBS_DYNLOAD = -ldl
-QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
-QMAKE_LIBS_X11SM =
-QMAKE_LIBS_QT = -l$(OE_QMAKE_LIBS_QT)
-QMAKE_LIBS_QT_THREAD = -l$(OE_QMAKE_LIBS_QT)-mt
-QMAKE_LIBS_QT_OPENGL = -lqgl
-QMAKE_LIBS_THREAD = -lpthread
-
-QMAKE_MOC = $(OE_QMAKE_MOC)
-QMAKE_UIC = $(OE_QMAKE_UIC)
-
-QMAKE_AR = $(OE_QMAKE_AR) cqs
-QMAKE_RANLIB =
-
-QMAKE_TAR = tar -cf
-QMAKE_GZIP = gzip -9f
-
-QMAKE_COPY = cp -f
-QMAKE_COPY_FILE = $(COPY)
-QMAKE_COPY_DIR = $(COPY) -r
-QMAKE_MOVE = mv -f
-QMAKE_DEL_FILE = rm -f
-QMAKE_DEL_DIR = rmdir
-QMAKE_STRIP = $(OE_QMAKE_STRIP)
-QMAKE_STRIPFLAGS_LIB += --strip-unneeded
-QMAKE_CHK_DIR_EXISTS = test -d
-QMAKE_MKDIR = mkdir -p
-
+include(../linux-g++/qmake.conf)
diff --git a/packages/qmake/qmake2-native_2.01a.bb b/packages/qmake/qmake2-native_2.01a.bb
index dab5b6a3b4..b4a736cb76 100644
--- a/packages/qmake/qmake2-native_2.01a.bb
+++ b/packages/qmake/qmake2-native_2.01a.bb
@@ -4,9 +4,12 @@ HOMEPAGE = "http://www.trolltech.com"
SECTION = "devel"
LICENSE = "GPL QPL"
-QTVER = "qt-x11-opensource-src-4.2.3"
+PR = "r1"
+
+QTVER = "qt-x11-opensource-src-4.3.0"
SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/${QTVER}.tar.gz \
+ file://0001-fix-mkspecs.patch;patch=1 \
file://linux-oe-qmake.conf"
S = "${WORKDIR}/${QTVER}"
@@ -30,6 +33,19 @@ do_configure() {
PLATFORM=${HOST_OS}-oe-g++
export PLATFORM
# yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
+ export OE_QMAKE_CC="${CC}"
+ export OE_QMAKE_CFLAGS="${CFLAGS}"
+ export OE_QMAKE_CXX="${CXX}"
+ export OE_QMAKE_CXXFLAGS="-fno-exceptions -fno-rtti ${CXXFLAGS}"
+ export OE_QMAKE_LDFLAGS="${LDFLAGS}"
+ export OE_QMAKE_LINK="${CCLD}"
+ export OE_QMAKE_AR="${AR}"
+ export OE_QMAKE_STRIP="${STRIP}"
+ export OE_QMAKE_UIC="${STAGING_BINDIR_NATIVE}/uic"
+ export OE_QMAKE_MOC="${STAGING_BINDIR_NATIVE}/moc"
+ export OE_QMAKE_RCC="non-existant"
+ export OE_QMAKE_QMAKE="${STAGING_BINDIR_NATIVE}/qmake"
+ export OE_QMAKE_RPATH="-Wl,-rpath-link,"
echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
}
diff --git a/packages/qpegps/qpegps.inc b/packages/qpegps/qpegps.inc
new file mode 100644
index 0000000000..2e10bf40a6
--- /dev/null
+++ b/packages/qpegps/qpegps.inc
@@ -0,0 +1,35 @@
+DESCRIPTION = "A GPS navigation application for the Opie environment"
+SECTION = "opie/applications"
+PRIORITY = "optional"
+LICENSE = "GPL"
+HOMEPAGE = "http://qpegps.sourceforge.net/"
+
+RRECOMMENDS = "gpsd"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/qpegps/qpegps_${PV}_src.zip \
+ file://qpegps.desktop \
+ file://qpegps.png"
+S = "${WORKDIR}/qpegps"
+
+inherit palmtop
+
+QMAKE_PROFILES = "qpegps.pro"
+EXTRA_QMAKEVARS_POST = "LIBS=-lqpe LIBS+=-lgps"
+OE_QMAKE_CFLAGS += " -DQWS "
+
+do_install() {
+ install -d ${D}${palmtopdir}/bin \
+ ${D}${palmtopdir}/apps/Applications \
+ ${D}${palmtopdir}/pics/qpegps \
+ ${D}${palmtopdir}/help/html/qpegps_icons \
+ ${D}${palmtopdir}/qpegps/maps \
+ ${D}${palmtopdir}/qpegps/icons \
+ ${D}${palmtopdir}/qpegps/tracks
+ install -m 0755 qpegps ${D}${palmtopdir}/bin/
+ install -m 0644 ${WORKDIR}/qpegps.desktop ${D}${palmtopdir}/apps/Applications/
+ install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/qpegps/
+ install -m 0644 doc/qpegps.html ${D}${palmtopdir}/help/html/
+ install -m 0644 doc/qpegps_icons/*.png ${D}${palmtopdir}/help/html/qpegps_icons/
+ install -m 0644 icons/*.xpm ${D}${palmtopdir}/qpegps/icons/
+ install -m 0644 datum/*.dat ${D}${palmtopdir}/qpegps/
+}
diff --git a/packages/qpegps/qpegps_0.9.2.3.3.bb b/packages/qpegps/qpegps_0.9.2.3.3.bb
index 7eaa456d74..4cdb945321 100644
--- a/packages/qpegps/qpegps_0.9.2.3.3.bb
+++ b/packages/qpegps/qpegps_0.9.2.3.3.bb
@@ -1,33 +1 @@
-DESCRIPTION = "A GPS navigation application for the Opie environment."
-SECTION = "opie/applications"
-PRIORITY = "optional"
-RRECOMMENDS = "gpsd"
-LICENSE = "GPL"
-HOMEPAGE = "http://qpegps.sourceforge.net/"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/qpegps/qpegps_${PV}_src.zip \
- file://qpegps.desktop \
- file://qpegps.png"
-S = "${WORKDIR}/qpegps_my"
-
-inherit palmtop
-
-QMAKE_PROFILES = "qpegps.pro"
-
-do_install() {
- install -d ${D}${palmtopdir}/bin \
- ${D}${palmtopdir}/apps/Applications \
- ${D}${palmtopdir}/pics/qpegps \
- ${D}${palmtopdir}/help/html/qpegps_icons \
- ${D}${palmtopdir}/qpegps/maps \
- ${D}${palmtopdir}/qpegps/icons \
- ${D}${palmtopdir}/qpegps/tracks
- install -m 0755 qpegps ${D}${palmtopdir}/bin/
- install -m 0644 ${WORKDIR}/qpegps.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/qpegps/
- install -m 0644 doc/qpegps.html ${D}${palmtopdir}/help/html/
- install -m 0644 doc/qpegps_icons/*.png ${D}${palmtopdir}/help/html/qpegps_icons/
- install -m 0644 icons/*.xpm ${D}${palmtopdir}/qpegps/icons/
- install -m 0644 datum/*.dat ${D}${palmtopdir}/qpegps/
-}
+require qpegps.inc
diff --git a/packages/qpegps/qpegps_0.9.3.bb b/packages/qpegps/qpegps_0.9.3.bb
index a4712f3dea..4cdb945321 100644
--- a/packages/qpegps/qpegps_0.9.3.bb
+++ b/packages/qpegps/qpegps_0.9.3.bb
@@ -1,35 +1 @@
-DESCRIPTION = "Navigation application for use with GPS adapters"
-SECTION = "opie/applications"
-PRIORITY = "optional"
-
-RRECOMMENDS = "gpsd"
-LICENSE = "GPL"
-HOMEPAGE = "http://qpegps.sourceforge.net/"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/qpegps/qpegps_${PV}_src.zip \
- file://qpegps.desktop \
- file://qpegps.png"
-S = "${WORKDIR}/qpegps"
-
-inherit palmtop
-
-QMAKE_PROFILES = "qpegps.pro"
-EXTRA_QMAKEVARS_POST = "LIBS=-lqpe LIBS+=-lgps"
-
-do_install() {
- install -d ${D}${palmtopdir}/bin \
- ${D}${palmtopdir}/apps/Applications \
- ${D}${palmtopdir}/pics/qpegps \
- ${D}${palmtopdir}/help/html/qpegps_icons \
- ${D}${palmtopdir}/qpegps/maps \
- ${D}${palmtopdir}/qpegps/icons \
- ${D}${palmtopdir}/qpegps/tracks
- install -m 0755 qpegps ${D}${palmtopdir}/bin/
- install -m 0644 ${WORKDIR}/qpegps.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/qpegps/
- install -m 0644 doc/qpegps.html ${D}${palmtopdir}/help/html/
- install -m 0644 doc/qpegps_icons/*.png ${D}${palmtopdir}/help/html/qpegps_icons/
- install -m 0644 icons/*.xpm ${D}${palmtopdir}/qpegps/icons/
- install -m 0644 datum/*.dat ${D}${palmtopdir}/qpegps/
-}
+require qpegps.inc
diff --git a/packages/vera-fonts/qpf-bitstream-vera-sans-mono_1.10.bb b/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
index 10d2d4acdd..10d2d4acdd 100644
--- a/packages/vera-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
+++ b/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
diff --git a/packages/vera-fonts/qpf-bitstream-vera_1.10.bb b/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb
index 86f2ef9446..86f2ef9446 100644
--- a/packages/vera-fonts/qpf-bitstream-vera_1.10.bb
+++ b/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb
diff --git a/packages/qsvn/files/.mtn2git_empty b/packages/qsvn/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qsvn/files/.mtn2git_empty
diff --git a/packages/qsvn/files/build.patch b/packages/qsvn/files/build.patch
new file mode 100644
index 0000000000..086f532a70
--- /dev/null
+++ b/packages/qsvn/files/build.patch
@@ -0,0 +1,23 @@
+--- qsvn-0.3.0/qsvn.pro 2007-06-11 00:47:22.514013379 +0200
++++ qsvn-0.3.0/qsvn.pro 2007-06-11 00:47:49.206941206 +0200
+@@ -7,9 +7,6 @@
+ UI_DIR = .ui
+ OBJECTS_DIR = .obj
+
+- INCLUDEPATH += /usr/include/subversion-1 \
+- /usr/include/apr-0
+-
+ LIBS += -lsvn_client-1 \
+ -lsvn_delta-1 \
+ -lsvn_diff-1 \
+@@ -18,8 +15,8 @@
+ -lsvn_repos-1 \
+ -lsvn_subr-1 \
+ -lsvn_wc-1 \
+- -lapr-0 \
+- -laprutil-0
++ -lapr-1 \
++ -laprutil-1
+ }
+
+ win32 {
diff --git a/packages/qsvn/qsvn_0.3.0.bb b/packages/qsvn/qsvn_0.3.0.bb
index 13653ea898..575e9359b7 100644
--- a/packages/qsvn/qsvn_0.3.0.bb
+++ b/packages/qsvn/qsvn_0.3.0.bb
@@ -7,7 +7,8 @@ SECTION = "network"
DEPENDS = "apr-util subversion"
PR = "r0"
-SRC_URI = "http://download2.berlios.de/qsvn/qsvn-${PV}-src.tar.gz"
+SRC_URI = "http://download2.berlios.de/qsvn/qsvn-${PV}-src.tar.gz \
+ file://build.patch;patch=1"
inherit qmake qt4x11
diff --git a/packages/qt/qt-x11-free-common.inc b/packages/qt/qt-x11-free-common.inc
index d052b54c47..d21787786f 100644
--- a/packages/qt/qt-x11-free-common.inc
+++ b/packages/qt/qt-x11-free-common.inc
@@ -84,5 +84,4 @@ FILES_qt-x11-designer = "${bindir}/designer"
FILES_qt-x11-assistant = "${bindir}/assistant"
FILES_qt-x11-qvfb = "${bindir}/qvfb"
FILES_qt-x11-qtconfig = "${bindir}/qtconfig"
-FILES_qt-x11-plugins-debug += "${prefix}/plugins/*/.debug"
-
+FILES_qt-x11-plugins-debug += "${prefix}/plugins/*/.debug ${D}/qt-x11-plugins-debug"
diff --git a/packages/qt/qt4-x11-free-4.3.0/.mtn2git_empty b/packages/qt/qt4-x11-free-4.3.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/.mtn2git_empty
diff --git a/packages/qt/qt4-x11-free-4.3.0/0001-cross-compile.patch b/packages/qt/qt4-x11-free-4.3.0/0001-cross-compile.patch
new file mode 100644
index 0000000000..42f7b5575c
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0001-cross-compile.patch
@@ -0,0 +1,174 @@
+From 64210fec17ab819f21769e3e82bb26e9f2ccfdb4 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sun, 3 Jun 2007 18:30:37 +0200
+Subject: [PATCH] cross compile
+
+---
+ configure | 137 ++----------------------------------------------------------
+ 1 files changed, 5 insertions(+), 132 deletions(-)
+
+diff --git a/configure b/configure
+index 6b3ccd2..b3c2a52 100755
+--- a/configure
++++ b/configure
+@@ -733,7 +733,7 @@ while [ "$#" -gt 0 ]; do
+ UNKNOWN_ARG=yes
+ fi
+ ;;
+- -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-mysql_config)
++ -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-mysql_config|-crossarch)
+ VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
+ shift
+ VAL="$1"
+@@ -1109,6 +1109,9 @@ while [ "$#" -gt 0 ]; do
+ xplatform)
+ XPLATFORM="$VAL"
+ ;;
++ crossarch)
++ CROSSARCH="$VAL"
++ ;;
+ debug-and-release)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_DEBUG_RELEASE="$VAL"
+@@ -2092,137 +2095,7 @@ if [ "$OPT_VERBOSE" = "yes" ]; then
+ echo "Determining system architecture... ($UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_MACHINE)"
+ fi
+
+-if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then
+- case "$CFG_EMBEDDED" in
+- x86)
+- ARCH=i386
+- ;;
+- x86_64)
+- ARCH=x86_64
+- ;;
+- ipaq|sharp)
+- ARCH=arm
+- ;;
+- *)
+- ARCH="$CFG_EMBEDDED"
+- ;;
+- esac
+-else
+- case "$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_MACHINE" in
+- IRIX*:*:*)
+- ARCH=`uname -p`
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " SGI ($ARCH)"
+- fi
+- ;;
+- SunOS:5*:*)
+- case "$UNAME_MACHINE" in
+- sun4u*|sun4v*)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " Sun SPARC (sparc)"
+- fi
+- ARCH=sparc
+- ;;
+- i86pc)
+- case "$PLATFORM" in
+- *-64)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 64-bit AMD 80x86 (x86_64)"
+- fi
+- ARCH=x86_64
+- ;;
+- *)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32-bit Intel 80x86 (i386)"
+- fi
+- ARCH=i386
+- ;;
+- esac
+- esac
+- ;;
+- Darwin:*:*)
+- case "$UNAME_MACHINE" in
+- Power?Macintosh)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32-bit Apple PowerPC (powerpc)"
+- fi
+- ;;
+- x86)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32-bit Intel 80x86 (i386)"
+- fi
+- ;;
+- esac
+- ARCH=macosx
+- ;;
+- AIX:*:00????????00)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 64-bit IBM PowerPC (powerpc)"
+- fi
+- ARCH=powerpc
+- ;;
+- HP-UX:*:9000*)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " HP PA-RISC (parisc)"
+- fi
+- ARCH=parisc
+- ;;
+- *:*:i?86)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32-bit Intel 80x86 (i386)"
+- fi
+- ARCH=i386
+- ;;
+- *:*:x86_64|*:*:amd64)
+- if [ "$PLATFORM" = "linux-g++-32" ]; then
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32 bit on 64-bit AMD 80x86 (i386)"
+- fi
+- ARCH=i386
+- else
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 64-bit AMD 80x86 (x86_64)"
+- fi
+- ARCH=x86_64
+- fi
+- ;;
+- *:*:ppc)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 32-bit PowerPC (powerpc)"
+- fi
+- ARCH=powerpc
+- ;;
+- *:*:ppc64)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " 64-bit PowerPC (powerpc)"
+- fi
+- ARCH=powerpc
+- ;;
+- *:*:s390*)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " IBM S/390 (s390)"
+- fi
+- ARCH=s390
+- ;;
+- *:*:*)
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " Trying '$UNAME_MACHINE'..."
+- fi
+- ARCH="$UNAME_MACHINE"
+- ;;
+- esac
+-fi
+-
+-if [ -d "$relpath/src/corelib/arch/$ARCH" ]; then
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " '$ARCH' is supported"
+- fi
+-else
+- if [ "$OPT_VERBOSE" = "yes" ]; then
+- echo " '$ARCH' is unsupported, using 'generic'"
+- fi
+- ARCH=generic
+-fi
++ARCH="$CROSSARCH"
+
+ if [ "$OPT_VERBOSE" = "yes" ]; then
+ echo "System architecture: '$ARCH'"
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0002-fix-resinit-declaration.patch b/packages/qt/qt4-x11-free-4.3.0/0002-fix-resinit-declaration.patch
new file mode 100644
index 0000000000..e479a64a2b
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0002-fix-resinit-declaration.patch
@@ -0,0 +1,25 @@
+From acfeb18aa94bad6b2066e91cd15570889baaa252 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:04:01 +0200
+Subject: [PATCH] fix resinit declaration
+
+---
+ src/qt3support/network/q3dns.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/qt3support/network/q3dns.cpp b/src/qt3support/network/q3dns.cpp
+index 9bc7b16..bfc333e 100644
+--- a/src/qt3support/network/q3dns.cpp
++++ b/src/qt3support/network/q3dns.cpp
+@@ -30,7 +30,7 @@
+ # include <netinet/in.h>
+ # include <arpa/nameser.h>
+ # include <resolv.h>
+-extern "C" int res_init();
++extern "C" int res_init() throw();
+ #endif
+
+ // POSIX Large File Support redefines open -> open64
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0003-no-tools.patch b/packages/qt/qt4-x11-free-4.3.0/0003-no-tools.patch
new file mode 100644
index 0000000000..5412c90377
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0003-no-tools.patch
@@ -0,0 +1,25 @@
+From 03cbda241413e4ae727b2a92ff452162aa7ad440 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:06:01 +0200
+Subject: [PATCH] no tools
+
+---
+ src/src.pro | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/src.pro b/src/src.pro
+index 6e08180..957d3dc 100644
+--- a/src/src.pro
++++ b/src/src.pro
+@@ -3,7 +3,7 @@ TEMPLATE = subdirs
+ # this order is important
+ unset(SRC_SUBDIRS)
+ win32:SRC_SUBDIRS += src_winmain
+-SRC_SUBDIRS += src_tools_moc src_tools_rcc src_tools_uic src_corelib src_xml src_gui src_sql src_network src_svg src_script
++SRC_SUBDIRS += src_corelib src_xml src_gui src_sql src_network src_svg src_script
+ contains(QT_CONFIG, opengl): SRC_SUBDIRS += src_opengl
+ contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
+ !cross_compile {
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0004-no-qmake.patch b/packages/qt/qt4-x11-free-4.3.0/0004-no-qmake.patch
new file mode 100644
index 0000000000..359f6df9d5
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0004-no-qmake.patch
@@ -0,0 +1,25 @@
+From f5a73ce944240de9013cc23288c115e8213add5e Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:06:59 +0200
+Subject: [PATCH] no qmake
+
+---
+ configure | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/configure b/configure
+index b3c2a52..1901e57 100755
+--- a/configure
++++ b/configure
+@@ -3271,7 +3271,7 @@ END {
+ }
+
+ # build qmake
+-if true; then ###[ '!' -f "$outpath/bin/qmake" ];
++if false; then ###[ '!' -f "$outpath/bin/qmake" ];
+ echo "Creating qmake. Please wait..."
+
+ OLD_QCONFIG_H=
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0005-fix-mkspecs.patch b/packages/qt/qt4-x11-free-4.3.0/0005-fix-mkspecs.patch
new file mode 100644
index 0000000000..93692699dc
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0005-fix-mkspecs.patch
@@ -0,0 +1,123 @@
+From aa0377910cfd8d0fce6bdc9355994a4e267b1696 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:39:58 +0200
+Subject: [PATCH] fix mkspecs
+
+---
+ mkspecs/common/g++.conf | 18 +++++++++---------
+ mkspecs/common/linux.conf | 26 +++++++++++++-------------
+ 2 files changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
+index f5a5c8e..4007c7e 100644
+--- a/mkspecs/common/g++.conf
++++ b/mkspecs/common/g++.conf
+@@ -2,12 +2,12 @@
+ # qmake configuration for common gcc
+ #
+
+-QMAKE_CC = gcc
+-QMAKE_CFLAGS += -pipe
++QMAKE_CC = $(OE_QMAKE_CC)
++QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS)
+ QMAKE_CFLAGS_DEPS += -M
+ QMAKE_CFLAGS_WARN_ON += -Wall -W
+ QMAKE_CFLAGS_WARN_OFF += -w
+-QMAKE_CFLAGS_RELEASE += -O2
++QMAKE_CFLAGS_RELEASE += -O2
+ QMAKE_CFLAGS_DEBUG += -g
+ QMAKE_CFLAGS_SHLIB += -fPIC
+ QMAKE_CFLAGS_STATIC_LIB += -fPIC
+@@ -16,8 +16,8 @@ QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+ QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+-QMAKE_CXX = g++
+-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
++QMAKE_CXX = $(OE_QMAKE_CXX)
++QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS)
+ QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+ QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+ QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+@@ -30,9 +30,9 @@ QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+ QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+-QMAKE_LINK = g++
+-QMAKE_LINK_SHLIB = g++
+-QMAKE_LFLAGS +=
++QMAKE_LINK = $(OE_QMAKE_LINK)
++QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
++QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+ QMAKE_LFLAGS_RELEASE +=
+ QMAKE_LFLAGS_DEBUG +=
+ QMAKE_LFLAGS_APP +=
+@@ -40,7 +40,7 @@ QMAKE_LFLAGS_SHLIB += -shared
+ QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+ QMAKE_LFLAGS_SONAME += -Wl,-soname,
+ QMAKE_LFLAGS_THREAD +=
+-QMAKE_RPATH = -Wl,-rpath,
++QMAKE_RPATH = -Wl,-rpath-link,
+
+ QMAKE_PCH_OUTPUT_EXT = .gch
+
+diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
+index 3796a87..52acf16 100644
+--- a/mkspecs/common/linux.conf
++++ b/mkspecs/common/linux.conf
+@@ -7,26 +7,26 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+ QMAKE_INCDIR =
+ QMAKE_LIBDIR =
+-QMAKE_INCDIR_X11 = /usr/X11R6/include
+-QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+-QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+-QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+-QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+-QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
++QMAKE_INCDIR_X11 =
++QMAKE_LIBDIR_X11 =
++QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
++QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
++QMAKE_INCDIR_OPENGL =
++QMAKE_LIBDIR_OPENGL =
+
+ QMAKE_LIBS =
+ QMAKE_LIBS_DYNLOAD = -ldl
+-QMAKE_LIBS_X11 = -lXext -lX11 -lm
+-QMAKE_LIBS_X11SM = -lSM -lICE
++QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
++QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+ QMAKE_LIBS_NIS = -lnsl
+ QMAKE_LIBS_OPENGL = -lGLU -lGL
+ QMAKE_LIBS_OPENGL_QT = -lGL
+ QMAKE_LIBS_THREAD = -lpthread
+
+-QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+-QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
++QMAKE_MOC = $(OE_QMAKE_MOC)
++QMAKE_UIC = $(OE_QMAKE_UIC)
+
+-QMAKE_AR = ar cqs
++QMAKE_AR = $(OE_QMAKE_AR) cqs
+ QMAKE_RANLIB =
+
+ QMAKE_TAR = tar -cf
+@@ -38,11 +38,11 @@ QMAKE_COPY_DIR = $(COPY) -r
+ QMAKE_MOVE = mv -f
+ QMAKE_DEL_FILE = rm -f
+ QMAKE_DEL_DIR = rmdir
+-QMAKE_STRIP = strip
++QMAKE_STRIP = $(OE_QMAKE_STRIP)
+ QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+ QMAKE_CHK_DIR_EXISTS = test -d
+ QMAKE_MKDIR = mkdir -p
+ QMAKE_INSTALL_FILE = install -m 644 -p
+ QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+-include(unix.conf)
+\ No newline at end of file
++include(unix.conf)
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0006-freetype-host-includes.patch b/packages/qt/qt4-x11-free-4.3.0/0006-freetype-host-includes.patch
new file mode 100644
index 0000000000..cc8e115fee
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0006-freetype-host-includes.patch
@@ -0,0 +1,23 @@
+From c9ab62bd9a56643574b3ae6e59e0ca776d4860d2 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Mon, 4 Jun 2007 14:48:50 +0200
+Subject: [PATCH] freetype host includes
+
+---
+ config.tests/unix/freetype/freetype.pri | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/config.tests/unix/freetype/freetype.pri b/config.tests/unix/freetype/freetype.pri
+index 84974bf..ab9a6f2 100644
+--- a/config.tests/unix/freetype/freetype.pri
++++ b/config.tests/unix/freetype/freetype.pri
+@@ -1,5 +1,5 @@
+ !cross_compile {
+- TRY_INCLUDEPATHS = /include /usr/include $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ p = $$join(p, "", "", "/freetype2")
+ exists($$p):INCLUDEPATH *= $$p
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free-4.3.0/0007-openssl-host-includes.patch b/packages/qt/qt4-x11-free-4.3.0/0007-openssl-host-includes.patch
new file mode 100644
index 0000000000..35b71d9694
--- /dev/null
+++ b/packages/qt/qt4-x11-free-4.3.0/0007-openssl-host-includes.patch
@@ -0,0 +1,23 @@
+From d45943adb443ad4b85ca4504952dee743c675e1e Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Mon, 4 Jun 2007 14:58:34 +0200
+Subject: [PATCH] openssl host includes
+
+---
+ config.tests/unix/openssl/openssl.pri | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/config.tests/unix/openssl/openssl.pri b/config.tests/unix/openssl/openssl.pri
+index 756e5fe..19b4061 100644
+--- a/config.tests/unix/openssl/openssl.pri
++++ b/config.tests/unix/openssl/openssl.pri
+@@ -1,5 +1,5 @@
+ !cross_compile {
+- TRY_INCLUDEPATHS = /include /usr/include /usr/local/include $$QMAKE_INCDIR $$INCLUDEPATH
++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ pp = $$join(p, "", "", "/openssl")
+ exists($$pp):INCLUDEPATH *= $$p
+--
+1.5.0.7
+
diff --git a/packages/qt/qt4-x11-free_4.1.2.bb b/packages/qt/qt4-x11-free_4.1.2.bb
index 25c64379d9..32eb3ced35 100644
--- a/packages/qt/qt4-x11-free_4.1.2.bb
+++ b/packages/qt/qt4-x11-free_4.1.2.bb
@@ -25,18 +25,7 @@ export QTDIR = "${S}"
STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4"
EXTRA_OEMAKE = "-e"
-def qt_arch(d):
- import bb, re
- arch = bb.data.getVar('TARGET_ARCH', d, 1)
- if re.match("^i.86$", arch):
- arch = "x86"
- elif re.match("^arm.*", arch):
- arch = "arm"
- elif arch == "x86_64":
- arch = "x86"
- elif arch == "mipsel":
- arch = "mips"
- return arch
+require qt4_arch.inc
QT_ARCH := "${@qt_arch(d)}"
diff --git a/packages/qt/qt4-x11-free_4.3.0.bb b/packages/qt/qt4-x11-free_4.3.0.bb
new file mode 100644
index 0000000000..35fa1ccd62
--- /dev/null
+++ b/packages/qt/qt4-x11-free_4.3.0.bb
@@ -0,0 +1,183 @@
+SECTION = "x11/libs"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+LICENSE = "GPL QPL"
+DEPENDS = "pkgconfig-native uicmoc4-native qmake2-native freetype jpeg virtual/libx11 xft libxext libxrender libxrandr libxcursor dbus openssl"
+RDEPENDS_${PN} = "${NONDEV_PACKAGES}"
+PROVIDES = "qt4x11"
+
+PR = "r5"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \
+ file://0001-cross-compile.patch;patch=1 \
+ file://0002-fix-resinit-declaration.patch;patch=1 \
+ file://0003-no-tools.patch;patch=1 \
+ file://0004-no-qmake.patch;patch=1 \
+ file://0005-fix-mkspecs.patch;patch=1 \
+ file://0006-freetype-host-includes.patch;patch=1 \
+ file://0007-openssl-host-includes.patch;patch=1"
+S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
+
+PARALLEL_MAKE = ""
+
+inherit qmake-base qt4x11
+
+export QTDIR = "${S}"
+STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4"
+EXTRA_OEMAKE = "-e"
+
+require qt4_arch.inc
+
+QT_ARCH := "${@qt_arch(d)}"
+
+# FIXME:
+# * add missing options
+QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \
+ -no-tablet -no-xkb -no-nis -no-cups -no-opengl \
+ -no-sse -no-sse2 -no-mmx -no-3dnow \
+ -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
+ -qdbus \
+ -verbose -stl -no-accessibility \
+ -pch -no-glib"
+
+EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after DEFINES+=QT_NO_XIM INCPATH+=${STAGING_INCDIR} \
+ INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
+ QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
+ AR="${TARGET_PREFIX}ar cqs" \
+ MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
+
+do_configure() {
+ echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri
+ echo "DEFINES += QT_NO_XIM" >>src/qbase.pri
+ unset QMAKESPEC
+ ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+ ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++
+ #export QMAKESPEC="linux-oe-g++"
+ #rm -rf ./mkspecs
+ #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs
+ echo yes | ./configure -prefix / -platform ${TARGET_OS}-oe-g++ -crossarch ${QT_ARCH} ${QT_CONFIG_FLAGS} -fast \
+ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql
+}
+
+# FIXME: Might want to compile the cross tools for the -dev packages as well...
+do_compile() {
+ unset CFLAGS CXXFLAGS
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
+
+ oe_runmake ${EXTRA_ENV}
+}
+
+PARTS = "3Support AssistantClient Core DBus Designer DesignerComponents Gui Network Script Sql Svg Test Xml"
+
+do_stage() {
+ oe_runmake install INSTALL_ROOT=/
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${STAGING_QT_DIR}/bin/rcc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${STAGING_QT_DIR}/bin/moc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${STAGING_QT_DIR}/bin/uic
+ sed -i -e 's,^QMAKE_RPATHDIR.*,QMAKE_RPATHDIR=${STAGING_QT_DIR}/lib,g' ${STAGING_QT_DIR}/mkspecs/qconfig.pri
+ for pc in ${STAGING_QT_DIR}/lib/pkgconfig/Qt{AssistantClient,DBus,Test,UiTools}.pc ; do
+ sed -i -e 's,${S}/lib,${STAGING_QT_DIR}/lib,g' $pc
+ done
+ for pc in ${STAGING_QT_DIR}/lib/pkgconfig/*.pc ; do
+ install -m 0644 $pc ${PKG_CONFIG_PATH}/
+ done
+}
+
+# FIXME: Might want to call oe_runmake install INSTALL_ROOT=${D}/${prefix} as well...
+# FIXME: Might want to install everything into ${libdir}/qt4/* to match the usual packing...
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${bindir}
+ install -d ${D}${includedir}
+ for part in ${PARTS}
+ do
+ oe_libinstall -so -C lib libQt$part ${D}${libdir}
+ done
+ oe_libinstall -a -C lib libQtUiTools ${D}${libdir}
+ cp -pPR include/* ${D}${includedir}
+ cp -pPR plugins ${D}${libdir}
+ cp -pPR bin/* ${D}${bindir}
+
+ install -d ${D}${bindir}/qt4-examples
+ for binary in `find examples -perm 0755 -type f`
+ do
+ install -m 0755 $binary ${D}${bindir}/qt4-examples/
+ done
+ install -d ${D}${bindir}/qt4-demos
+ for binary in `find demos -perm 0755 -type f`
+ do
+ install -m 0755 $binary ${D}${bindir}/qt4-demos/
+ done
+ rm ${D}${bindir}/rcc ${D}${bindir}/uic ${D}${bindir}/moc
+}
+
+NONDEV_PACKAGES = "libqtcore4 libqtgui4 libqtnetwork4 \
+ libqtsql4 libqtsvg4 libqttest4 \
+ libqtxml4 \
+ libqtdesigner4 libqtdesignercomponents4 \
+ libqt3support4 \
+ libqtassistantclient4 libqtscript4 \
+ libqtdbus4 \
+ qt4-assistant qt4-common qt4-designer qt4-demos qt4-examples qt4-linguist \
+ qt4-pixeltool qt4-dbus \
+ qt4-plugins-accessible qt4-plugins-codecs qt4-plugins-designer qt4-plugins-imageformats qt4-plugins-sqldrivers \
+ qt4-plugins-inputmethods qt4-plugins-iconengines"
+
+PACKAGES += "libqtcore4-dev libqtgui4-dev libqtnetwork4-dev libqtsql4-dev libqtsvg4-dev libqttest4-dev \
+ libqtxml4-dev libqtdesigner4-dev libqtdesignercomponents4-dev libqt3support4-dev \
+ libqtassistantclient4-dev libqtscript4-dev libqtdbus4-dev \
+ ${NONDEV_PACKAGES}"
+
+ALLOW_EMPTY = "1"
+FILES_${PN} = ""
+
+FILES_libqtcore4 = "${libdir}/libQtCore.so.*"
+FILES_libqtcore4-dev = "${libdir}/libQtCore.so"
+FILES_libqtgui4 = "${libdir}/libQtGui.so.*"
+FILES_libqtgui4-dev = "${libdir}/libQtGui.so"
+FILES_libqtnetwork4 = "${libdir}/libQtNetwork.so.*"
+FILES_libqtnetwork4-dev = "${libdir}/libQtNetwork.so"
+FILES_libqtsql4 = "${libdir}/libQtSql.so.*"
+FILES_libqtsql4-dev = "${libdir}/libQtSql.so"
+FILES_libqtsvg4 = "${libdir}/libQtSvg.so.*"
+FILES_libqtsvg4-dev = "${libdir}/libQtSvg.so"
+FILES_libqttest4 = "${libdir}/libQtTest.so.*"
+FILES_libqttest4-dev = "${libdir}/libQtTest.so"
+FILES_libqtxml4 = "${libdir}/libQtXml.so.*"
+FILES_libqtxml4-dev = "${libdir}/libQtXml.so"
+FILES_libqtdesigner4 = "${libdir}/libQtDesigner.so.*"
+FILES_libqtdesigner4-dev = "${libdir}/libQtDesigner.so"
+FILES_libqtdesignercomponents4 = "${libdir}/libQtDesignerComponents.so.*"
+FILES_libqtdesignercomponents4-dev = "${libdir}/libQtDesignerComponents.so"
+FILES_libqt3support4 = "${libdir}/libQt3Support.so.*"
+FILES_libqt3support4-dev = "${libdir}/libQt3Support.so"
+FILES_libqtassistantclient4 = "${libdir}/libQtAssistantClient.so.*"
+FILES_libqtassistantclient4-dev = "${libdir}/libQtAssistantClient.so"
+FILES_libqtscript4 = "${libdir}/libQtScript.so.*"
+FILES_libqtscript4-dev = "${libdir}/libQtScript.so"
+FILES_libqtdbus4 = "${libdir}/libQtDBus.so.*"
+FILES_libqtdbus4-dev = "${libdir}/libQtDBus.so"
+
+FILES_qt4-plugins-accessible = "${libdir}/plugins/accessible/*.so"
+FILES_qt4-plugins-codecs = "${libdir}/plugins/codecs/*.so"
+FILES_qt4-plugins-designer = "${libdir}/plugins/designer/*.so"
+FILES_qt4-plugins-imageformats = "${libdir}/plugins/imageformats/*.so"
+FILES_qt4-plugins-sqldrivers = "${libdir}/plugins/sqldrivers/*.so"
+FILES_qt4-plugins-inputmethods = "${libdir}/plugins/inputmethods/*.so"
+FILES_qt4-plugins-iconengines = "${libdir}/plugins/iconengines/*.so"
+
+FILES_qt4-assistant = "${bindir}/*assistant*"
+FILES_qt4-designer = "${bindir}/*designer*"
+FILES_qt4-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/qm2ts"
+FILES_qt4-pixeltool = "${bindir}/pixeltool"
+FILES_qt4-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer"
+
+FILES_qt4-common = "${bindir}/qtconfig"
+FILES_qt4-examples = "${bindir}/qt4-examples/*"
+FILES_qt4-demos = "${bindir}/qtdemo ${bindir}/qt4-demos/*"
+
+FILES_${PN}-dev += "${bindir}/rcc ${bindir}/uic* ${bindir}/moc ${bindir}/qmake ${bindir}/syncqt \
+ ${bindir}/qt3to4 ${bindir}/findtr"
+FILES_${PN}-dbg += "${bindir}/*/.debug ${plugindir}/.debug"
diff --git a/packages/qt/qt4_arch.inc b/packages/qt/qt4_arch.inc
new file mode 100644
index 0000000000..11bfed8a1c
--- /dev/null
+++ b/packages/qt/qt4_arch.inc
@@ -0,0 +1,13 @@
+def qt_arch(d):
+ import bb, re
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if re.match("^i.86$", arch):
+ arch = "x86"
+ elif re.match("^arm.*", arch):
+ arch = "arm"
+ elif arch == "x86_64":
+ arch = "x86"
+ elif arch == "mipsel":
+ arch = "mips"
+ return arch
+
diff --git a/packages/quake/quetoo_0.6.1.bb b/packages/quake/quetoo_0.6.1.bb
new file mode 100644
index 0000000000..9428f501f4
--- /dev/null
+++ b/packages/quake/quetoo_0.6.1.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Initially a fork of the Quake2Forge project, this engine aims to provide security and performance enhancements."
+LICENSE = "GPLv2"
+
+DEPENDS = "libsdl-x11 zlib mesa"
+SRC_URI = "http://tastyspleen.net/~jdolan/quetoo-${PV}-full.tar.bz2"
+
+inherit autotools pkgconfig
+
+
+EXTRA_OECONF = "\
+ --with-sdl \
+ --with-zlib \
+ "
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+ rm config.log
+}
+
+do_install_append() {
+ mv ${D}${bindir}/${TARGET_PREFIX}quetoo ${D}${bindir}/quetoo
+}
+
+FILES_${PN}-dbg += "${libdir}/quetoo/baseq2/.debug"
diff --git a/packages/rfakeap/rfakeap_0.2.bb b/packages/rfakeap/rfakeap_0.2.bb
index 1854e20286..702399e0f5 100644
--- a/packages/rfakeap/rfakeap_0.2.bb
+++ b/packages/rfakeap/rfakeap_0.2.bb
@@ -2,7 +2,6 @@ SECTION = "console/network"
DESCRIPTION = "Raw Fake AP"
HOMEPAGE = "http://rfakeap.tuxfamily.org/"
LICENSE = "GPLv2"
-MAINTAINER = "Zero_Chaos <sidhayn@hotmail.com>"
DEPENDS = "libpcap"
PV="0.2"
PR="r1"
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch b/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch
index 4ea5908737..381a44d303 100644
--- a/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch
+++ b/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch
@@ -1,26 +1,63 @@
---- rp-pppoe-3.8/src/configure.in 2007/04/30 07:21:25 1.1
-+++ rp-pppoe-3.8/src/configure.in 2007/04/30 07:22:06
-@@ -5,6 +5,12 @@
+Index: src/configure.in
+===================================================================
+--- rp-pppoe-3.8.orig/src/configure.in 2006-04-03 00:29:42.000000000 +1000
++++ rp-pppoe-3.8/src/configure.in 2007-06-07 22:19:36.000000000 +1000
+@@ -5,6 +5,13 @@
dnl pppd directory for kernel-mode PPPoE
PPPD_DIR=ppp-2.4.1.pppoe2
+dnl hard code some paths
+PPPD=/usr/sbin/pppd
+ID=/usr/bin/id
++ECHO=/bin/echo
+AC_ARG_VAR(PPPD)
+AC_ARG_VAR(ID)
+
AC_CONFIG_HEADER(config.h)
AC_PREFIX_DEFAULT(/usr)
-@@ -131,15 +137,10 @@
+@@ -44,7 +51,7 @@
+ AC_MSG_RESULT($ac_cv_struct_sockaddr_ll)
+
+ if test "$ac_cv_struct_sockaddr_ll" = yes ; then
+-AC_DEFINE(HAVE_STRUCT_SOCKADDR_LL)
++AC_DEFINE([HAVE_STRUCT_SOCKADDR_LL], [], [Have struct SOCKADDR_LL])
+ fi
+
+ dnl Check for N_HDLC line discipline
+@@ -55,7 +62,7 @@
+ ac_cv_n_hdlc=no)
+ AC_MSG_RESULT($ac_cv_n_hdlc)
+ if test "$ac_cv_n_hdlc" = yes ; then
+-AC_DEFINE(HAVE_N_HDLC)
++AC_DEFINE([HAVE_N_HDLC], [], [Have N_HDLC])
+ fi
+
+ AC_ARG_ENABLE(plugin, [ --enable-plugin=pppd_src_path build pppd plugin], ac_cv_pluginpath=$enableval, ac_cv_pluginpath=no)
+@@ -100,13 +107,13 @@
+ if test "$ac_cv_header_linux_if_pppox_h" = yes ; then
+ if test "$ac_cv_pluginpath" != no ; then
+ LINUX_KERNELMODE_PLUGIN=rp-pppoe.so
+- AC_DEFINE(HAVE_LINUX_KERNEL_PPPOE)
++ AC_DEFINE([HAVE_LINUX_KERNEL_PPPOE], [], [Have kernel PPPoE])
+ PPPD_INCDIR=$ac_cv_pluginpath
+ fi
+ fi
+
+ if test "$ac_cv_debugging" = "yes" ; then
+- AC_DEFINE(DEBUGGING_ENABLED)
++ AC_DEFINE([DEBUGGING_ENABLED], [], [Debugging enabled])
+ fi
+
+ AC_SUBST(LINUX_KERNELMODE_PLUGIN)
+@@ -131,15 +138,8 @@
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
-dnl Check for location of pppd
-AC_PATH_PROG(PPPD, pppd, NOTFOUND, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
- AC_PATH_PROG(ECHO, echo, echo)
-
+-AC_PATH_PROG(ECHO, echo, echo)
+-
-dnl Check for setsid (probably Linux-specific)
-AC_PATH_PROG(SETSID, setsid, "", $PATH:/sbin:/usr/sbin:/usr/local/sbin)
-
@@ -30,7 +67,7 @@
dnl Check for Linux-specific kernel support for PPPoE
AC_MSG_CHECKING(for Linux 2.4.X kernel-mode PPPoE support)
-@@ -183,44 +184,8 @@
+@@ -183,44 +183,8 @@
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -ansi"
fi
@@ -76,7 +113,7 @@
AC_TRY_RUN([
union foo {
struct bar {
-@@ -245,6 +210,7 @@
+@@ -245,10 +209,11 @@
}
}], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
$ECHO "no defaults for cross-compiling"; exit 0)
@@ -84,3 +121,16 @@
if test "$rpppoe_cv_pack_bitfields" = "rev" ; then
AC_MSG_RESULT(reversed)
+- AC_DEFINE(PACK_BITFIELDS_REVERSED)
++ AC_DEFINE([PACK_BITFIELDS_REVERSED], [], [Reversed bitfields])
+ else
+ AC_MSG_RESULT(normal)
+ fi
+@@ -312,6 +277,7 @@
+ AC_SUBST(RDYNAMIC)
+ AC_SUBST(LIBEVENT)
+ AC_SUBST(ECHO)
++AC_SUBST(HAVE_STRUCT_SOCKADDR_LL)
+
+ datadir_evaluated=`eval echo $datadir`
+ AC_SUBST(datadir_evaluated)
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.default b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.default
new file mode 100644
index 0000000000..996d57f3cf
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.default
@@ -0,0 +1,22 @@
+# PPPoE Server options
+
+# Maximum segment size, not used for in kernel PPPoE
+#MSS=1412
+
+# Device(s) - Space seperated list of devices to listen on
+#DEVICES="eth1"
+
+# Local IP
+#LOCAL_IP=10.0.0.1
+
+# Starting remote IP
+#REMOTE_IP=10.67.15.1
+
+# Service name
+#SERVICE_NAME="acme"
+
+# Maximum number of sessions, default is 16
+#MAX_SESSIONS=64
+
+# Access concentrator name, default is the hostname
+#ACCESS_CONCENTRATOR_NAME="pppoe-rtr-1"
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.init b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.init
new file mode 100755
index 0000000000..21afe0be39
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-server.init
@@ -0,0 +1,59 @@
+#! /bin/sh
+
+test -f /usr/sbin/pppoe-server || exit 0
+test -f /etc/default/pppoe-server && . /etc/default/pppoe-server
+
+case $1 in
+ start)
+ OPTIONS=""
+ if [ -n "$MSS" ]; then
+ OPTIONS="$OPTIONS -m $MSS"
+ fi
+ if [ -n "$DEVICES" ]; then
+ for i in $DEVICES; do
+ OPTIONS="$OPTIONS -I $i"
+ done
+ fi
+ if [ -n "$LOCAL_IP" ]; then
+ OPTIONS="$OPTIONS -L $LOCAL_IP"
+ fi
+ if [ -n "$REMOTE_IP" ]; then
+ OPTIONS="$OPTIONS -R $REMOTE_IP"
+ fi
+ if [ -n "$SERVICE_NAME" ]; then
+ OPTIONS="$OPTIONS -S $SERVICE_NAME"
+ fi
+ if [ -n "$MAX_SESSIONS" ]; then
+ OPTIONS="$OPTIONS -N $MAX_SESSIONS"
+ fi
+ if [ -n "$ACCESS_CONCENTRATOR_NAME" ]; then
+ OPTIONS="$OPTIONS -C $ACCESS_CONCENTRATOR_NAME"
+ fi
+ echo -n "Starting PPPoE server: pppoe-server"
+ start-stop-daemon --start --quiet --exec /usr/sbin/pppoe-server -- $OPTIONS
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping PPPoE server: pppoe-server"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/pppoe-server -- $OPTIONS
+ echo "."
+ ;;
+ status)
+ pid=$(pidof pppoe-server)
+ if [ -n "$pid" ] ; then
+ echo "Running with pid $pid"
+ else
+ echo "Not running"
+ fi
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: /etc/init.d/pppoe-server {start|stop|restart|force-reload}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/top-autoconf.patch b/packages/rp-pppoe/rp-pppoe-3.8/top-autoconf.patch
new file mode 100644
index 0000000000..e3b0482984
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/top-autoconf.patch
@@ -0,0 +1,25 @@
+The autoconf stuff is all in a subdirectory, which is rather annoying
+as OE expects patches to be applied and autoconf stuff to be done in
+S. This adds enough autoconf at the top level to allow it to be
+called there - all it does is run a sub autoconf stuff in the src
+directory.
+
+Index: rp-pppoe-3.8/Makefile.am
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ rp-pppoe-3.8/Makefile.am 2007-06-08 15:58:16.000000000 +1000
+@@ -0,0 +1,5 @@
++PACKAGE = rp-pppoe
++VERSION = 3.8
++
++dnl AM_CFLAGS = -Wall -DDEBUG
++SUBDIRS = src
+Index: rp-pppoe-3.8/configure.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ rp-pppoe-3.8/configure.in 2007-06-08 15:58:16.000000000 +1000
+@@ -0,0 +1,4 @@
++AC_INIT(src/pppoe.c)
++AM_INIT_AUTOMAKE([rp-pppoe], [3.8])
++AC_CONFIG_SUBDIRS(src)
++AC_OUTPUT(Makefile)
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/update-config.patch b/packages/rp-pppoe/rp-pppoe-3.8/update-config.patch
new file mode 100644
index 0000000000..5642e3cfee
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/update-config.patch
@@ -0,0 +1,30 @@
+Set the timeout to 0 since we don't want pppoe to try reconnecting,
+we want whatever is calling it to reconnect. Lots of odd things
+happen when you have pppoe retrying itself.
+
+The path for the plugin is wrong, it's now part of ppp and is in a
+ppp's plugin lib directory. If no path is specified then that's where
+ppp looks, so that's what we do here.
+
+Index: rp-pppoe-3.8/configs/pppoe.conf
+===================================================================
+--- rp-pppoe-3.8.orig/configs/pppoe.conf 2006-04-03 00:29:41.000000000 +1000
++++ rp-pppoe-3.8/configs/pppoe.conf 2007-06-08 16:02:47.000000000 +1000
+@@ -66,7 +66,7 @@
+ # to connect forever after pppoe-start is called. Otherwise, it will
+ # give out after CONNECT_TIMEOUT seconds and will not attempt to
+ # connect again, making it impossible to reach.
+-CONNECT_TIMEOUT=30
++CONNECT_TIMEOUT=0
+
+ # How often in seconds pppoe-start polls to check if link is up
+ CONNECT_POLL=2
+@@ -115,7 +115,7 @@
+ FIREWALL=NONE
+
+ # Linux kernel-mode plugin for pppd. If you want to try the kernel-mode
+-# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
++# plugin, use LINUX_PLUGIN=rp-pppoe.so
+ LINUX_PLUGIN=
+
+ # Any extra arguments to pass to pppoe. Normally, use a blank string
diff --git a/packages/rp-pppoe/rp-pppoe_3.8.bb b/packages/rp-pppoe/rp-pppoe_3.8.bb
index c4d5ff88d2..35faf8839b 100644
--- a/packages/rp-pppoe/rp-pppoe_3.8.bb
+++ b/packages/rp-pppoe/rp-pppoe_3.8.bb
@@ -2,28 +2,54 @@ DESCRIPTION = "A user-mode PPPoE client and server suite for Linux"
HOMEPAGE = "http://www.roaringpenguin.com/en/penguin/openSourceProducts/rpPppoe"
SECTION = "console/network"
LICENSE = "GPLv2"
-RDEPENDS = "ppp"
-PR = "r0"
+RDEPENDS_${PN} = "ppp"
+RDEPENDS_${PN}-server = "${PN}"
+RRECOMMENDS_${PN} = "ppp-oe"
+PR = "r5"
SRC_URI = "http://www.roaringpenguin.com/files/download/${P}.tar.gz \
- file://configure_in_cross.patch;patch=1;pnum=2 \
- file://pppoe-src-restrictions.patch;patch=1;pnum=2"
+ file://top-autoconf.patch;patch=1 \
+ file://configure_in_cross.patch;patch=1 \
+ file://pppoe-src-restrictions.patch;patch=1 \
+ file://update-config.patch;patch=1 \
+ file://pppoe-server.default \
+ file://pppoe-server.init"
-S = "${WORKDIR}/${P}/src"
-
-inherit autotools
+inherit autotools update-rc.d
do_install() {
- # Set timeout to 0. Fixes lots of reconnect issues
- # Can't patch this in because it's outside of what we have {S} set to.
- sed -i -e 's,\(CONNECT_TIMEOUT=\)30,\10,g' ${S}/../configs/pppoe.conf
+ # Install init script and default settings
+ install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d
+ install -m 0644 ${WORKDIR}/pppoe-server.default ${D}${sysconfdir}/default/pppoe-server
+ install -m 0755 ${WORKDIR}/pppoe-server.init ${D}${sysconfdir}/init.d/pppoe-server
# Install
oe_runmake -C ${S} RPM_INSTALL_ROOT=${D} docdir=${docdir} install
}
-pkg_postinst() {
+# Insert server package before main package
+PACKAGES = "${PN}-dbg ${PN}-server ${PN}-relay ${PN}-sniff ${PN} ${PN}-doc"
+
+FILES_${PN}-server = "${sysconfdir}/default/pppoe-server \
+ ${sysconfdir}/init.d/pppoe-server \
+ ${sbindir}/pppoe-server \
+ ${sysconfdir}/ppp/pppoe-server-options"
+FILES_${PN}-relay = "${sbindir}/pppoe-relay"
+FILES_${PN}-sniff = "${sbindir}/pppoe-sniff"
+
+pkg_postinst_${PN} () {
if [ x"$D" != "x" ]; then
exit 1
fi
chmod 4755 ${sbindir}/pppoe
}
+
+CONFFILES_${PN} = "${sysconfdir}/ppp/pppoe.conf \
+ ${sysconfdir}/ppp/firewall-standalone \
+ ${sysconfdir}/ppp/firewall-masq"
+CONFFILES_${PN}-server = "${sysconfdir}/ppp/pppoe-server-options \
+ ${sysconfdir}/default/pppoe-server"
+
+INITSCRIPT_PACKAGES = "${PN}-server"
+INITSCRIPT_NAME_${PN}-server = "pppoe-server"
+INITSCRIPT_PARAMS_${PN}-server = "defaults 92 08"
+
diff --git a/packages/rt2x00/rt2570-k2wrlz_1.6.0.bb b/packages/rt2x00/rt2570-k2wrlz_1.6.0.bb
new file mode 100644
index 0000000000..b22a3955a6
--- /dev/null
+++ b/packages/rt2x00/rt2570-k2wrlz_1.6.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Driver for Ralink rt2570 USB 802.11g WiFi sticks"
+HOMEPAGE = "http://rt2x00.serialmonkey.com/"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+
+SRC_URI = "http://homepages.tu-darmstadt.de/~p_larbig/wlan/${PN}-${PV}.tar.bz2"
+
+inherit module
+
+S = "${WORKDIR}/${PN}-${PV}/Module/"
+
+EXTRA_OEMAKE = "KERNDIR=${STAGING_KERNEL_DIR}"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra
+ install -m 0644 rt2570${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra/
+}
diff --git a/packages/rt2x00/rt73-k2wrlz_1.0.0.bb b/packages/rt2x00/rt73-k2wrlz_1.0.0.bb
new file mode 100644
index 0000000000..764f779cbd
--- /dev/null
+++ b/packages/rt2x00/rt73-k2wrlz_1.0.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Enhanced Driver for Ralink rt73 USB 802.11g WiFi sticks"
+HOMEPAGE = "http://homepages.tu-darmstadt.de/~p_larbig/wlan"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+
+SRC_URI= "http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-1.0.0.tar.bz2"
+inherit module
+
+S = "${WORKDIR}/${PN}-${PV}/Module/"
+
+do_compile() {
+ export KERNDIR=${STAGING_KERNEL_DIR}
+ module_do_compile
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra
+ install -m 0644 rt73${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra/
+}
diff --git a/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb b/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
index ee8534dc01..f53d175a80 100644
--- a/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
+++ b/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
@@ -2,7 +2,6 @@ DESCRIPTION = "Boots a S3C2410 device with a user supplied kernel zImage"
DEPENDS = "libusb-native"
SECTION = "devel"
AUTHOR = "Harald Welte"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL"
PR = "r0"
diff --git a/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb b/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
index 53b2d0c8e0..0ec6642dc2 100644
--- a/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
+++ b/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "Jtag utility to interface w/ a S3C2410 device"
SECTION = "devel"
AUTHOR = "Harald Welte"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL"
PR = "r1"
diff --git a/packages/salsa-lib/.mtn2git_empty b/packages/salsa-lib/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/salsa-lib/.mtn2git_empty
diff --git a/packages/salsa-lib/salsa-lib_0.0.1.bb b/packages/salsa-lib/salsa-lib_0.0.1.bb
new file mode 100644
index 0000000000..474c4d40dd
--- /dev/null
+++ b/packages/salsa-lib/salsa-lib_0.0.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Small ALSA library replacement for embedded system"
+AUTHOR = "Takashi Iwai <tiwai@suse.de>"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "LGPL"
+SRC_URI = "ftp://ftp.suse.com/pub/people/tiwai/salsa-lib/salsa-lib-${PV}.tar.bz2"
+
+# as it overwrite alsa.pc only use if sure.
+DEFAULT_PREFERRENCE = "-1"
+
+inherit autotools pkgconfig
+
diff --git a/packages/scummvm/scummvm-qpe_0.6.1b.bb b/packages/scummvm/scummvm-qpe_0.6.1b.bb
index 44035e633c..b66d58671a 100644
--- a/packages/scummvm/scummvm-qpe_0.6.1b.bb
+++ b/packages/scummvm/scummvm-qpe_0.6.1b.bb
@@ -1,7 +1,8 @@
require scummvm.inc
-DEPENDS = "libsdl-qpe libmad tremor libogg zlib libmpeg2"
-S="${WORKDIR}/scummvm-${PV}/"
+DEPENDS = "libsdl-qpe libmad tremor libogg zlib mpeg2dec"
+
+S = "${WORKDIR}/scummvm-${PV}/"
do_compile() {
oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \
diff --git a/packages/scummvm/scummvm.inc b/packages/scummvm/scummvm.inc
index 24b1e5a12a..28257fab4b 100644
--- a/packages/scummvm/scummvm.inc
+++ b/packages/scummvm/scummvm.inc
@@ -3,7 +3,7 @@ SECTION = "games"
PRIORITY = "optional"
LICENSE = "GPL"
-SRC_URI = "http://puzzle.dl.sourceforge.net/scummvm/scummvm-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/scummvm/scummvm-${PV}.tar.bz2"
inherit autotools
diff --git a/packages/scummvm/scummvm_0.6.0.bb b/packages/scummvm/scummvm_0.6.0.bb
index 1aecd20bc4..852ca5ff1e 100644
--- a/packages/scummvm/scummvm_0.6.0.bb
+++ b/packages/scummvm/scummvm_0.6.0.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Virtual Machine for LucasArts Adventures for Qt/Embedded based palmtop environments w/ SDL."
SECTION = "opie/games"
PRIORITY = "optional"
-DEPENDS = "libsdl-qpe libmad tremor libogg zlib libmpeg2"
+DEPENDS = "libsdl-qpe libmad tremor libogg zlib mpeg2dec"
LICENSE = "GPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/scummvm/scummvm-${PV}.tar.bz2 \
diff --git a/packages/scummvm/scummvm_0.6.1b.bb b/packages/scummvm/scummvm_0.6.1b.bb
index 67762708a9..a1d3dce944 100644
--- a/packages/scummvm/scummvm_0.6.1b.bb
+++ b/packages/scummvm/scummvm_0.6.1b.bb
@@ -1,5 +1,5 @@
require scummvm.inc
-DEPENDS = "virtual/libsdl libmad tremor libogg zlib libmpeg2"
+DEPENDS = "virtual/libsdl libmad tremor libogg zlib mpeg2dec"
SRC_URI += " file://mouse.patch;patch=1 \
file://gcc-4.x.x-accept.patch;patch=1 \
file://sh3-linux-new-arch.patch;patch=1 \
diff --git a/packages/scummvm/scummvm_0.9.0.bb b/packages/scummvm/scummvm_0.9.0.bb
index 9719ee200e..0403e6ae90 100644
--- a/packages/scummvm/scummvm_0.9.0.bb
+++ b/packages/scummvm/scummvm_0.9.0.bb
@@ -1,5 +1,5 @@
require scummvm.inc
-DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib libmpeg2"
+DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib mpeg2dec"
SRC_URI += "file://sh3-arch-0.9.0+.patch;patch=1"
EXTRA_OECONF += "--enable-lure \
diff --git a/packages/scummvm/scummvm_0.9.1.bb b/packages/scummvm/scummvm_0.9.1.bb
new file mode 100644
index 0000000000..5d1e2c1e27
--- /dev/null
+++ b/packages/scummvm/scummvm_0.9.1.bb
@@ -0,0 +1,16 @@
+DEFAULT_PREFERENCE = "-1"
+
+require scummvm.inc
+DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib mpeg2dec"
+
+EXTRA_OECONF += "--enable-lure \
+ --enable-agi \
+ --enable-cine \
+ "
+
+do_compile() {
+ oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \
+ DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_MAD -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2"
+}
+
+
diff --git a/packages/sdlperl/sdl-perl_1.20.3.bb b/packages/sdlperl/sdl-perl_1.20.3.bb
index 80bd899dfc..6820fa05ce 100644
--- a/packages/sdlperl/sdl-perl_1.20.3.bb
+++ b/packages/sdlperl/sdl-perl_1.20.3.bb
@@ -1,40 +1,18 @@
DESCRIPTION = "Perl bindings for SDL"
-HOMEPAGE = "http://bloodgate.com/perl"
SECTION = "libs"
+HOMEPAGE = "http://sdl.perl.org/"
LICENSE = "GPL"
DEPENDS = "perl virtual/libsdl libsdl-image libsdl-gfx libsdl-ttf libsdl-mixer libsdl-net smpeg"
+PR = "r1"
-SRC_URI = "http://bloodgate.com/perl/sdl/pub/SDL_perl-${PV}.tar.gz \
- file://Makefile.patch;patch=1;pnum=0"
+SRC_URI = "http://bloodgate.com/perl/sdl/pub/SDL_perl-${PV}.tar.gz"
S = "${WORKDIR}/SDL_perl-${PV}"
-do_configure () {
- if [ -x ${S}/configure ] ; then
- cfgcmd="${S}/configure \
- -GL -GLU"
- oenote "Running $cfgcmd..."
- $cfgcmd || oefatal "oe_runconf failed"
- if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
- . ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
- sed -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:; s:\(SITEARCHEXP = \).*:\1${sitearchexp}:; s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5:; s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5:" < Makefile > Makefile.new
- mv Makefile.new Makefile
- fi
- else
- oefatal "no configure script found"
- fi
-}
-
-do_stage () {
- install -d ${STAGING_LIBDIR}/perl5/vendor_perl
- install -m 0644 ${S}/lib/SDL.pm ${STAGING_LIBDIR}/perl5/vendor_perl
-}
+inherit cpan
-do_compile () {
- oe_runmake PASTHRU_INC="${CFLAGS}"
+do_configure_prepend() {
+ # Search staging area for includes
+ sed -i -e 's:/usr/\(local/\)\{0,1\}include:${STAGING_INCDIR}:g' Makefile.linux
+ # smpeg.h isn't in a subdirectry
+ sed -i -e 's:#include <smpeg/smpeg.h>:#include <smpeg.h>:g' SDL_perl.xs
}
-
-do_install () {
- oe_runmake install_vendor
-}
-
-FILES_${PN} += '${libdir}/perl5'
diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup
index c852f911c8..10bccb8279 100644
--- a/packages/slugos-init/files/turnup
+++ b/packages/slugos-init/files/turnup
@@ -8,9 +8,93 @@
# configuration
# The following variables control which directories in /var end
# up on the rootfs and which end up in a temporary file system.
-INRAM_MEMSTICK="/var/cache /var/lock /var/log /var/run /var/tmp /var/lib/ipkg"
-INRAM_NFS="/var/cache /var/lock /var/run /var/tmp"
-INRAM_DISK=""
+INRAM_MEMSTICK="\
+### SlugOS from-memory-stick boot.
+d root root 0755 /var/backups none
+d root root 0755 /var/volatile/cache none
+l root root 0755 /var/cache /var/volatile/cache
+d root root 0755 /var/lib none
+d root root 2755 /var/local none
+d root root 1777 /var/volatile/lock none
+l root root 1777 /var/lock /var/volatile/lock
+d root root 0755 /var/volatile/log none
+l root root 0755 /var/log /var/volatile/log
+d root root 0755 /var/volatile/run none
+l root root 0755 /var/run /var/volatile/run
+d root root 0755 /var/spool none
+d root root 1777 /var/volatile/tmp none
+l root root 1777 /var/tmp /var/volatile/tmp
+d root root 0755 /var/lock/subsys none
+d root root 0755 /var/lib/dropbear none
+d root root 0755 /var/lib/misc none
+f root root 0664 /var/log/wtmp none
+f root root 0664 /var/run/utmp none"
+
+INRAM_NFS="\
+### SlugOS from-NFS boot.
+d root root 0755 /var/backups none
+d root root 0755 /var/volatile/cache none
+l root root 0755 /var/cache /var/volatile/cache
+d root root 0755 /var/lib none
+d root root 2755 /var/local none
+d root root 1777 /var/volatile/lock none
+l root root 1777 /var/lock /var/volatile/lock
+d root root 0755 /var/log none
+d root root 0755 /var/volatile/run none
+l root root 0755 /var/run /var/volatile/run
+d root root 0755 /var/spool none
+d root root 1777 /var/volatile/tmp none
+l root root 1777 /var/tmp /var/volatile/tmp
+d root root 0755 /var/lock/subsys none
+d root root 0755 /var/lib/dropbear none
+d root root 0755 /var/lib/misc none
+d root root 0755 /var/lib/ipkg none
+f root root 0664 /var/log/wtmp none
+f root root 0664 /var/run/utmp none"
+
+INRAM_DISK="\
+### SlugOS from-disk boot.
+d root root 0755 /var/backups none
+d root root 0755 /var/cache none
+d root root 0755 /var/lib none
+d root root 2755 /var/local none
+d root root 1777 /var/lock none
+d root root 0755 /var/log none
+d root root 0755 /var/run none
+d root root 0755 /var/spool none
+d root root 1777 /var/tmp none
+d root root 0755 /var/lock/subsys none
+d root root 0755 /var/lib/dropbear none
+d root root 0755 /var/lib/misc none
+d root root 0755 /var/lib/ipkg none
+f root root 0664 /var/log/wtmp none
+f root root 0664 /var/run/utmp none"
+
+INRAM_HEADER="\
+# This configuration file lists filesystem objects that should get verified
+# during startup and be created if missing.
+#
+# Every line must either be a comment starting with #
+# or a definition of format:
+# <type> <owner> <group> <mode> <path> <linksource>
+# where the items are separated by whitespace !
+#
+# <type> : d|f|l : (d)irectory|(f)ile|(l)ink
+#
+# A linking example:
+# l root root 0777 /var/test /tmp/testfile
+# f root root 0644 /var/test none
+#
+# Understanding links:
+# When populate-volatile is to verify/create a directory or file, it will first
+# check it's existence. If a link is found to exist in the place of the target,
+# the path of the target is replaced with the target the link points to.
+# Thus, if a link is in the place to be verified, the object will be created
+# in the place the link points to instead.
+# This explains the order of \"link before object\" as in the example above, where
+# a link will be created at /var/test pointing to /tmp/testfile and due to this
+# link the file defined as /var/test will actually be created as /tmp/testfile.
+#"
#
# force: override certain checks
@@ -209,7 +293,6 @@ setup_bootdev() {
# Removes the /var tmpfs entry from /etc/fstab.
# Creates links from /var into /media/ram for NFS and Memstick.
setup_var() {
- local ram_targets directory
test -n "$1" -a -d "$1"/var || {
echo "turnup: setup_var($1,$2): expected a directory" >&2
@@ -220,35 +303,30 @@ setup_var() {
*) echo "turnup: setup_var($1,$2): expected 'disk', 'nfs' or 'memstick'" >&2
return 1;;
esac
- #
- # populate /var, there is a shell script to do this, but it uses
- # absolute path names
- chroot "$1" /bin/busybox sh /etc/init.d/populate-volatile.sh || {
- echo "turnup: /var: could not populate directory" >&2
- return 1
- }
+ # populate /var. We just need to create the /var/volatile mount
+ # point, the populate-volatile script does the work at boot time.
+ echo "turnup: ensuring /var/volatile mountpoint exists"
+ test -d "$1"/var/volatile || mkdir "$1"/var/volatile
+
+ # we need to put in place the correct configuration file for
+ # the populate-volatile script to use at boot time. The config
+ # file is already in place for the flash boot, and it's the same
+ # file for the ram boot.
case "$2" in
- disk) ram_targets="$INRAM_DISK";;
- nfs) ram_targets="$INRAM_NFS";;
- memstick)
- ram_targets="$INRAM_MEMSTICK";;
+ disk) echo "$INRAM_HEADER" > "$1"/etc/default/volatiles/00_core
+ echo "$INRAM_DISK" >>"$1"/etc/default/volatiles/00_core;;
+ nfs) echo "$INRAM_HEADER" > "$1"/etc/default/volatiles/00_core
+ echo "$INRAM_NFS" >>"$1"/etc/default/volatiles/00_core;;
+ memstick) echo "$INRAM_HEADER" > "$1"/etc/default/volatiles/00_core
+ echo "$INRAM_MEMSTICK" >>"$1"/etc/default/volatiles/00_core;;
esac
- for directory in $ram_targets
- do
- rm -rf "$1/$directory"
- ln -s "/media/ram/$directory" "$1/$directory"
- done
- # the startup link is left for the moment, this seems safer
- #rm "$1"/etc/rc?.d/[KS]??populate-var.sh
- # remove the /var tmpfs entry from the new /etc/fstab
+ # remove the /var tmpfs entry from the new /etc/fstab, if it is
+ # present in the first place.
sed -i '\@[ ]/var[ ][ ]*tmpfs[ ]@d' "$1"/etc/fstab
- echo "turnup: tmpfs will no longer be mounted on /var" >&2
+ echo "turnup: ensuring tmpfs will not be mounted on /var" >&2
#
- # Previous versions of turnup removed populate-var.sh from the
- # startup links, this one doesn't, so /var can be made back into
- # a tmpfs just by a change to /etc/fstab.
return 0
}
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index ac6f6c3ac0..77e1efb314 100644
--- a/packages/slugos-init/slugos-init_0.10.bb
+++ b/packages/slugos-init/slugos-init_0.10.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "base-files devio"
RDEPENDS = "busybox devio"
-PR = "r83"
+PR = "r84"
SRC_URI = "file://boot/flash \
file://boot/disk \
diff --git a/packages/sqlite/sqlite3-3.3.17/.mtn2git_empty b/packages/sqlite/sqlite3-3.3.17/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.17/.mtn2git_empty
diff --git a/packages/sqlite/sqlite3-3.3.17/libtool.patch b/packages/sqlite/sqlite3-3.3.17/libtool.patch
new file mode 100644
index 0000000000..ccf9993ed2
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.17/libtool.patch
@@ -0,0 +1,25 @@
+Index: sqlite-3.2.1/Makefile.in
+===================================================================
+--- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
++++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
+@@ -15,7 +15,10 @@
+ # The toplevel directory of the source tree. This is the directory
+ # that contains this "Makefile.in" and the "configure.in" script.
+ #
+-TOP = @srcdir@
++TOP = $(srcdir)
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++top_builddir = .
+
+ # C Compiler and options for use in building executables that
+ # will run on the platform that is doing the build.
+@@ -96,7 +99,7 @@
+ exec_prefix = @exec_prefix@
+ libdir = @libdir@
+ INSTALL = @INSTALL@
+-LIBTOOL = ./libtool
++LIBTOOL = @LIBTOOL@
+ ALLOWRELEASE = @ALLOWRELEASE@
+
+ # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3.inc b/packages/sqlite/sqlite3.inc
index 01290c2e41..68cc3e1c33 100644
--- a/packages/sqlite/sqlite3.inc
+++ b/packages/sqlite/sqlite3.inc
@@ -5,9 +5,8 @@ DEPENDS = "readline ncurses"
LICENSE = "PD"
SRC_URI = "http://www.sqlite.org/sqlite-${PV}.tar.gz \
- file://cross-compile.patch;patch=1 \
- file://libtool.patch;patch=1 \
- file://ldflags.patch;patch=1"
+ file://libtool.patch;patch=1"
+
S = "${WORKDIR}/sqlite-${PV}"
inherit autotools pkgconfig
diff --git a/packages/sqlite/sqlite3_3.3.12.bb b/packages/sqlite/sqlite3_3.3.12.bb
index 59c13ee01f..3d642f0ffc 100644
--- a/packages/sqlite/sqlite3_3.3.12.bb
+++ b/packages/sqlite/sqlite3_3.3.12.bb
@@ -1,2 +1,3 @@
require sqlite3.inc
-PR = "r0"
+PR = "r1"
+SRC_URI += "file://cross-compile.patch;patch=1 file://ldflags.patch;patch=1"
diff --git a/packages/sqlite/sqlite3_3.3.13.bb b/packages/sqlite/sqlite3_3.3.13.bb
index 59c13ee01f..3d642f0ffc 100644
--- a/packages/sqlite/sqlite3_3.3.13.bb
+++ b/packages/sqlite/sqlite3_3.3.13.bb
@@ -1,2 +1,3 @@
require sqlite3.inc
-PR = "r0"
+PR = "r1"
+SRC_URI += "file://cross-compile.patch;patch=1 file://ldflags.patch;patch=1"
diff --git a/packages/sqlite/sqlite3_3.3.17.bb b/packages/sqlite/sqlite3_3.3.17.bb
new file mode 100644
index 0000000000..cee00874bd
--- /dev/null
+++ b/packages/sqlite/sqlite3_3.3.17.bb
@@ -0,0 +1,3 @@
+require sqlite3.inc
+PR = "r0"
+
diff --git a/packages/starling/starling_0.2.bb b/packages/starling/starling_0.2.bb
new file mode 100644
index 0000000000..9b389c53cc
--- /dev/null
+++ b/packages/starling/starling_0.2.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Starling audio player for GPE"
+SECTION = "gpe/multimedia"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins-good gst-plugins-bad esound sqlite3 libsoup"
+RDEPENDS = "pulseaudio-bin \
+ gst-plugin-audioconvert \
+ gst-plugin-esd \
+ gst-plugin-typefindfunctions \
+ gst-plugin-decodebin \
+ gst-plugin-volume"
+RRECOMMENDS = "gst-plugin-mad \
+ gst-plugin-modplug \
+ gst-plugin-ivorbis \
+ gst-plugin-tcp"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools
+
diff --git a/packages/subversion/subversion_1.4.3.bb b/packages/subversion/subversion_1.4.3.bb
index c0a2a02e08..1b73017d25 100644
--- a/packages/subversion/subversion_1.4.3.bb
+++ b/packages/subversion/subversion_1.4.3.bb
@@ -5,7 +5,7 @@ RDEPENDS = "neon"
LICENSE = "Apache/BSD"
HOMEPAGE = "http://subversion.tigris.org"
-DEFAULT_PREFERENCE = "-1"
+PR = "r1"
SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
file://disable-revision-install.patch;patch=1 \
@@ -27,3 +27,7 @@ do_configure() {
aclocal -I build/ -I build/ac-macros/ && autoconf
oe_runconf
}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/sysconf/files/sysconfsetup b/packages/sysconf/files/sysconfsetup
index 7b91a0e331..602442f4ff 100644
--- a/packages/sysconf/files/sysconfsetup
+++ b/packages/sysconf/files/sysconfsetup
@@ -16,12 +16,6 @@
# reinit: always do a complete auto restore
# reload: just reload sysconf (no config files!)
#
-# /etc/default/functions contains useful utility functions - it's
-# in a separate file so that it can be loaded by any script
-# load_functions "source"
-# load the functions in '/sbin/source' - relies on /sbin/source being
-# a shell script and having support for this function.
-
# load_functions "source"
# load the functions in '/sbin/source' - relies on /sbin/source being
# a shell script and having support for this function.
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index cc86b9365f..d89d781202 100644
--- a/packages/tasks/task-base.bb
+++ b/packages/tasks/task-base.bb
@@ -1,8 +1,11 @@
DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
-PR = "r31"
+PR = "r36"
-PACKAGES = 'task-boot \
+DEPENDS = "task-boot"
+PROVIDES = "${PACKAGES}"
+PACKAGES = ' \
task-base \
+ task-base-extended \
task-distro-base \
task-machine-base \
\
@@ -41,27 +44,11 @@ PACKAGE_ARCH = "all"
# packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
#
PACKAGE_ARCH_task-base = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-boot = "${MACHINE_ARCH}"
PACKAGE_ARCH_task-machine-base = "${MACHINE_ARCH}"
PACKAGE_ARCH_task-base-apm = "${MACHINE_ARCH}"
PACKAGE_ARCH_task-base-pcmcia = "${MACHINE_ARCH}"
#
-# udev, devfsd, mdev (from busybox) or none
-#
-DISTRO_DEV_MANAGER ?= "${@base_contains("MACHINE_FEATURES", "kernel26", "udev","",d)} "
-
-#
-# sysvinit, upstart
-#
-DISTRO_INIT_MANAGER ?= "sysvinit sysvinit-pidof"
-
-#
-# tinylogin, getty
-#
-DISTRO_LOGIN_MANAGER ?= "tinylogin"
-
-#
# linux-hotplug or none
#
HOTPLUG ?= "${@base_contains("MACHINE_FEATURES", "kernel24", "linux-hotplug","",d)} "
@@ -116,6 +103,34 @@ RDEPENDS_task-base = "\
${@base_contains('DISTRO_FEATURES', 'raid', 'task-base-raid', '',d)} \
"
+RDEPENDS_task-base-extended = "\
+ task-base \
+ ${ADD_WIFI} \
+ ${ADD_BT} \
+ "
+
+ADD_WIFI = ""
+ADD_BT = ""
+
+python __anonymous () {
+ # If Distro want wifi and machine feature wifi/pci/pcmcia/usbhost (one of them)
+ # then include task-base-wifi in task-base
+
+ import bb
+
+ if not hasattr(__builtins__, 'set'):
+ from sets import Set as set
+
+ distro_features = set(bb.data.getVar("DISTRO_FEATURES", d, 1).split())
+ machine_features= set(bb.data.getVar("MACHINE_FEATURES", d, 1).split())
+
+ if "bluetooth" in distro_features and not "bluetooth" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
+ bb.data.setVar("ADD_BT", "task-base-bluetooth", d)
+
+ if "wifi" in distro_features and not "wifi" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
+ bb.data.setVar("ADD_WIFI", "task-base-wifi", d)
+}
+
#
# packages added by distribution
#
@@ -128,26 +143,6 @@ RRECOMMENDS_task-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
RDEPENDS_task-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
RRECOMMENDS_task-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
-#
-# minimal set of packages - needed to boot
-#
-RDEPENDS_task-boot = "\
- kernel \
- base-files \
- base-passwd \
- busybox \
- initscripts \
- modutils-initscripts \
- netbase \
- update-alternatives \
- ${DISTRO_DEV_MANAGER} \
- ${DISTRO_INIT_MANAGER} \
- ${DISTRO_LOGIN_MANAGER} \
- ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
-
-RRECOMMENDS_task-boot = "\
- ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
-
RDEPENDS_task-base-kernel24 = "\
modutils-depmod"
@@ -204,7 +199,6 @@ RDEPENDS_task-base-pcmcia = "\
${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-firmware', '',d)} \
${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-support', '',d)} \
${@base_contains('DISTRO_FEATURES', 'wifi', 'spectrum-fw', '',d)} \
- ${@base_contains('DISTRO_FEATURES', 'wifi', 'hostap-conf', '',d)} \
"
RRECOMMENDS_task-base-pcmcia = "\
@@ -266,7 +260,8 @@ RRECOMMENDS_task-base-usbgadget = "\
kernel-module-gadgetfs \
kernel-module-g-file-storage \
kernel-module-g-serial \
- kernel-module-g-ether"
+ kernel-module-g-ether \
+ usb-gadget-mode"
RDEPENDS_task-base-usbhost = "\
usbutils "
diff --git a/packages/tasks/task-boot.bb b/packages/tasks/task-boot.bb
new file mode 100644
index 0000000000..95eb55b748
--- /dev/null
+++ b/packages/tasks/task-boot.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "Basic task to get a device booting"
+PR = "r35"
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = 'task-boot'
+
+ALLOW_EMPTY = "1"
+
+# packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
+#
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+#
+# udev, devfsd, mdev (from busybox) or none
+#
+DISTRO_DEV_MANAGER ?= "${@base_contains("MACHINE_FEATURES", "kernel26", "udev","",d)} "
+
+#
+# sysvinit, upstart
+#
+DISTRO_INIT_MANAGER ?= "sysvinit sysvinit-pidof"
+
+#
+# tinylogin, getty
+#
+DISTRO_LOGIN_MANAGER ?= "tinylogin"
+
+#
+# those ones can be set in machine config to supply packages needed to get machine booting
+#
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
+
+#
+# minimal set of packages - needed to boot
+#
+RDEPENDS_task-boot = "\
+ kernel \
+ base-files \
+ base-passwd \
+ busybox \
+ initscripts \
+ modutils-initscripts \
+ netbase \
+ update-alternatives \
+ ${DISTRO_DEV_MANAGER} \
+ ${DISTRO_INIT_MANAGER} \
+ ${DISTRO_LOGIN_MANAGER} \
+ ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
+
+RRECOMMENDS_task-boot = "\
+ ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
+
diff --git a/packages/tasks/task-hentges-base.bb b/packages/tasks/task-hentges-base.bb
new file mode 100644
index 0000000000..89b39aeba9
--- /dev/null
+++ b/packages/tasks/task-hentges-base.bb
@@ -0,0 +1,28 @@
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: task-hentges-base.bb
+# Date: 20070516 (YMD)
+
+DESCRIPTION = "task-hentges-base"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "MIT"
+
+######################################################################################
+
+ALLOW_EMPTY = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+######################################################################################
+
+PV = "${HENTGES_PV}"
+PR = "${HENTGES_PR}"
+
+######################################################################################
+
+#DEPENDS = "${HENTGES_DEPENDS}"
+#
+RDEPENDS = "${HENTGES_BASE_RDEPENDS}"
diff --git a/packages/tasks/task-hentges-x11.bb b/packages/tasks/task-hentges-x11.bb
new file mode 100644
index 0000000000..db658e9014
--- /dev/null
+++ b/packages/tasks/task-hentges-x11.bb
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: task-hentges-x11.bb
+# Date: 20070522 (YMD)
+
+DESCRIPTION = "task-hentges-x11"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "MIT"
+
+######################################################################################
+
+ALLOW_EMPTY = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+######################################################################################
+
+PV = "${HENTGES_PV}"
+PR = "${HENTGES_PR}"
+
+######################################################################################
+
+DEPENDS = "task-angstrom-x11"
+
+RDEPENDS = "${HENTGES_X11_RDEPENDS}"
diff --git a/packages/tasks/task-ossie.bb b/packages/tasks/task-ossie.bb
deleted file mode 100644
index b550d709ff..0000000000
--- a/packages/tasks/task-ossie.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "Meta-package for OSSIE Software Defined Radio (SDR)"
-LICENSE = "MIT"
-RDEPENDS = "${OSSIE_BASE} ${OSSIE_PLATFORM} ${OSSIE_COMPONENTS} ${OSSIE_WAVEFORMS}"
-PR = "r0"
-
-PACKAGES = "task-ossie"
-
-ALLOW_EMPTY = "1"
-
-PACKAGE_INSTALL = "${OSSIE_BASE} ${OSSIE_PLATFORM} ${OSSIE_COMPONENTS} ${OSSIE_WAVEFORMS}"
-
-OSSIE_BASE = "screen procps xerces-c omniorb usrp"
-OSSIE_PLATFORM = "ossiecf ossie-standardinterfaces ossie-nodebooter ossie-c-wavloader"
-OSSIE_COMPONENTS = "ossie-gpp-device ossie-usrp-device ossie-soundout-device"
-OSSIE_WAVEFORMS = "ossie-demo ossie-tx-random-data ossie-log-data"
diff --git a/packages/telepathy/empathy-0.5/.mtn2git_empty b/packages/telepathy/empathy-0.5/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/telepathy/empathy-0.5/.mtn2git_empty
diff --git a/packages/telepathy/empathy-0.5/no-gnome.diff b/packages/telepathy/empathy-0.5/no-gnome.diff
new file mode 100644
index 0000000000..29d6276f51
--- /dev/null
+++ b/packages/telepathy/empathy-0.5/no-gnome.diff
@@ -0,0 +1,146 @@
+Index: libempathy-gtk/gossip-ui-utils.c
+===================================================================
+--- libempathy-gtk/gossip-ui-utils.c (revision 99)
++++ libempathy-gtk/gossip-ui-utils.c (working copy)
+@@ -33,7 +33,7 @@
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+ #include <glade/glade.h>
+-#include <libgnome/libgnome.h>
++#include <libgnomevfs/gnome-vfs-utils.h>
+
+ #include <libmissioncontrol/mc-profile.h>
+
+@@ -1280,13 +1280,14 @@
+ gossip_url_show (const char *url)
+ {
+ gchar *real_url;
+- GError *error = NULL;
++ GnomeVFSResult res;
+
+ real_url = fixup_url (url);
+- gnome_url_show (real_url, &error);
+- if (error) {
+- g_warning ("Couldn't show URL:'%s'", real_url);
+- g_error_free (error);
++ res = gnome_vfs_url_show (real_url);
++ if (res != GNOME_VFS_OK) {
++ g_warning ("Couldn't show URL %s: %s",
++ real_url,
++ gnome_vfs_result_to_string (res));
+ }
+
+ g_free (real_url);
+Index: src/empathy-chat-main.c
+===================================================================
+--- src/empathy-chat-main.c (revision 99)
++++ src/empathy-chat-main.c (working copy)
+@@ -28,9 +28,6 @@
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+
+-#include <libgnome/gnome-program.h>
+-#include <libgnomeui/gnome-ui-init.h>
+-
+ #include <libtelepathy/tp-conn.h>
+ #include <libtelepathy/tp-chan.h>
+ #include <libmissioncontrol/mc-account.h>
+@@ -162,7 +159,6 @@
+ main (int argc, char *argv[])
+ {
+ EmpathyChandler *chandler;
+- GnomeProgram *program;
+ gchar *localedir;
+
+ localedir = gossip_paths_get_locale_path ();
+@@ -171,14 +167,8 @@
+ textdomain (GETTEXT_PACKAGE);
+ g_free (localedir);
+
+- program = gnome_program_init ("empathy-chat",
+- PACKAGE_VERSION,
+- LIBGNOMEUI_MODULE,
+- argc, argv,
+- GNOME_PROGRAM_STANDARD_PROPERTIES,
+- GNOME_PARAM_HUMAN_READABLE_NAME, PACKAGE_NAME,
+- NULL);
+-
++ gtk_init (&argc, &argv);
++
+ gtk_window_set_default_icon_name ("empathy");
+
+ if (g_getenv ("EMPATHY_DEBUG")) {
+@@ -194,7 +184,6 @@
+
+ gtk_main ();
+
+- g_object_unref (program);
+ g_object_unref (chandler);
+
+ return EXIT_SUCCESS;
+Index: src/empathy-main.c
+===================================================================
+--- src/empathy-main.c (revision 99)
++++ src/empathy-main.c (working copy)
+@@ -28,9 +28,6 @@
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+
+-#include <libgnome/gnome-program.h>
+-#include <libgnomeui/gnome-ui-init.h>
+-
+ #include <libmissioncontrol/mc-account.h>
+ #include <libmissioncontrol/mc-account-monitor.h>
+ #include <libmissioncontrol/mission-control.h>
+@@ -136,7 +133,6 @@
+ McAccountMonitor *monitor;
+ EmpathyFilter *filter;
+ gchar *localedir;
+- GnomeProgram *program;
+ gboolean no_connect = FALSE;
+ GOptionContext *context;
+ GOptionEntry options[] = {
+@@ -157,14 +153,8 @@
+
+ g_set_application_name (PACKAGE_NAME);
+
+- program = gnome_program_init ("empathy",
+- PACKAGE_VERSION,
+- LIBGNOMEUI_MODULE,
+- argc, argv,
+- GNOME_PROGRAM_STANDARD_PROPERTIES,
+- "goption-context", context,
+- GNOME_PARAM_HUMAN_READABLE_NAME, PACKAGE_NAME,
+- NULL);
++ gtk_init (&argc, &argv);
++ /* TODO: option parsing */
+
+ gtk_window_set_default_icon_name ("empathy");
+
+@@ -204,7 +194,6 @@
+ g_object_unref (monitor);
+ g_object_unref (mc);
+ g_object_unref (icon);
+- g_object_unref (program);
+
+ return EXIT_SUCCESS;
+ }
+Index: configure.ac
+===================================================================
+--- configure.ac (revision 99)
++++ configure.ac (working copy)
+@@ -62,12 +62,13 @@
+
+ PKG_CHECK_MODULES(EMPATHY,
+ [
++ libxml-2.0
+ glib-2.0 >= $GLIB_REQUIRED
+ gobject-2.0
+ gtk+-2.0 >= $GTK_REQUIRED
+ gconf-2.0 >= $GCONF_REQUIRED
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+- libgnomeui-2.0
++ gnome-vfs-2.0
+ libtelepathy >= $TELEPATHY_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ ])
diff --git a/packages/telepathy/empathy_0.4.bb b/packages/telepathy/empathy_0.4.bb
new file mode 100644
index 0000000000..d5e699ceb7
--- /dev/null
+++ b/packages/telepathy/empathy_0.4.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Empathy: a Telepathy based IM client"
+HOMEPAGE = "http://blogs.gnome.org/view/xclaesse/2007/04/26/0"
+LICENSE = "GPL"
+DEPENDS = "libgnomeui telepathy-mission-control libtelepathy gtk+ gconf libglade"
+RDEPENDS = "telepathy-mission-control"
+RRECOMMENDS = "telepathy-gabble"
+
+PR="r0"
+
+inherit gnome
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/empathy/0.4/empathy-${PV}.tar.bz2 \
+ "
+
+FILES_${PN} += "${datadir}/mission-control/profiles/*.profile \
+ ${datadir}/dbus-1/services/*.service \
+ ${datadir}/telepathy/managers/*.chandler \
+ ${datadir}/icons"
diff --git a/packages/telepathy/empathy_0.5.bb b/packages/telepathy/empathy_0.5.bb
new file mode 100644
index 0000000000..e7b2af1d57
--- /dev/null
+++ b/packages/telepathy/empathy_0.5.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Empathy: a Telepathy based IM client"
+HOMEPAGE = "http://blogs.gnome.org/view/xclaesse/2007/04/26/0"
+LICENSE = "GPL"
+DEPENDS = "telepathy-mission-control libtelepathy gtk+ gconf libglade gnome-vfs"
+RDEPENDS = "telepathy-mission-control"
+RRECOMMENDS = "telepathy-gabble"
+
+PR="r1"
+
+inherit gnome
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/empathy/0.5/empathy-${PV}.tar.bz2 \
+ file://no-gnome.diff;patch=1;pnum=0"
+
+FILES_${PN} += "${datadir}/mission-control/profiles/*.profile \
+ ${datadir}/dbus-1/services/*.service \
+ ${datadir}/telepathy/managers/*.chandler \
+ ${datadir}/icons"
diff --git a/packages/telepathy/telepathy-mission-control_4.22.bb b/packages/telepathy/telepathy-mission-control_4.22.bb
new file mode 100644
index 0000000000..2215d0a515
--- /dev/null
+++ b/packages/telepathy/telepathy-mission-control_4.22.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Telepathy Mission Control"
+HOMEPAGE = "http://mission-control.sourceforge.net/"
+LICENSE = "LGPL"
+SECTION = "libs"
+DEPENDS = "libtelepathy dbus-glib gconf"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mission-control/telepathy-mission-control-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+PACKAGES =+ " \
+ libmissioncontrol \
+ libmissioncontrol-config \
+ libmissioncontrol-server \
+ libmissioncontrol-dev \
+ libmissioncontrol-config-dev \
+ libmissioncontrol-server-dev \
+ libmissioncontrol-dbg \
+ libmissioncontrol-config-dbg \
+ libmissioncontrol-server-dbg \
+"
+
+FILES_${PN} += "${datadir}/dbus*"
+
+FILES_libmissioncontrol = "${libdir}/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config = "${libdir}/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server = "${libdir}/libmissioncontrol-server.so.*"
+
+FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
+ ${includedir}/libmissioncontrol/ \
+ ${libdir}/pkgconfig/libmissioncontrol.pc"
+FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
+FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
+
+FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/tree/.mtn2git_empty b/packages/tree/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tree/.mtn2git_empty
diff --git a/packages/tree/tree_1.5.1.bb b/packages/tree/tree_1.5.1.bb
new file mode 100644
index 0000000000..8bca919b22
--- /dev/null
+++ b/packages/tree/tree_1.5.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "a recursive directory listing program"
+HOMEPAGE = "http://mama.indstate.edu/users/ice/tree/"
+SECTION = "console/utils"
+LICENSE = "GPL"
+
+SRC_URI = "ftp://mama.indstate.edu/linux/tree/tree-${PV}.tgz"
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/tree ${D}${bindir}/tree
+}
diff --git a/packages/vera-fonts/ttf-bitstream-vera_1.10.bb b/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb
index 871bc1d37c..871bc1d37c 100644
--- a/packages/vera-fonts/ttf-bitstream-vera_1.10.bb
+++ b/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb
diff --git a/packages/ttyrec/ttyrec_1.0.8.bb b/packages/ttyrec/ttyrec_1.0.8.bb
index 324751b4ba..bf58f245cb 100644
--- a/packages/ttyrec/ttyrec_1.0.8.bb
+++ b/packages/ttyrec/ttyrec_1.0.8.bb
@@ -8,7 +8,6 @@
# Date: 20070403 (YMD)
DESCRIPTION = "ttyrec is a tty recorder. Recorded data can be played back with the included ttyplay command."
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
HOMEPAGE = "http://0xcc.net/ttyrec/index.html.en"
######################################################################################
diff --git a/packages/twisted/twisted-2.5.0/.mtn2git_empty b/packages/twisted/twisted-2.5.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/twisted/twisted-2.5.0/.mtn2git_empty
diff --git a/packages/twisted/twisted-2.5.0/remove-zope-check.patch b/packages/twisted/twisted-2.5.0/remove-zope-check.patch
new file mode 100644
index 0000000000..2bd1b191da
--- /dev/null
+++ b/packages/twisted/twisted-2.5.0/remove-zope-check.patch
@@ -0,0 +1,18 @@
+Index: Twisted-2.5.0/TwistedCore-2.5.0/twisted/__init__.py
+===================================================================
+--- Twisted-2.5.0.orig/TwistedCore-2.5.0/twisted/__init__.py 2007-03-05 16:30:08.117422472 +0100
++++ Twisted-2.5.0/TwistedCore-2.5.0/twisted/__init__.py 2007-03-05 16:30:13.810553949 +0100
+@@ -14,13 +14,6 @@
+ raise RuntimeError("Twisted requires Python 2.3 or later.")
+ del sys
+
+-# Ensure zope.interface is installed
+-try:
+- from zope.interface import Interface
+- del Interface
+-except ImportError:
+- raise ImportError("you need zope.interface installed "
+- "(http://zope.org/Products/ZopeInterface/)")
+
+ # Ensure compat gets imported
+ from twisted.python import compat
diff --git a/packages/twisted/twisted_1.2.0.bb b/packages/twisted/twisted_1.2.0.bb
index 3424f8c387..40f8218fbb 100644
--- a/packages/twisted/twisted_1.2.0.bb
+++ b/packages/twisted/twisted_1.2.0.bb
@@ -1,14 +1,19 @@
-DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
-Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols \
-(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+DESCRIPTION = "Twisted is an event-driven networking framework written in \
+Python and licensed under the LGPL. \ Twisted supports TCP, UDP, SSL/TLS, \
+multicast, Unix sockets, a large number of protocols (including HTTP, NNTP, \
+IMAP, SSH, IRC, FTP, and others), and much more."
HOMEPAGE = "http://www.twistedmatrix.com"
SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "LGPL"
RDEPENDS = "python-core"
+PR = "r1"
SRC_URI = "http://tmrc.mit.edu/mirror/twisted/old/Twisted-${PV}.tar.bz2"
S = "${WORKDIR}/Twisted-${PV}"
inherit distutils
+FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/twisted/protocols/.debug"
+FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/twisted/runner/.debug"
+FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/twisted/spread/.debug"
diff --git a/packages/twisted/twisted_2.5.0.bb b/packages/twisted/twisted_2.5.0.bb
new file mode 100644
index 0000000000..c7620e4b84
--- /dev/null
+++ b/packages/twisted/twisted_2.5.0.bb
@@ -0,0 +1,180 @@
+DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
+Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols \
+(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+HOMEPAGE = "http://www.twistedmatrix.com"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+RDEPENDS = "python-core python-zopeinterface"
+RDEPENDS_python-twisted += "python-twisted-bin python-twisted-conch python-twisted-core \
+ python-twisted-lore python-twisted-mail python-twisted-names \
+ python-twisted-news python-twisted-runner python-twisted-web \
+ python-twisted-words"
+PR = "r6"
+
+SRC_URI = "http://tmrc.mit.edu/mirror/twisted/Twisted/2.5/Twisted-${PV}.tar.bz2 \
+ file://remove-zope-check.patch;patch=1"
+
+S = "${WORKDIR}/Twisted-${PV}"
+
+inherit distutils
+
+PACKAGES += "python-twisted-zsh python-twisted-test python-twisted-protocols \
+ python-twisted-runner-dbg \
+ python-twisted-bin python-twisted-conch python-twisted-lore \
+ python-twisted-mail python-twisted-names python-twisted-news python-twisted-runner \
+ python-twisted-web python-twisted-words python-twisted python-twisted-core \
+ "
+
+ALLOW_EMPTY = "1"
+FILES_${PN} = ""
+FILES_python-twisted = ""
+
+FILES_python-twisted-test = " \
+${libdir}/python2.4/site-packages/twisted/python/web/test \
+"
+
+FILES_python-twisted-protocols = " \
+${libdir}/python2.4/site-packages/twisted/python/protocols/ \
+"
+
+FILES_python-twisted-zsh = " \
+${libdir}/python2.4/site-packages/twisted/python/zsh \
+${libdir}/python2.4/site-packages/twisted/python/zshcomp.* \
+"
+
+FILES_python-twisted-bin = " \
+${libdir}/python2.4/site-packages/twisted/protocols/_c_urlarg.so \
+${libdir}/python2.4/site-packages/twisted/spread/cBanana.so"
+
+FILES_python-twisted-conch = " \
+${bindir}/ckeygen \
+${bindir}/tkconch \
+${bindir}/conch \
+${bindir}/conchftp \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_conch.py \
+${libdir}/python2.4/site-packages/twisted/conch \
+"
+
+FILES_python-twisted-core = " \
+${bindir}/manhole \
+${bindir}/mktap \
+${bindir}/twistd \
+${bindir}/tap2deb \
+${bindir}/tap2rpm \
+${bindir}/tapconvert \
+${bindir}/tkmktap \
+${bindir}/trial \
+${libdir}/python2.4/site-packages/twisted/*.py \
+${libdir}/python2.4/site-packages/twisted/plugins/__init__.py \
+${libdir}/python2.4/site-packages/twisted/plugins/notestplugin.py \
+${libdir}/python2.4/site-packages/twisted/plugins/testplugin.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_ftp.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_inet.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_manhole.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_portforward.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_socks.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_telnet.py \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_trial.py \
+${libdir}/python2.4/site-packages/twisted/plugins/dropin.cache \
+${libdir}/python2.4/site-packages/twisted/application \
+${libdir}/python2.4/site-packages/twisted/cred \
+${libdir}/python2.4/site-packages/twisted/enterprise \
+${libdir}/python2.4/site-packages/twisted/internet \
+${libdir}/python2.4/site-packages/twisted/manhole \
+${libdir}/python2.4/site-packages/twisted/manhole \
+${libdir}/python2.4/site-packages/twisted/persisted \
+${libdir}/python2.4/site-packages/twisted/protocols\
+${libdir}/python2.4/site-packages/twisted/python\
+${libdir}/python2.4/site-packages/twisted/python/timeoutqueue.py \
+${libdir}/python2.4/site-packages/twisted/python/filepath.py \
+${libdir}/python2.4/site-packages/twisted/python/dxprofile.py \
+${libdir}/python2.4/site-packages/twisted/python/plugin.py \
+${libdir}/python2.4/site-packages/twisted/python/htmlizer.py \
+${libdir}/python2.4/site-packages/twisted/python/__init__.py \
+${libdir}/python2.4/site-packages/twisted/python/dispatch.py \
+${libdir}/python2.4/site-packages/twisted/python/hook.py \
+${libdir}/python2.4/site-packages/twisted/python/threadpool.py \
+${libdir}/python2.4/site-packages/twisted/python/otp.py \
+${libdir}/python2.4/site-packages/twisted/python/usage.py \
+${libdir}/python2.4/site-packages/twisted/python/roots.py \
+${libdir}/python2.4/site-packages/twisted/python/versions.py \
+${libdir}/python2.4/site-packages/twisted/python/urlpath.py \
+${libdir}/python2.4/site-packages/twisted/python/util.py \
+${libdir}/python2.4/site-packages/twisted/python/components.py \
+${libdir}/python2.4/site-packages/twisted/python/logfile.py \
+${libdir}/python2.4/site-packages/twisted/python/runtime.py \
+${libdir}/python2.4/site-packages/twisted/python/reflect.py \
+${libdir}/python2.4/site-packages/twisted/python/context.py \
+${libdir}/python2.4/site-packages/twisted/python/threadable.py \
+${libdir}/python2.4/site-packages/twisted/python/rebuild.py \
+${libdir}/python2.4/site-packages/twisted/python/failure.py \
+${libdir}/python2.4/site-packages/twisted/python/lockfile.py \
+${libdir}/python2.4/site-packages/twisted/python/formmethod.py \
+${libdir}/python2.4/site-packages/twisted/python/finalize.py \
+${libdir}/python2.4/site-packages/twisted/python/win32.py \
+${libdir}/python2.4/site-packages/twisted/python/dist.py \
+${libdir}/python2.4/site-packages/twisted/python/shortcut.py \
+${libdir}/python2.4/site-packages/twisted/python/zipstream.py \
+${libdir}/python2.4/site-packages/twisted/python/release.py \
+${libdir}/python2.4/site-packages/twisted/python/syslog.py \
+${libdir}/python2.4/site-packages/twisted/python/log.py \
+${libdir}/python2.4/site-packages/twisted/python/compat.py \
+${libdir}/python2.4/site-packages/twisted/python/zshcomp.py \
+${libdir}/python2.4/site-packages/twisted/python/procutils.py \
+${libdir}/python2.4/site-packages/twisted/python/text.py \
+${libdir}/python2.4/site-packages/twisted/python/_twisted_zsh_stub \
+${libdir}/python2.4/site-packages/twisted/scripts/ \
+${libdir}/python2.4/site-packages/twisted/spread/ \
+${libdir}/python2.4/site-packages/twisted/tap/ \
+${libdir}/python2.4/site-packages/twisted/trial/ \
+${libdir}/python2.4/site-packages/twisted/__init__.py \
+${libdir}/python2.4/site-packages/twisted/_version.py \
+${libdir}/python2.4/site-packages/twisted/copyright.py \
+${libdir}/python2.4/site-packages/twisted/im.py \
+${libdir}/python2.4/site-packages/twisted/plugin.py \
+"
+
+FILES_python-twisted-lore = " \
+${bindir}/bookify \
+${bindir}/lore \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_lore.py \
+${libdir}/python2.4/site-packages/twisted/lore \
+"
+
+FILES_python-twisted-mail = " \
+${bindir}/mailmail \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_mail.py \
+${libdir}/python2.4/site-packages/twisted/mail \
+"
+
+FILES_python-twisted-names = " \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_names.py \
+${libdir}/python2.4/site-packages/twisted/names \
+"
+
+FILES_python-twisted-news = " \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_news.py \
+${libdir}/python2.4/site-packages/twisted/news \
+"
+
+FILES_python-twisted-runner = " \
+${libdir}python2.4/site-packages/twisted/runner/portmap.so \
+${libdir}/python2.4/site-packages/twisted/runner\
+"
+
+FILES_python-twisted-web = " \
+${bindir}/websetroot \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_web.py \
+${libdir}/python2.4/site-packages/twisted/web\
+"
+
+FILES_python-twisted-words = " \
+${bindir}/im \
+${libdir}/python2.4/site-packages/twisted/plugins/twisted_words.py \
+${libdir}/python2.4/site-packages/twisted/words\
+"
+
+FILES_python-twisted-runner-dbg = " \
+${libdir}/python2.4/site-packages/twisted/runner/.debug"
+
diff --git a/packages/uboot/u-boot.inc b/packages/uboot/u-boot.inc
index d9b2f7b7c9..9f7356d5d7 100644
--- a/packages/uboot/u-boot.inc
+++ b/packages/uboot/u-boot.inc
@@ -5,6 +5,8 @@ PRIORITY = "optional"
LICENSE = "GPL"
PROVIDES = "virtual/bootloader"
+PARALLEL_MAKE=""
+
EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
UBOOT_MACHINE ?= "${MACHINE}_config"
@@ -27,5 +29,5 @@ addtask deploy before do_build after do_compile
do_stage() {
install -d ${STAGING_BINDIR_NATIVE}
- install -m755 tools/mkimage ${STAGING_BINDIR_NATIVE}/
+ install -m 755 tools/mkimage ${STAGING_BINDIR_NATIVE}/
}
diff --git a/packages/uboot/u-boot_git.bb b/packages/uboot/u-boot_git.bb
index 9362b62041..07f3ed9977 100644
--- a/packages/uboot/u-boot_git.bb
+++ b/packages/uboot/u-boot_git.bb
@@ -1,8 +1,10 @@
require u-boot.inc
-
+PR="r1"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git "
+SRC_URI_sequoia = "git://www.denx.de/git/u-boot.git;protocol=git;tag=cf3b41e0c1111dbb865b6e34e9f3c3d3145a6093"
+
S = "${WORKDIR}/git"
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/.mtn2git_empty b/packages/uclibc/uclibc-0.9.28/avr32/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config b/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config
new file mode 100644
index 0000000000..c59defd311
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config
@@ -0,0 +1,177 @@
+#
+# Automatically generated make config: don't edit
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+TARGET_avr32=y
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+HAVE_ELF=y
+TARGET_ARCH="avr32"
+ARCH_SUPPORTS_BIG_ENDIAN=y
+UCLIBC_COMPLETELY_PIC=y
+CONFIG_AP7000=y
+LINKRELAX=y
+# CONFIG_GENERIC_386 is not set
+# CONFIG_386 is not set
+# CONFIG_486 is not set
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+# CONFIG_686 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_ELAN is not set
+# CONFIG_CRUSOE is not set
+# CONFIG_WINCHIPC6 is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_NEHEMIAH is not set
+# ARCH_LITTLE_ENDIAN is not set
+ARCH_BIG_ENDIAN=y
+# ARCH_HAS_NO_MMU is not set
+ARCH_HAS_MMU=y
+UCLIBC_HAS_FLOATS=y
+# HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/usr/src/linux"
+C_SYMBOL_PREFIX=""
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+HAVE_SHARED=y
+# ARCH_HAS_NO_LDSO is not set
+BUILD_UCLIBC_LDSO=y
+FORCE_SHAREABLE_TEXT_SEGMENTS=y
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+LDSO_RUNPATH=y
+# DL_FINI_CRT_COMPAT is not set
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+# PTHREADS_DEBUG_SUPPORT is not set
+UCLIBC_HAS_LFS=y
+UCLIBC_STATIC_LDCONFIG=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+# MALLOC_GLIBC_COMPAT is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+HAS_SHADOW=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+UCLIBC_HAS_CTYPE_UNSAFE=y
+# UCLIBC_HAS_CTYPE_CHECKED is not set
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+# UCLIBC_HAS_WCHAR is not set
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
+# UCLIBC_HAS_GLIBC_CUSTOM_PRINTF is not set
+# USE_OLD_VFPRINTF is not set
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+# UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE is not set
+# UCLIBC_HAS_GLIBC_CUSTOM_STREAMS is not set
+# UCLIBC_HAS_PRINTF_M_SPEC is not set
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+# UCLIBC_HAS_WORDEXP is not set
+# UCLIBC_HAS_FTW is not set
+UCLIBC_HAS_GLOB=y
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
+RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/"
+DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+#
+# uClibc security related options
+#
+# UCLIBC_SECURITY is not set
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+WARNINGS="-Wall"
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-0.9.29/bfin/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/bfin/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/bfin/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine b/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine
new file mode 100644
index 0000000000..5243119d2e
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine
@@ -0,0 +1,58 @@
+#
+# Automatically generated make config: don't edit
+# Mon Jun 11 14:03:30 2007
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+TARGET_bfin=y
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="bfin"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+# UCLIBC_FORMAT_ELF is not set
+# UCLIBC_FORMAT_FDPIC_ELF is not set
+# UCLIBC_FORMAT_FLAT is not set
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+UCLIBC_FORMAT_SHARED_FLAT=y
+UCLIBC_SHARED_FLAT_ID=1
+ARCH_LITTLE_ENDIAN=y
+
+#
+# Using Little Endian
+#
+ARCH_HAS_NO_MMU=y
+
+#
+# Target CPU lacks a memory management unit (MMU)
+#
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+EXCLUDE_BRK=y
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine b/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine
index 33f36bf179..6e89444a64 100644
--- a/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine
+++ b/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine
@@ -33,7 +33,7 @@ TARGET_ARCH="arm"
FORCE_OPTIONS_FOR_ARCH=y
CONFIG_ARM_OABI=y
# CONFIG_ARM_EABI is not set
-USE_BX=y
+# USE_BX is not set
# CONFIG_GENERIC_ARM is not set
# CONFIG_ARM610 is not set
# CONFIG_ARM710 is not set
diff --git a/packages/uclibc/uclibc-0.9.29/h3600/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/h3600/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/h3600/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/h3600/uClibc.machine b/packages/uclibc/uclibc-0.9.29/h3600/uClibc.machine
new file mode 100644
index 0000000000..6e89444a64
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/h3600/uClibc.machine
@@ -0,0 +1,70 @@
+#
+# Automatically generated make config: don't edit
+# Sun May 13 11:29:51 2007
+#
+# TARGET_alpha is not set
+TARGET_arm=y
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="arm"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_EABI is not set
+# USE_BX is not set
+# CONFIG_GENERIC_ARM is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM_SA110 is not set
+CONFIG_ARM_SA1100=y
+# CONFIG_ARM_XSCALE is not set
+# CONFIG_ARM_IWMMXT is not set
+TARGET_SUBARCH=""
+
+#
+# Using ELF file format
+#
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uclibc/uclibc-0.9.29/h3800/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/h3800/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/h3800/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/h3800/uClibc.machine b/packages/uclibc/uclibc-0.9.29/h3800/uClibc.machine
new file mode 100644
index 0000000000..6e89444a64
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/h3800/uClibc.machine
@@ -0,0 +1,70 @@
+#
+# Automatically generated make config: don't edit
+# Sun May 13 11:29:51 2007
+#
+# TARGET_alpha is not set
+TARGET_arm=y
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="arm"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_EABI is not set
+# USE_BX is not set
+# CONFIG_GENERIC_ARM is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM_SA110 is not set
+CONFIG_ARM_SA1100=y
+# CONFIG_ARM_XSCALE is not set
+# CONFIG_ARM_IWMMXT is not set
+TARGET_SUBARCH=""
+
+#
+# Using ELF file format
+#
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uclibc/uclibc-0.9.29/simpad/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/simpad/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/simpad/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/simpad/uClibc.machine b/packages/uclibc/uclibc-0.9.29/simpad/uClibc.machine
new file mode 100644
index 0000000000..6e89444a64
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/simpad/uClibc.machine
@@ -0,0 +1,70 @@
+#
+# Automatically generated make config: don't edit
+# Sun May 13 11:29:51 2007
+#
+# TARGET_alpha is not set
+TARGET_arm=y
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="arm"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_EABI is not set
+# USE_BX is not set
+# CONFIG_GENERIC_ARM is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM_SA110 is not set
+CONFIG_ARM_SA1100=y
+# CONFIG_ARM_XSCALE is not set
+# CONFIG_ARM_IWMMXT is not set
+TARGET_SUBARCH=""
+
+#
+# Using ELF file format
+#
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uclibc/uclibc-0.9.29/angstrom/uClibc.distro b/packages/uclibc/uclibc-0.9.29/uClibc.distro
index b326ff03b5..b326ff03b5 100644
--- a/packages/uclibc/uclibc-0.9.29/angstrom/uClibc.distro
+++ b/packages/uclibc/uclibc-0.9.29/uClibc.distro
diff --git a/packages/uclibc/uclibc-initial_0.9.29.bb b/packages/uclibc/uclibc-initial_0.9.29.bb
new file mode 100644
index 0000000000..840acafeac
--- /dev/null
+++ b/packages/uclibc/uclibc-initial_0.9.29.bb
@@ -0,0 +1,32 @@
+SECTION = "base"
+require uclibc_${PV}.bb
+
+FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-${PV}', '${FILE_DIRNAME}/uclibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+
+DEPENDS = "linux-libc-headers"
+PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
+PACKAGES = ""
+
+do_stage() {
+ # Install initial headers into the cross dir
+ make PREFIX= DEVEL_PREFIX=${UCLIBC_PREFIX}/ \
+ RUNTIME_PREFIX=${UCLIBC_PREFIX}/ \
+ pregen install_dev
+
+ mkdir -p ${CROSS_DIR}/${TARGET_SYS}
+ mkdir -p ${CROSS_DIR}/${TARGET_SYS}/include
+ mkdir -p ${CROSS_DIR}/${TARGET_SYS}/lib
+ ln -sf include ${CROSS_DIR}/${TARGET_SYS}/sys-include
+ rm -rf ${CROSS_DIR}/${TARGET_SYS}/${prefix}
+
+ # This conflicts with the c++ version of this header
+ rm -f ${UCLIBC_PREFIX}/include/bits/atomicity.h
+}
+
+do_install() {
+ :
+}
+
+do_compile () {
+ :
+}
diff --git a/packages/uclibc/uclibc_0.9.28.bb b/packages/uclibc/uclibc_0.9.28.bb
index 4cc39fcd07..2c557ec606 100644
--- a/packages/uclibc/uclibc_0.9.28.bb
+++ b/packages/uclibc/uclibc_0.9.28.bb
@@ -22,20 +22,31 @@ S = "${WORKDIR}/uClibc-${PV}"
#SRC_URI += "file://nokernelheadercheck.patch;patch=1"
#
# Thumb support
-SRC_URI += " file://thumb-defined-arm-or-thumb.patch;patch=1"
#
# Thumb interworking support
-SRC_URI += " file://thumb-mov-pc-bx.patch;patch=1"
-SRC_URI += " file://thumb-swi-r7.patch;patch=1"
-SRC_URI += " file://thumb-sysnum-h.patch;patch=1"
-SRC_URI += " file://thumb-asm-swi.patch;patch=1"
-SRC_URI += " file://thumb-call-via-rx.patch;patch=1"
-SRC_URI += " file://dl-startup.h.patch;patch=1"
-SRC_URI += " file://dl-string.h.patch;patch=1"
-SRC_URI += " file://dl-sysdep.h.patch;patch=1"
+THUMBSTUFF = " \
+ file://thumb-defined-arm-or-thumb.patch;patch=1 \
+ file://thumb-mov-pc-bx.patch;patch=1 \
+ file://thumb-swi-r7.patch;patch=1 \
+ file://thumb-sysnum-h.patch;patch=1 \
+ file://thumb-asm-swi.patch;patch=1 \
+ file://thumb-call-via-rx.patch;patch=1 \
+ file://dl-startup.h.patch;patch=1 \
+ file://dl-string.h.patch;patch=1 \
+ file://dl-sysdep.h.patch;patch=1 \
+ "
+
+SRC_URI_append_arm = " ${THUMBSTUFF} "
+
#
# This is a core change and is controversial, maybe even wrong
# on some architectures
THUMB_INTERWORK_RESOLVE_PATCH = ""
THUMB_INTERWORK_RESOLVE_PATCH_thumb-interwork = " file://thumb-resolve.patch;patch=1"
SRC_URI += " ${THUMB_INTERWORK_RESOLVE_PATCH}"
+
+
+DEFAULT_PREFERENCE_avr32 = "6000"
+SRC_URI_append_avr32 = " http://avr32linux.org/twiki/pub/Main/MicroClibcPatches/uClibc-0.9.28-avr1.patch.bz2;patch=1 "
+
+
diff --git a/packages/uclibc/uclibc_0.9.29.bb b/packages/uclibc/uclibc_0.9.29.bb
index 00cb7afb75..df849064e2 100644
--- a/packages/uclibc/uclibc_0.9.29.bb
+++ b/packages/uclibc/uclibc_0.9.29.bb
@@ -7,7 +7,7 @@
# on whether the base patches apply to the selected (SRCDATE) svn release.
#
UCLIBC_BASE ?= "0.9.29"
-PR = "r2"
+PR = "r5"
require uclibc.inc
diff --git a/packages/udev/udev_092.bb b/packages/udev/udev_092.bb
index 7f6685d926..f21be9c8c5 100644
--- a/packages/udev/udev_092.bb
+++ b/packages/udev/udev_092.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
/dev/, handles hotplug events and loads drivers at boot time. It replaces \
the hotplug package and requires a kernel not older than 2.6.12."
-RPROVIDES = "hotplug"
+RPROVIDES_${PN} = "hotplug"
-PR = "r16"
+PR = "r17"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
file://noasmlinkage.patch;patch=1 \
diff --git a/packages/uicmoc/uicmoc4-native_4.3.0.bb b/packages/uicmoc/uicmoc4-native_4.3.0.bb
new file mode 100644
index 0000000000..341b092e29
--- /dev/null
+++ b/packages/uicmoc/uicmoc4-native_4.3.0.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL QPL"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz"
+
+S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
+
+inherit native
+
+EXTRA_OECONF = "-qt-libjpeg -qt-gif -system-zlib \
+ -no-nis -no-cups -no-exceptions \
+ -no-accessibility -no-libjpeg \
+ -no-nas-sound -no-sm \
+ -no-xshape -no-xinerama \
+ -no-xcursor -no-xrandr \
+ -no-xrender -no-fontconfig \
+ -no-tablet -no-xkb \
+ -no-libpng \
+ -verbose -release -fast -static "
+EXTRA_OEMAKE = " "
+
+do_configure() {
+ echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+}
+
+do_compile() {
+ unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
+ cd ${S}/src/tools/moc && oe_runmake CC="${CC}" CXX="${CXX}"
+ cd ${S}/src/corelib && oe_runmake CC="${CC}" CXX="${CXX}"
+ cd ${S}/src/xml && oe_runmake CC="${CC}" CXX="${CXX}"
+ cd ${S}/src/tools/uic && oe_runmake CC="${CC}" CXX="${CXX}"
+ cd ${S}/src/tools/rcc && oe_runmake CC="${CC}" CXX="${CXX}"
+}
+
+do_stage() {
+ install -m 0755 bin/moc ${STAGING_BINDIR}/moc4
+ install -m 0755 bin/uic ${STAGING_BINDIR}/uic4
+ install -m 0755 bin/rcc ${STAGING_BINDIR}/rcc4
+}
diff --git a/packages/usb-gadget-mode/.mtn2git_empty b/packages/usb-gadget-mode/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/.mtn2git_empty b/packages/usb-gadget-mode/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/akita/.mtn2git_empty b/packages/usb-gadget-mode/files/akita/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/akita/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/akita/usb-gadget.conf b/packages/usb-gadget-mode/files/akita/usb-gadget.conf
new file mode 100644
index 0000000000..717687d4c3
--- /dev/null
+++ b/packages/usb-gadget-mode/files/akita/usb-gadget.conf
@@ -0,0 +1,3 @@
+USB_MODE="networking"
+MODULE_OPTIONS=""
+
diff --git a/packages/usb-gadget-mode/files/c7x0/.mtn2git_empty b/packages/usb-gadget-mode/files/c7x0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/c7x0/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/c7x0/usb-gadget.conf b/packages/usb-gadget-mode/files/c7x0/usb-gadget.conf
new file mode 100644
index 0000000000..717687d4c3
--- /dev/null
+++ b/packages/usb-gadget-mode/files/c7x0/usb-gadget.conf
@@ -0,0 +1,3 @@
+USB_MODE="networking"
+MODULE_OPTIONS=""
+
diff --git a/packages/usb-gadget-mode/files/collie/.mtn2git_empty b/packages/usb-gadget-mode/files/collie/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/collie/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/collie/usb-gadget.conf b/packages/usb-gadget-mode/files/collie/usb-gadget.conf
new file mode 100644
index 0000000000..717687d4c3
--- /dev/null
+++ b/packages/usb-gadget-mode/files/collie/usb-gadget.conf
@@ -0,0 +1,3 @@
+USB_MODE="networking"
+MODULE_OPTIONS=""
+
diff --git a/packages/usb-gadget-mode/files/spitz/.mtn2git_empty b/packages/usb-gadget-mode/files/spitz/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/spitz/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/tosa/.mtn2git_empty b/packages/usb-gadget-mode/files/tosa/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/usb-gadget-mode/files/tosa/.mtn2git_empty
diff --git a/packages/usb-gadget-mode/files/tosa/usb-gadget.conf b/packages/usb-gadget-mode/files/tosa/usb-gadget.conf
new file mode 100644
index 0000000000..717687d4c3
--- /dev/null
+++ b/packages/usb-gadget-mode/files/tosa/usb-gadget.conf
@@ -0,0 +1,3 @@
+USB_MODE="networking"
+MODULE_OPTIONS=""
+
diff --git a/packages/usb-gadget-mode/files/usb-gadget b/packages/usb-gadget-mode/files/usb-gadget
new file mode 100755
index 0000000000..4fdc429f5b
--- /dev/null
+++ b/packages/usb-gadget-mode/files/usb-gadget
@@ -0,0 +1,59 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: usb-gadget
+# Date: 20070606 (YMD)
+#
+#################################################################################
+#
+# 20070606 - v0.0.1 - Initial release
+
+CONF_FILE="/etc/default/usb-gadget"
+
+die() {
+ echo "ERROR: $1"
+ exit 1
+}
+
+go() {
+ test -e "$CONF_FILE" && . "$CONF_FILE"
+
+ case "$USB_MODE" in
+ networking) setup_usb g_ether "$MODULE_OPTIONS" ;;
+ storage) setup_usb g_file_storage "$MODULE_OPTIONS" ;;
+ none) unload_usb_gadgets ;;
+ esac
+
+}
+
+setup_usb() {
+
+ if ! ( lsmod | grep -q "$1" )
+ then
+ unload_usb_gadgets
+ echo "Loading [$1]"
+ modprobe "$1" "$MODULE_OPTIONS"
+ else
+ echo "Already loaded: [$1]"
+ fi
+}
+
+unload_usb_gadgets() {
+ KERNEL_VERSION="`uname -r`"
+ GADGET_MODULES="`find /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/gadget -name "*g_*"`"
+
+ for module in $GADGET_MODULES
+ do
+ MODULE_NAME="`basename $module | sed "s/\.ko//"`"
+
+ if ( lsmod | grep -q "$MODULE_NAME" )
+ then
+ echo "Unloading [$MODULE_NAME]"
+ rmmod "$module"
+ fi
+ done
+}
+
+go
diff --git a/packages/usb-gadget-mode/files/usb-gadget.conf b/packages/usb-gadget-mode/files/usb-gadget.conf
new file mode 100644
index 0000000000..3b5ebd6433
--- /dev/null
+++ b/packages/usb-gadget-mode/files/usb-gadget.conf
@@ -0,0 +1,3 @@
+USB_MODE=""
+MODULE_OPTIONS=""
+
diff --git a/packages/usb-gadget-mode/files/usb-gadget.init b/packages/usb-gadget-mode/files/usb-gadget.init
new file mode 100755
index 0000000000..7bf456b652
--- /dev/null
+++ b/packages/usb-gadget-mode/files/usb-gadget.init
@@ -0,0 +1,16 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: usb-gadget.init
+# Date: 20070606 (YMD)
+#
+#################################################################################
+#
+# 20070606 - v0.0.1 - Initial release
+
+case "$1" in
+start) usb-gadget ;;
+esac
+
diff --git a/packages/usb-gadget-mode/usb-gadget-mode.bb b/packages/usb-gadget-mode/usb-gadget-mode.bb
new file mode 100644
index 0000000000..ae1f08b5ea
--- /dev/null
+++ b/packages/usb-gadget-mode/usb-gadget-mode.bb
@@ -0,0 +1,50 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: usb-gadget-mode.bb
+# Date: 20070606 (YMD)
+
+DESCRIPTION = "Manage the default USB gadget mode"
+SECTION = "console/network"
+LICENSE = "GPL"
+
+######################################################################################
+
+PV = "0.0.1"
+PR = "r3"
+
+######################################################################################
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+######################################################################################
+
+SRC_URI = "file://usb-gadget.conf \
+ file://usb-gadget \
+ file://usb-gadget.init"
+
+######################################################################################
+
+do_install() {
+ install -d ${D}${sysconfdir}
+ install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${bindir}
+ install -d ${D}${sysconfdir}/default
+
+ install -m 0644 ${WORKDIR}/usb-gadget.conf ${D}${sysconfdir}/default/usb-gadget
+ install -m 0755 ${WORKDIR}/usb-gadget.init ${D}${sysconfdir}/init.d/usb-gadget
+ install -m 0755 ${WORKDIR}/usb-gadget ${D}${bindir}
+}
+
+pkg_postinst() {
+
+ test -n "$D" && opt="-r $D"
+ update-rc.d $opt usb-gadget defaults 50
+}
+
+pkg_postrm() {
+ update-rc.d -f usb-gadget remove
+}
diff --git a/packages/vsftpd/vsftpd-2.0.5/syscall.patch b/packages/vsftpd/vsftpd-2.0.5/syscall.patch
new file mode 100644
index 0000000000..b91cd5392b
--- /dev/null
+++ b/packages/vsftpd/vsftpd-2.0.5/syscall.patch
@@ -0,0 +1,12 @@
+Index: vsftpd-2.0.5/sysdeputil.c
+===================================================================
+--- vsftpd-2.0.5.orig/sysdeputil.c 2007-05-20 21:20:01.000000000 +0200
++++ vsftpd-2.0.5/sysdeputil.c 2007-05-20 21:20:28.000000000 +0200
+@@ -159,7 +159,6 @@
+ #include <linux/capability.h>
+ #include <errno.h>
+ #include <syscall.h>
+-_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
+ /* Gross HACK to avoid warnings - linux headers overlap glibc headers */
+ #undef __NFDBITS
+ #undef __FDMASK
diff --git a/packages/vsftpd/vsftpd_2.0.5.bb b/packages/vsftpd/vsftpd_2.0.5.bb
index 81aec46845..fc10d27f08 100644
--- a/packages/vsftpd/vsftpd_2.0.5.bb
+++ b/packages/vsftpd/vsftpd_2.0.5.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "Secure ftp daemon"
SECTION = "console/network"
LICENSE = "GPL"
-DEPENDS = "openssl"
-PR = "r0"
+PR = "r1"
SRC_URI = "ftp://vsftpd.beasts.org/users/cevans/vsftpd-${PV}.tar.gz \
file://makefile.patch;patch=1 \
file://nopam.patch;patch=1 \
+ file://syscall.patch;patch=1 \
file://init \
file://vsftpd.conf"
@@ -20,7 +20,7 @@ do_configure() {
}
do_compile() {
- oe_runmake "LIBS=-lssl -lcrypto -lcrypt -L${STAGING_LIBDIR}"
+ oe_runmake "LIBS=-lcrypt -L${STAGING_LIBDIR}"
}
do_install() {
diff --git a/packages/watchdog/watchdog_5.3.1.bb b/packages/watchdog/watchdog_5.3.1.bb
new file mode 100644
index 0000000000..fd8e756619
--- /dev/null
+++ b/packages/watchdog/watchdog_5.3.1.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "System watchdog daemon"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "http://www.ibiblio.org/pub/Linux/system/daemons/watchdog/${PN}_${PV}.tar.gz"
+
+inherit autotools
+
+FILES = "${sysconfdir}/watchdog.conf ${sbindir}/watchdog"
diff --git a/packages/webcam-server/webcam-server_0.50.bb b/packages/webcam-server/webcam-server_0.50.bb
index 737ef75977..df7873c382 100644
--- a/packages/webcam-server/webcam-server_0.50.bb
+++ b/packages/webcam-server/webcam-server_0.50.bb
@@ -8,7 +8,6 @@
# Date: 20070317 (YMD)
DESCRIPTION = "webcam_server is a program that allows others to view your webcam from a web browser."
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
HOMEPAGE = "http://webcamserver.sourceforge.net/"
LICENSE = "GPL"
diff --git a/packages/webkit/.mtn2git_empty b/packages/webkit/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/webkit/.mtn2git_empty
diff --git a/packages/webkit/webkit/.mtn2git_empty b/packages/webkit/webkit/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/webkit/webkit/.mtn2git_empty
diff --git a/packages/webkit/webkit/Makefile b/packages/webkit/webkit/Makefile
new file mode 100644
index 0000000000..89344f7a58
--- /dev/null
+++ b/packages/webkit/webkit/Makefile
@@ -0,0 +1,22 @@
+MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+
+all:
+ @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
+ if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
+
+debug d development dev develop:
+ @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
+ if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
+
+release r deployment dep deploy:
+ @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
+ if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
+
+universal u:
+ @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
+ if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
+
+clean:
+ @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
+ if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
+
diff --git a/packages/webkit/webkit/Makefile.shared b/packages/webkit/webkit/Makefile.shared
new file mode 100644
index 0000000000..df3389ca3b
--- /dev/null
+++ b/packages/webkit/webkit/Makefile.shared
@@ -0,0 +1,20 @@
+XCODE_OPTIONS = `perl -I../WebKitTools/Scripts -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
+
+all:
+ ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
+
+debug d development dev develop: force
+ ../WebKitTools/Scripts/set-webkit-configuration --debug
+ ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
+
+release r deployment dep deploy: force
+ ../WebKitTools/Scripts/set-webkit-configuration --release
+ ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
+
+universal u: force
+ ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) 'ARCHS=ppc i386' | grep -v setenv && exit $${PIPESTATUS[0]} )
+
+clean:
+ ( xcodebuild -alltargets clean $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
+
+force: ;
diff --git a/packages/webkit/webkit/WebKit.pri b/packages/webkit/webkit/WebKit.pri
new file mode 100644
index 0000000000..168e5558b6
--- /dev/null
+++ b/packages/webkit/webkit/WebKit.pri
@@ -0,0 +1,55 @@
+# Include file to make it easy to include WebKit into Qt projects
+
+
+isEmpty(OUTPUT_DIR):OUTPUT_DIR=$$PWD/WebKitBuild/Release
+
+!gdk-port:CONFIG += qt-port
+qt-port:DEFINES += BUILDING_QT__=1
+qt-port:LIBS += -L$$OUTPUT_DIR/lib -lWebKitQt
+gdk-port:CONFIG += link_pkgconfig
+gdk-port:PKGCONFIG += cairo gdk-2.0 gtk+-2.0 libcurl
+gdk-port:DEFINES += BUILDING_GDK__=1 BUILDING_CAIRO__
+gdk-port:LIBS += -L$$OUTPUT_DIR/lib -lWebKitGdk $$system(icu-config --ldflags)
+gdk-port:QMAKE_CXXFLAGS += $$system(icu-config --cppflags)
+
+DEFINES += USE_SYSTEM_MALLOC
+CONFIG(release) {
+ DEFINES += NDEBUG
+}
+
+BASE_DIR = $$PWD
+qt-port:INCLUDEPATH += \
+ $$PWD/WebKitQt/Api
+gdk-port:INCLUDEPATH += \
+ $$BASE_DIR/WebCore/platform/gdk \
+ $$BASE_DIR/WebCore/platform/network/gdk \
+ $$BASE_DIR/WebCore/platform/graphics/cairo \
+ $$BASE_DIR/WebCore/loader/gdk \
+ $$BASE_DIR/WebCore/page/gdk
+INCLUDEPATH += \
+ $$BASE_DIR/JavaScriptCore/ \
+ $$BASE_DIR/JavaScriptCore/kjs \
+ $$BASE_DIR/JavaScriptCore/bindings \
+ $$BASE_DIR/JavaScriptCore/bindings/c \
+ $$BASE_DIR/JavaScriptCore/wtf \
+ $$BASE_DIR/WebCore \
+ $$BASE_DIR/WebCore/ForwardingHeaders \
+ $$BASE_DIR/WebCore/platform \
+ $$BASE_DIR/WebCore/platform/network \
+ $$BASE_DIR/WebCore/platform/graphics \
+ $$BASE_DIR/WebCore/loader \
+ $$BASE_DIR/WebCore/page \
+ $$BASE_DIR/WebCore/css \
+ $$BASE_DIR/WebCore/dom \
+ $$BASE_DIR/WebCore/bridge \
+ $$BASE_DIR/WebCore/editing \
+ $$BASE_DIR/WebCore/rendering \
+ $$BASE_DIR/WebCore/history \
+ $$BASE_DIR/WebCore/xml \
+ $$BASE_DIR/WebCore/html
+
+
+macx {
+ INCLUDEPATH += /usr/include/libxml2
+ LIBS += -lxml2 -lxslt
+}
diff --git a/packages/webkit/webkit/WebKit.pro b/packages/webkit/webkit/WebKit.pro
new file mode 100644
index 0000000000..eae6a46180
--- /dev/null
+++ b/packages/webkit/webkit/WebKit.pro
@@ -0,0 +1,12 @@
+TEMPLATE = subdirs
+CONFIG += ordered
+!gdk-port:CONFIG += qt-port
+SUBDIRS = \
+ WebCore \
+ JavaScriptCore/kjs/testkjs.pro
+
+qt-port:SUBDIRS += \
+ WebKitQt/QtLauncher \
+ WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro
+gdk-port:SUBDIRS += \
+ WebKitTools/GdkLauncher
diff --git a/packages/webkit/webkit_svn.bb b/packages/webkit/webkit_svn.bb
new file mode 100644
index 0000000000..433afb52d2
--- /dev/null
+++ b/packages/webkit/webkit_svn.bb
@@ -0,0 +1,54 @@
+DEPENDS = "flex-native gperf-native gperf perl-native curl icu uicmoc4-native qmake2-native libxml2 sqlite3 cairo libxslt libidn gnutls gtk+"
+
+# Yes, this is wrong...
+PV = "0.0+svn${SRCDATE}"
+PR = "r1"
+
+inherit qmake pkgconfig
+
+SRC_URI = "\
+ svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptCore;proto=http \
+ svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptGlue;proto=http \
+ svn://svn.webkit.org/repository/webkit/trunk/;module=WebCore;proto=http \
+ svn://svn.webkit.org/repository/webkit/trunk/;module=WebKit;proto=http \
+ svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitLibraries;proto=http \
+# svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitQt;proto=http \
+ svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitTools;proto=http \
+ file://Makefile \
+ file://Makefile.shared \
+ file://WebKit.pri \
+ file://WebKit.pro \
+"
+
+S = "${WORKDIR}/"
+
+
+do_configure_append() {
+ qmake2 -spec ${QMAKESPEC} CONFIG+=gdk-port CONFIG-=qt CONFIG-=release CONFIG+=debug
+ mkdir -p WebKitBuilds/Debug
+ cd WebKitBuilds/Debug
+ PWD=`pwd` qmake2 -spec ${QMAKESPEC} -r OUTPUT_DIR=$PWD/ CONFIG-=qt CONFIG+=gdk-port $PWD/../../WebKit.pro
+}
+
+do_compile_prepend() {
+ cd ${S}/WebKitBuilds/Debug
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${libdir}
+ install -d ${D}${libdir}/pkgconfig
+
+ install -m 0755 ${S}/WebKitBuilds/Debug/WebKitTools/GdkLauncher/GdkLauncher ${D}${bindir}
+ cp -pPR WebKitBuilds/Debug/lib/*.so* ${D}${libdir}
+ cp -pPR WebKitBuilds/Debug/lib/*.pc ${D}${libdir}/pkgconfig/
+}
+
+
+PACKAGES =+ "webkit-gdklauncher-dbg webkit-gdklauncher"
+
+FILES_webkit-gdklauncher = "${bindir}/GdkLauncher"
+FILES_webkit-gdklauncher-dbg = "${bindir}/.debug/GdkLauncher"
+
+
+
diff --git a/packages/wget/wget-1.9.1/ipv6-fix.patch b/packages/wget/wget-1.9.1/ipv6-fix.patch
new file mode 100644
index 0000000000..315dd25c00
--- /dev/null
+++ b/packages/wget/wget-1.9.1/ipv6-fix.patch
@@ -0,0 +1,31 @@
+If the kernel has IPv6 support then wget tries to create sockets using
+AF_INET6 and then gets an EAFNOSUPPORT error, which it treats as a
+connection failure, resulting in wget not being able to work. This patch
+makes it switch it's default protocol to IPv4 when it sees that IPv6 isn't
+supported in the kernel.
+
+Index: wget-1.9.1/src/connect.c
+===================================================================
+--- wget-1.9.1.orig/src/connect.c 2003-11-02 01:08:22.000000000 +1100
++++ wget-1.9.1/src/connect.c 2007-06-02 01:39:55.000000000 +1000
+@@ -244,12 +244,20 @@
+ {
+ ip_address addr;
+ int sock;
++retry:
+ address_list_copy_one (al, i, &addr);
+
+ sock = connect_to_one (&addr, port, silent);
+ if (sock >= 0)
+ /* Success. */
+ return sock;
++
++ if (errno == EAFNOSUPPORT && ip_default_family == AF_INET6)
++ {
++ DEBUGP (("No IPv6 support, changing default to IPv4.\n"));
++ ip_default_family = AF_INET;
++ goto retry;
++ }
+
+ address_list_set_faulty (al, i);
+
diff --git a/packages/wget/wget_1.9.1.bb b/packages/wget/wget_1.9.1.bb
index 2e576bd2e4..d3858e4e47 100644
--- a/packages/wget/wget_1.9.1.bb
+++ b/packages/wget/wget_1.9.1.bb
@@ -1,12 +1,13 @@
DESCRIPTION = "A console URL download utility featuring HTTP, FTP, and more."
SECTION = "console/network"
DEPENDS = ""
-PR = "r6"
+PR = "r7"
LICENSE = "GPL"
SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
file://m4macros.patch;patch=1 \
- file://autotools.patch;patch=1"
+ file://autotools.patch;patch=1 \
+ file://ipv6-fix.patch;patch=1"
S = "${WORKDIR}/wget-${PV}"
inherit autotools gettext
diff --git a/packages/wireless-tools/wireless-tools.inc b/packages/wireless-tools/wireless-tools.inc
new file mode 100644
index 0000000000..857f63c91b
--- /dev/null
+++ b/packages/wireless-tools/wireless-tools.inc
@@ -0,0 +1,36 @@
+DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem"
+HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "file://man.patch;patch=1 \
+ file://wireless-tools.if-pre-up"
+
+CFLAGS =+ "-I${S}"
+EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \
+ 'INSTALL_DIR=${D}${base_sbindir}' \
+ 'INSTALL_LIB=${D}${libdir}' \
+ 'INSTALL_INC=${D}${includedir}' \
+ 'INSTALL_MAN=${D}${mandir}'"
+
+do_compile() {
+ oe_runmake all libiw.a
+}
+
+do_stage() {
+ install -m 0644 wireless.h ${STAGING_INCDIR}/
+ install -m 0644 iwlib.h ${STAGING_INCDIR}/
+ oe_libinstall -a -so libiw ${STAGING_LIBDIR}/
+}
+
+PACKAGES += "libiw libiw-dev libiw-doc libiw-dbg ifrename ifrename-dbg ifrename-doc"
+FILES_libiw += "${libdir}/*.so.*"
+FILES_libiw-dbg += "${libdir}/.debug/*.so.*"
+FILES_libiw-dev += "${libdir}/*.a ${libdir}/*.so ${includedir}"
+FILES_libiw-doc += "${mandir}/man7"
+FILES_ifrename += "${sbindir}/ifrename"
+FILES_ifrename-dbg += "${sbindir}/.debug/ifrename"
+FILES_ifrename-doc += "${mandir}/man8/ifrename.8 ${mandir}/man5/iftab.5"
+FILES_${PN} += "${bindir} ${sbindir}/iw* ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
+FILES_${PN}-doc += "${mandir}/man8"
diff --git a/packages/wireless-tools/wireless-tools_26.bb b/packages/wireless-tools/wireless-tools_26.bb
deleted file mode 100644
index 4a478663e6..0000000000
--- a/packages/wireless-tools/wireless-tools_26.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem"
-HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
-SECTION = "base"
-PRIORITY = "optional"
-DEPENDS = "virtual/kernel"
-LICENSE = "GPL"
-PR = "r6"
-
-SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.${PV}.tar.gz \
- file://man.patch;patch=1 \
- file://wireless-tools.if-pre-up"
-S = "${WORKDIR}/wireless_tools.${PV}"
-
-inherit module-base
-
-do_configure() {
- rm -f wireless.h
-}
-
-do_compile() {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- oe_runmake KERNEL_SRC=${KERNEL_SOURCE} KERNEL_VERSION=${KERNEL_VERSION} BUILD_SHARED=y
-}
-
-do_install() {
- oe_runmake PREFIX=${D} install
- install -d ${D}${sysconfdir}/network/if-pre-up.d
- install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
-}
-
-FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
- ${sysconfdir} ${sharedstatedir} ${localstatedir} \
- /bin /sbin /lib/*.so* ${datadir}/${PN} ${libdir}/${PN} \
- /etc/network"
diff --git a/packages/wireless-tools/wireless-tools_27.bb b/packages/wireless-tools/wireless-tools_27.bb
deleted file mode 100644
index c26e40cf3c..0000000000
--- a/packages/wireless-tools/wireless-tools_27.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem"
-HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
-SECTION = "base"
-PRIORITY = "optional"
-#DEPENDS = "virtual/kernel"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.${PV}.tar.gz \
- file://man.patch;patch=1 \
- file://fixheaders.patch;patch=1 \
- file://wireless-tools.if-pre-up"
-S = "${WORKDIR}/wireless_tools.${PV}"
-
-CFLAGS =+ "-I${S}"
-EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \
- 'INSTALL_DIR=${D}${base_sbindir}' \
- 'INSTALL_LIB=${D}${libdir}' \
- 'INSTALL_INC=${D}${includedir}' \
- 'INSTALL_MAN=${D}${mandir}'"
-
-do_compile() {
- oe_runmake all libiw.a
-}
-
-do_stage () {
- install -m 0644 wireless.h ${STAGING_INCDIR}/
- install -m 0644 iwlib.h ${STAGING_INCDIR}/
- oe_libinstall -a -so libiw ${STAGING_LIBDIR}/
-}
-
-do_install() {
- oe_runmake PREFIX=${D} install install-static
- install -d ${D}${sysconfdir}/network/if-pre-up.d
- install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
-}
-
-PACKAGES = "libiw libiw-dev libiw-doc ${PN} ${PN}-doc"
-FILES_libiw = "${libdir}/*.so.*"
-FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}"
-FILES_libiw-doc = "${mandir}/man7"
-FILES_${PN} = "${bindir} ${sbindir} ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
-FILES_${PN}-doc = "${mandir}/man8"
diff --git a/packages/wireless-tools/wireless-tools_28+29pre10.bb b/packages/wireless-tools/wireless-tools_28+29pre10.bb
new file mode 100644
index 0000000000..cf519cd9f1
--- /dev/null
+++ b/packages/wireless-tools/wireless-tools_28+29pre10.bb
@@ -0,0 +1,14 @@
+require wireless-tools.inc
+
+PR = "r3"
+
+SRC_URI += "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre10.tar.gz"
+S = "${WORKDIR}/wireless_tools.29"
+
+do_install() {
+ oe_runmake PREFIX=${D} install-iwmulticall install-dynamic install-man install-hdr
+ install -d ${D}${sbindir}
+ install -m 0755 ifrename ${D}${sbindir}/ifrename
+ install -d ${D}${sysconfdir}/network/if-pre-up.d
+ install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
+}
diff --git a/packages/wireless-tools/wireless-tools_28+29pre21.bb b/packages/wireless-tools/wireless-tools_28+29pre21.bb
new file mode 100644
index 0000000000..b42af6fee2
--- /dev/null
+++ b/packages/wireless-tools/wireless-tools_28+29pre21.bb
@@ -0,0 +1,14 @@
+require wireless-tools.inc
+
+SRC_URI += "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre21.tar.gz \
+ file://zzz-wireless.if-pre-up"
+S = "${WORKDIR}/wireless_tools.29"
+
+do_install() {
+ oe_runmake PREFIX=${D} install-iwmulticall install-dynamic install-man install-hdr
+ install -d ${D}${sbindir}
+ install -m 0755 ifrename ${D}${sbindir}/ifrename
+ install -d ${D}${sysconfdir}/network/if-pre-up.d
+ install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
+ install ${WORKDIR}/zzz-wireless.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/zzz-wireless
+}
diff --git a/packages/wireless-tools/wireless-tools_28-pre13.bb b/packages/wireless-tools/wireless-tools_28-pre13.bb
deleted file mode 100644
index 170f67deeb..0000000000
--- a/packages/wireless-tools/wireless-tools_28-pre13.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem"
-HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
-SECTION = "base"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.28.pre13.tar.gz \
- file://man.patch;patch=1 \
- file://wireless-tools.if-pre-up \
- file://zzz-wireless.if-pre-up"
-S = "${WORKDIR}/wireless_tools.28"
-
-CFLAGS =+ "-I${S}"
-EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \
- 'INSTALL_DIR=${D}${base_sbindir}' \
- 'INSTALL_LIB=${D}${libdir}' \
- 'INSTALL_INC=${D}${includedir}' \
- 'INSTALL_MAN=${D}${mandir}'"
-
-do_compile() {
- oe_runmake all libiw.a
-}
-
-do_stage() {
- install -m 0644 wireless.h ${STAGING_INCDIR}/
- install -m 0644 iwlib.h ${STAGING_INCDIR}/
- oe_libinstall -a -so libiw ${STAGING_LIBDIR}/
-}
-
-do_install() {
- oe_runmake PREFIX=${D} install-iwmulticall install-dynamic
- install -d ${D}${sysconfdir}/network/if-pre-up.d
- install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
- install ${WORKDIR}/zzz-wireless.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/zzz-wireless
-}
-
-PACKAGES = "libiw libiw-dev libiw-doc ${PN} ${PN}-doc"
-FILES_libiw = "${libdir}/*.so.*"
-FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}"
-FILES_libiw-doc = "${mandir}/man7"
-FILES_${PN} = "${bindir} ${sbindir} ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
-FILES_${PN}-doc = "${mandir}/man8"
diff --git a/packages/wireless-tools/wireless-tools_28.bb b/packages/wireless-tools/wireless-tools_28.bb
new file mode 100644
index 0000000000..92a49daae2
--- /dev/null
+++ b/packages/wireless-tools/wireless-tools_28.bb
@@ -0,0 +1,14 @@
+require wireless-tools.inc
+
+PR = "r1"
+
+SRC_URI += "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.28.pre13.tar.gz \
+ file://zzz-wireless.if-pre-up"
+S = "${WORKDIR}/wireless_tools.28"
+
+do_install() {
+ oe_runmake PREFIX=${D} install-iwmulticall install-dynamic
+ install -d ${D}${sysconfdir}/network/if-pre-up.d
+ install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
+ install ${WORKDIR}/zzz-wireless.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/zzz-wireless
+}
diff --git a/packages/wireless-tools/wireless-tools_29-pre10.bb b/packages/wireless-tools/wireless-tools_29-pre10.bb
deleted file mode 100644
index febe662602..0000000000
--- a/packages/wireless-tools/wireless-tools_29-pre10.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem"
-HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
-SECTION = "base"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PR = "r2"
-
-SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre10.tar.gz \
- file://man.patch;patch=1 \
- file://wireless-tools.if-pre-up"
-
-S = "${WORKDIR}/wireless_tools.29"
-
-CFLAGS =+ "-I${S}"
-EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \
- 'INSTALL_DIR=${D}${base_sbindir}' \
- 'INSTALL_LIB=${D}${libdir}' \
- 'INSTALL_INC=${D}${includedir}' \
- 'INSTALL_MAN=${D}${mandir}'"
-
-do_compile() {
- oe_runmake all libiw.a
-}
-
-do_stage() {
- install -m 0644 wireless.h ${STAGING_INCDIR}/
- install -m 0644 iwlib.h ${STAGING_INCDIR}/
- oe_libinstall -a -so libiw ${STAGING_LIBDIR}/
-}
-
-do_install() {
- oe_runmake PREFIX=${D} install-iwmulticall install-dynamic install-man install-hdr
- install -d ${D}${sbindir}
- install -m 0755 ifrename ${D}${sbindir}/ifrename
- install -d ${D}${sysconfdir}/network/if-pre-up.d
- install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
-}
-
-PACKAGES = "libiw libiw-dev libiw-doc ifrename ${PN} ${PN}-doc ${PN}-dbg "
-FILES_libiw = "${libdir}/*.so.*"
-FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}"
-FILES_libiw-doc = "${mandir}/man7"
-FILES_ifrename = "${sbindir}/ifrename"
-FILES_${PN} = "${bindir} ${sbindir}/iw* ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
-FILES_${PN}-doc = "${mandir}/man8"
diff --git a/packages/wpa-supplicant/files/functions.sh b/packages/wpa-supplicant/files/functions.sh
new file mode 100755
index 0000000000..5132fbbca4
--- /dev/null
+++ b/packages/wpa-supplicant/files/functions.sh
@@ -0,0 +1,841 @@
+#!/bin/sh
+
+# Copyright (C) 2006 Debian/Ubuntu wpasupplicant Maintainers
+# <pkg-wpa-devel@lists.alioth.debian.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# On Debian GNU/Linux systems, the text of the GPL license can be
+# found in /usr/share/common-licenses/GPL.
+
+#####################################################################
+## global variables
+# wpa_supplicant variables
+WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
+WPA_SUP_PNAME="wpa_supplicant"
+WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$WPA_IFACE.pid"
+
+# wpa_cli variables
+WPA_CLI_BIN="/usr/sbin/wpa_cli"
+WPA_CLI_PNAME="wpa_cli"
+WPA_CLI_PIDFILE="/var/run/wpa_action.$WPA_IFACE.pid"
+WPA_CLI_LOGFILE="/var/log/wpa_action.log"
+WPA_CLI_TIMESTAMP="/var/run/wpa_action.$WPA_IFACE.timestamp"
+
+# default ctrl_interface socket directory
+if [ -z "$WPA_CTRL_DIR" ]; then
+ WPA_CTRL_DIR="/var/run/wpa_supplicant"
+fi
+
+# verbosity variables
+if [ -n "$IF_WPA_VERBOSITY" ] || [ "$VERBOSITY" = "1" ]; then
+ TO_NULL="/dev/stdout"
+ DAEMON_VERBOSITY="--verbose"
+else
+ TO_NULL="/dev/null"
+ DAEMON_VERBOSITY="--quiet"
+fi
+
+#####################################################################
+## wpa_cli wrapper
+# Path to common ctrl_interface socket and iface supplied.
+# NB: WPA_CTRL_DIR cannot be used for interactive commands.
+#
+wpa_cli () {
+ $WPA_CLI_BIN -p $WPA_CTRL_DIR -i $WPA_IFACE "$@"
+}
+
+#####################################################################
+## verbose and stderr message wrapper
+# Ensures a standard and easily identifiable message is printed by
+# scripts using this function library.
+#
+# verbose To stdout when IF_WPA_VERBOSITY or VERBOSITY is true
+#
+# action Same as verbose but without newline
+# Useful for allowing wpa_cli commands to echo result
+# value of 'OK' or 'FAILED'
+#
+# stderr Echo warning or error messages to stderr
+#
+# NB: when called by wpa_action, there is no redirection (verbose)
+#
+wpa_msg () {
+
+ if [ -n "$WPA_ACTION" ]; then
+ shift
+ echo "wpa_action: $@"
+ return
+ fi
+
+ case "$1" in
+ "verbose")
+ shift
+ echo "$WPA_SUP_PNAME: $@" >$TO_NULL
+ ;;
+ "action")
+ shift
+ echo -n "$WPA_SUP_PNAME: $@ -- " >$TO_NULL
+ ;;
+ "stderr")
+ shift
+ echo "$WPA_SUP_PNAME: $@" >/dev/stderr
+ ;;
+ *)
+ ;;
+ esac
+}
+
+#####################################################################
+## validate daemon pid files
+# Test daemon process ID files via start-stop-daemon with a signal 0
+# given the exec binary and pidfile location.
+#
+# $1 daemon
+# $2 pidfile
+#
+# Returns true when pidfile exists, the process ID exists _and_ was
+# created by the exec binary.
+#
+# If the test fails, but the pidfile exists, it is stale
+#
+test_daemon_pidfile () {
+ local DAEMON PIDFILE
+
+ if [ -n "$1" ]; then
+ DAEMON="$1"
+ fi
+
+ if [ -f "$2" ]; then
+ PIDFILE="$2"
+ fi
+
+ if [ -n "$DAEMON" ] && [ -f "$PIDFILE" ]; then
+ if start-stop-daemon --stop --quiet --signal 0 \
+ --exec "$DAEMON" --pidfile "$PIDFILE"; then
+ return 0
+ else
+ rm -f "$PIDFILE"
+ return 1
+ fi
+ else
+ return 1
+ fi
+}
+
+# validate wpa_supplicant pidfile
+test_wpa_supplicant () {
+ test_daemon_pidfile "$WPA_SUP_BIN" "$WPA_SUP_PIDFILE"
+}
+
+# validate wpa_cli pidfile
+test_wpa_cli () {
+ test_daemon_pidfile "$WPA_CLI_BIN" "$WPA_CLI_PIDFILE"
+}
+
+#####################################################################
+## daemonize wpa_supplicant
+# Start wpa_supplicant via start-stop-dameon with all required
+# options. Will start if environment variable WPA_SUP_CONF is present
+#
+# Required options:
+# -B dameonize/background process
+# -D driver backend ('wext' if none given)
+# -P process ID file
+# -C path to ctrl_interface socket directory
+#
+# Optional options:
+# -c configuration file
+# -W wait for wpa_cli to attach to ctrl_interface socket
+# -b bridge interface name
+#
+init_wpa_supplicant () {
+ if [ -n "$WPA_SUP_CONF" ]; then
+ # wpa-action was removed, point to wpa-roam
+ if [ -n "$IF_WPA_ACTION" ]; then
+ wpa_msg stderr "wpa-action support has been removed"
+ wpa_msg stderr "refer to /usr/share/doc/wpasupplicant/README.modes.gz"
+ return 1
+ fi
+
+ local WPA_SUP_DRIVER WPA_SUP_OPTIONS
+
+ if [ -n "$WPA_ACTION_SCRIPT" ]; then
+ if [ -x "$WPA_ACTION_SCRIPT" ]; then
+ WPA_SUP_OPTIONS="-W -B -P $WPA_SUP_PIDFILE -i $WPA_IFACE"
+ wpa_msg verbose "wait for wpa_cli to attach"
+ else
+ wpa_msg stderr "action script \"$WPA_ACTION_SCRIPT\" not executable"
+ return 1
+ fi
+ else
+ WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $WPA_IFACE"
+ fi
+
+ if [ -n "$IF_WPA_BRIDGE" ]; then
+ WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -b $IF_WPA_BRIDGE"
+ wpa_msg verbose "wpa-bridge $IF_WPA_BRIDGE"
+ fi
+
+ if [ -n "$IF_WPA_DRIVER" ]; then
+ WPA_SUP_DRIVER="$IF_WPA_DRIVER"
+ wpa_msg verbose "wpa-driver $WPA_SUP_DRIVER"
+ else
+ WPA_SUP_DRIVER="wext"
+ wpa_msg verbose "using default driver type: wpa-driver $WPA_SUP_DRIVER"
+ fi
+
+ wpa_msg verbose "$WPA_SUP_BIN $WPA_SUP_OPTIONS -D $WPA_SUP_DRIVER $WPA_SUP_CONF"
+
+ start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
+ --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
+ -- $WPA_SUP_OPTIONS -D $WPA_SUP_DRIVER $WPA_SUP_CONF
+
+ if [ "$?" != "0" ]; then
+ wpa_msg stderr "$WPA_SUP_BIN daemon failed to start"
+ return 1
+ fi
+
+ local WPA_SOCKET_WAIT MAX_WPA_SOCKET_WAIT
+ WPA_SOCKET_WAIT="0"
+ MAX_WPA_SOCKET_WAIT="5"
+ until [ -S "$WPA_CTRL_DIR/$WPA_IFACE" ]; do
+ if [ "$WPA_SOCKET_WAIT" -ge "$MAX_WPA_SOCKET_WAIT" ]; then
+ wpa_msg stderr "ctrl_interface socket not found at $WPA_CTRL_DIR/$WPA_IFACE"
+ return 1
+ else
+ wpa_msg verbose "waiting for \"$WPA_CTRL_DIR/$WPA_IFACE\": $WPA_SOCKET_WAIT (max. $MAX_WPA_SOCKET_WAIT)"
+ fi
+
+ WPA_SOCKET_WAIT=$(($WPA_SOCKET_WAIT + 1))
+ sleep 1
+ done
+
+ wpa_msg verbose "ctrl_interface socket located at $WPA_CTRL_DIR/$WPA_IFACE"
+ else
+ wpa_msg stderr "init_wpa_supplicant() called without WPA_SUP_CONF"
+ return 1
+ fi
+}
+
+#####################################################################
+## stop wpa_supplicant process
+# Kill wpa_supplicant via start-stop-daemon, given the location of
+# the pidfile or ctrl_interface socket path and interface name
+#
+kill_wpa_supplicant () {
+ if test_wpa_supplicant; then
+
+ wpa_msg verbose "terminating $WPA_SUP_PNAME daemon via pidfile $WPA_SUP_PIDFILE"
+
+ start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \
+ --exec $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE
+
+ if [ -f "$WPA_SUP_PIDFILE" ]; then
+ rm -f "$WPA_SUP_PIDFILE"
+ fi
+ elif [ -S "$WPA_CTRL_DIR/$WPA_IFACE" ]; then
+
+ wpa_msg action "terminating via ctrl_interface socket $WPA_CTRL_DIR/$WPA_IFACE"
+
+ wpa_cli terminate >$TO_NULL
+
+ if [ -S "$WPA_CTRL_DIR/$WPA_IFACE" ]; then
+ rm -f "$WPA_CTRL_DIR/$WPA_IFACE"
+ fi
+ fi
+}
+
+#####################################################################
+## reload wpa_supplicant process
+# Sending a HUP signal causes wpa_supplicant to reparse its
+# configuration file
+#
+reload_wpa_supplicant () {
+ if test_wpa_supplicant; then
+ wpa_msg verbose "reloading wpa_supplicant configuration file via HUP signal"
+ start-stop-daemon --stop --signal HUP \
+ --name "$WPA_SUP_PNAME" --pidfile "$WPA_SUP_PIDFILE"
+ else
+ wpa_msg verbose "cannot $WPA_ACTION, $WPA_SUP_PIDFILE does not exist"
+ fi
+}
+
+#####################################################################
+## daemonize wpa_cli and action script
+# If environment variable WPA_ACTION_SCRIPT is present, wpa_cli will
+# be spawned via start-stop-daemon
+#
+# Required options:
+# -a action script => wpa_action
+# -P process ID file
+# -B background process
+#
+init_wpa_cli () {
+ if [ -n "$WPA_ACTION_SCRIPT" ]; then
+ local WPA_CLI_OPTIONS
+ WPA_CLI_OPTIONS="-B -P $WPA_CLI_PIDFILE -i $WPA_IFACE"
+
+ wpa_msg verbose "$WPA_CLI_BIN $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a $WPA_ACTION_SCRIPT"
+
+ start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
+ --name $WPA_CLI_PNAME --startas $WPA_CLI_BIN --pidfile $WPA_CLI_PIDFILE \
+ -- $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a $WPA_ACTION_SCRIPT
+
+ if [ "$?" != "0" ]; then
+ wpa_msg stderr "$WPA_CLI_BIN daemon failed to start"
+ return 1
+ fi
+ fi
+}
+
+#####################################################################
+## stop wpa_cli process
+# Kill wpa_cli via start-stop-daemon, given the location of the
+# pidfile
+#
+kill_wpa_cli () {
+ if test_wpa_cli; then
+
+ wpa_msg verbose "terminating $WPA_CLI_PNAME daemon via pidfile $WPA_CLI_PIDFILE"
+
+ start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \
+ --exec $WPA_CLI_BIN --pidfile $WPA_CLI_PIDFILE
+
+ if [ -f "$WPA_CLI_PIDFILE" ]; then
+ rm -f "$WPA_CLI_PIDFILE"
+ fi
+ fi
+}
+
+#####################################################################
+## higher level wpa_cli wrapper for variable and set_network commands
+# wpa_cli_do <value> <type> <variable> [set_network variable] <desc>
+#
+# $1 envorinment variable
+# $2 data type of variable {raw|ascii}
+# $3 wpa_cli variable, if $3 is set_network, shift and take
+# set_network subvariable
+# $4 wpa-* string as it would appear in interfaces file, enhances
+# verbose messages
+#
+wpa_cli_do () {
+ if [ -z "$1" ]; then
+ return 0
+ fi
+
+ local WPACLISET_VALUE WPACLISET_VARIABLE WPACLISET_DESC
+
+ case "$2" in
+ ascii)
+ # Double quote
+ WPACLISET_VALUE="\"$1\""
+ ;;
+ raw|*)
+ # Provide raw value
+ WPACLISET_VALUE="$1"
+ ;;
+ esac
+
+ case "$3" in
+ set_network)
+ if [ -z "$WPA_ID" ]; then
+ return 1
+ fi
+ shift
+ WPACLISET_VARIABLE="set_network $WPA_ID $3"
+ ;;
+ *)
+ WPACLISET_VARIABLE="$3"
+ ;;
+ esac
+
+ case "$4" in
+ *-psk|*-passphrase|*-passwd*|*-wep-key*)
+ WPACLISET_DESC="$4 *****"
+ ;;
+ *)
+ WPACLISET_DESC="$4 $WPACLISET_VALUE"
+ ;;
+ esac
+
+ wpa_msg action "$WPACLISET_DESC"
+
+ wpa_cli $WPACLISET_VARIABLE "$WPACLISET_VALUE" >$TO_NULL
+}
+
+#####################################################################
+## check value data type in plaintext or hex
+# returns 0 if input consists of hexadecimal digits only, 1 otherwise
+#
+ishex () {
+ if [ -z "$1" ]; then
+ return 0
+ fi
+
+ case "$1" in
+ *[!0-9a-fA-F]*)
+ # plaintext
+ return 1
+ ;;
+ *)
+ # hexadecimal
+ return 0
+ ;;
+ esac
+}
+
+#####################################################################
+## sanity check and set psk|passphrase
+# Warn about strange psk|passphrase values
+#
+# $1 psk or passphrase value
+#
+# If psk is surrounded by quotes strip them.
+#
+# If psk contains all hexadecimal characters and string length is 64:
+# is 256bit hexadecimal
+# else:
+# is plaintext
+#
+# plaintext passphrases must be 8 - 63 characters in length
+# 256-bit hexadecimal key must be 64 characters in length
+#
+wpa_key_check_and_set () {
+ if [ -z "$1" ]; then
+ return 0
+ fi
+
+ local KEY KEY_TYPE
+
+ case "$1" in
+ '"'*'"')
+ # Strip surrounding quotation marks
+ KEY=$(echo -n "$1" | sed 's/^"//;s/"$//')
+ ;;
+ *)
+ KEY="$1"
+ ;;
+ esac
+
+ if ishex "$KEY" && [ "${#KEY}" -eq "64" ]; then
+ KEY_TYPE="raw"
+ else
+ KEY_TYPE="ascii"
+ if [ "${#KEY}" -lt "8" ] || [ "${#KEY}" -gt "63" ]; then
+ wpa_msg stderr \
+ "plaintext or ascii wpa-psk has ${#KEY} characters, it must have between 8 and 63"
+ wpa_msg stderr \
+ "if wpa-psk truly is a 256-bit hexadecimal key, it must have 64 characters"
+ fi
+ fi
+
+ wpa_cli_do "$KEY" "$KEY_TYPE" \
+ set_network psk wpa-psk
+}
+
+#####################################################################
+## formulate a usable configuration from interfaces(5) wpa- lines
+# A series of wpa_cli commands corresponding to environment variables
+# created as a result of wpa- lines in an interfaces stanza.
+#
+# NB: no-act when roaming daemon is used (to avoid prematurely
+# attaching to ctrl_interface socket)
+#
+conf_wpa_supplicant () {
+ if [ -n "$WPA_ACTION_SCRIPT" ]; then
+ return 0
+ fi
+
+ if [ "$IF_WPA_DRIVER" = "wired" ]; then
+ IF_WPA_AP_SCAN="0"
+ wpa_msg verbose "forcing ap_scan=0 (required for wired IEEE8021X auth)"
+ fi
+
+ if [ -n "$IF_WPA_ESSID" ]; then
+ # #403316, be similar to wireless tools
+ IF_WPA_SSID="$IF_WPA_ESSID"
+ fi
+
+ wpa_cli_do "$IF_WPA_AP_SCAN" raw \
+ ap_scan wpa-ap-scan
+
+ wpa_cli_do "$IF_WPA_PREAUTHENTICATE" raw \
+ preauthenticate wpa-preauthenticate
+
+ if [ -n "$IF_WPA_SSID" ] || [ "$IF_WPA_DRIVER" = "wired" ]; then
+
+ case "$IF_WPA_SSID" in
+ '"'*'"')
+ IF_WPA_SSID=$(echo -n "$IF_WPA_SSID" | sed 's/^"//;s/"$//')
+ ;;
+ *)
+ ;;
+ esac
+
+ WPA_ID=$(wpa_cli add_network)
+
+ wpa_msg verbose "configuring network block -- $WPA_ID"
+
+ wpa_cli_do "$IF_WPA_SSID" ascii \
+ set_network ssid wpa-ssid
+
+ wpa_cli_do "$IF_WPA_PRIORITY" raw \
+ set_network priority wpa-priority
+
+ wpa_cli_do "$IF_WPA_BSSID" raw \
+ set_network bssid wpa-bssid
+
+ if [ -s "$IF_WPA_PSK_FILE" ]; then
+ IF_WPA_PSK=$(cat "$IF_WPA_PSK_FILE")
+ fi
+
+ # remain compat with wpa-passphrase-file
+ if [ -s "$IF_WPA_PASSPHRASE_FILE" ]; then
+ IF_WPA_PSK=$(cat "$IF_WPA_PASSPHRASE_FILE")
+ fi
+
+ # remain compat with wpa-passphrase
+ if [ -n "$IF_WPA_PASSPHRASE" ]; then
+ IF_WPA_PSK="$IF_WPA_PASSPHRASE"
+ fi
+
+ if [ -n "$IF_WPA_PSK" ]; then
+ wpa_key_check_and_set "$IF_WPA_PSK"
+ fi
+
+ wpa_cli_do "$IF_WPA_PAIRWISE" raw \
+ set_network pairwise wpa-pairwise
+
+ wpa_cli_do "$IF_WPA_GROUP" raw \
+ set_network group wpa-group
+
+ wpa_cli_do "$IF_WPA_MODE" raw \
+ set_network mode wpa-mode
+
+ wpa_cli_do "$IF_WPA_FREQUENCY" raw \
+ set_network frequency wpa-frequency
+
+ wpa_cli_do "$IF_WPA_KEY_MGMT" raw \
+ set_network key_mgmt wpa-key-mgmt
+
+ wpa_cli_do "$IF_WPA_PROTO" raw \
+ set_network proto wpa-proto
+
+ wpa_cli_do "$IF_WPA_AUTH_ALG" raw \
+ set_network auth_alg wpa-auth-alg
+
+ wpa_cli_do "$IF_WPA_SCAN_SSID" raw \
+ set_network scan_ssid wpa-scan-ssid
+
+ wpa_cli_do "$IF_WPA_IDENTITY" ascii \
+ set_network identity wpa-identity
+
+ wpa_cli_do "$IF_WPA_ANONYMOUS_IDENTITY" ascii \
+ set_network anonymous_identity wpa-anonymous-identity
+
+ wpa_cli_do "$IF_WPA_EAP" raw \
+ set_network eap wpa-eap
+
+ wpa_cli_do "$IF_WPA_EAPPSK" raw \
+ set_network eappsk wpa-eappsk
+
+ wpa_cli_do "$IF_WPA_NAI" ascii \
+ set_network nai wpa-nai
+
+ wpa_cli_do "$IF_WPA_PASSWORD" ascii \
+ set_network password wpa-password
+
+ wpa_cli_do "$IF_WPA_CA_CERT" ascii \
+ set_network ca_cert wpa-ca-cert
+
+ wpa_cli_do "$IF_WPA_CA_PATH" ascii \
+ set_network ca_path wpa-ca-path
+
+ wpa_cli_do "$IF_WPA_CLIENT_CERT" ascii \
+ set_network client_cert wpa-client-cert
+
+ wpa_cli_do "$IF_WPA_PRIVATE_KEY" ascii \
+ set_network private_key wpa-private-key
+
+ wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD" ascii \
+ set_network private_key_passwd wpa-private-key-passwd
+
+ wpa_cli_do "$IF_WPA_DH_FILE" ascii \
+ set_network dh_file wpa-dh-file
+
+ wpa_cli_do "$IF_WPA_SUBJECT_MATCH" ascii \
+ set_network subject_match wpa-subject-match
+
+ wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH" ascii \
+ set_network altsubject_match wpa-altsubject-match
+
+ wpa_cli_do "$IF_WPA_CA_CERT2" ascii \
+ set_network ca_cert2 wpa-ca-cert2
+
+ wpa_cli_do "$IF_WPA_CA_PATH2" ascii \
+ set_network ca_path2 wpa-ca-path2
+
+ wpa_cli_do "$IF_WPA_CLIENT_CERT2" ascii \
+ set_network client_cert2 wpa-client-cert2
+
+ wpa_cli_do "$IF_WPA_PRIVATE_KEY2" ascii \
+ set_network private_key2 wpa-private-key2
+
+ wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD2" ascii \
+ set_network private_key_passwd2 wpa-private-key-passwd2
+
+ wpa_cli_do "$IF_WPA_DH_FILE2" ascii \
+ set_network dh_file2 wpa-dh-file2
+
+ wpa_cli_do "$IF_WPA_SUBJECT_MATCH2" ascii \
+ set_network subject_match2 wpa-subject-match2
+
+ wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH2" ascii \
+ set_network altsubject_match2 wpa-altsubject-match2
+
+ wpa_cli_do "$IF_WPA_EAP_METHODS" raw \
+ set_network eap_methods wpa-eap-methods
+
+ wpa_cli_do "$IF_WPA_PHASE1" ascii \
+ set_network phase1 wpa-phase1
+
+ wpa_cli_do "$IF_WPA_PHASE2" ascii \
+ set_network phase2 wpa-phase2
+
+ wpa_cli_do "$IF_WPA_PCSC" raw \
+ set_network pcsc wpa-pcsc
+
+ wpa_cli_do "$IF_WPA_PIN" ascii \
+ set_network pin wpa-pin
+
+ wpa_cli_do "$IF_WPA_ENGINE" raw \
+ set_network engine wpa-engine
+
+ wpa_cli_do "$IF_WPA_ENGINE_ID" ascii \
+ set_network engine_id wpa-engine-id
+
+ wpa_cli_do "$IF_WPA_KEY_ID" ascii \
+ set_network key_id wpa-key-id
+
+ wpa_cli_do "$IF_WPA_EAPOL_FLAGS" raw \
+ set_network eapol_flags wpa-eapol-flags
+
+ wpa_cli_do "$IF_WPA_WEP_KEY0" raw \
+ set_network wep_key0 wpa-wep-key0
+
+ wpa_cli_do "$IF_WPA_WEP_KEY1" raw \
+ set_network wep_key1 wpa-wep-key1
+
+ wpa_cli_do "$IF_WPA_WEP_KEY2" raw \
+ set_network wep_key2 wpa-wep-key2
+
+ wpa_cli_do "$IF_WPA_WEP_KEY3" raw \
+ set_network wep_key3 wpa-wep-key3
+
+ wpa_cli_do "$IF_WPA_WEP_TX_KEYIDX" raw \
+ set_network wep_tx_keyidx wpa-wep-tx-keyidx
+
+ wpa_cli_do "$IF_WPA_PROACTIVE_KEY_CACHING" raw \
+ set_network proactive_key_caching wpa-proactive-key-caching
+
+ wpa_cli_do "$IF_WPA_PAC_FILE" ascii \
+ set_network pac_file wpa-pac-file
+
+ wpa_cli_do "$IF_WPA_MODE" raw \
+ set_network mode wpa-mode
+
+ wpa_cli_do "$IF_WPA_PEERKEY" raw \
+ set_network peerkey wpa-peerkey
+
+ wpa_cli_do "$IF_FRAGMENT_SIZE" raw \
+ set_network fragment_size wpa-fragment-size
+
+ wpa_cli_do "$IF_WPA_ID_STR" ascii \
+ set_network id_str wpa-id-str
+
+ wpa_cli_do "$WPA_ID" raw \
+ enable_network "enabling network block"
+ fi
+}
+
+#####################################################################
+## wpa_action basic logging
+# Log actions to file, test to see if it is writeable first
+#
+wpa_log_init () {
+ if touch "$WPA_CLI_LOGFILE" 2>/dev/null; then
+ exec >> "$WPA_CLI_LOGFILE" 2>&1
+ fi
+}
+
+# log timestamp and wpa_action arguments
+wpa_log_action () {
+ echo "########## $(date +"%H:%M:%S %Y-%m-%d") ##########"
+ echo "IFACE=$WPA_IFACE ACTION=$WPA_ACTION"
+}
+
+# log wpa_cli environment variables
+wpa_log_environment () {
+ echo "WPA_ID=$WPA_ID WPA_ID_STR=$WPA_ID_STR"
+ echo "WPA_CTRL_DIR=$WPA_CTRL_DIR"
+}
+
+#####################################################################
+## hysteresis checking
+# Networking tools such as dhcp clients used with ifupdown can
+# synthesize artificial ACTION events, particuarly just after a
+# DISCONNECTED/CONNECTED events are experienced in quick succession.
+# This can lead to infinite event loops, and in extreme cases has the
+# potential to cause system instability.
+#
+wpa_hysteresis_event () {
+ echo "$(date +%s)" > "$WPA_CLI_TIMESTAMP"
+}
+
+wpa_hysteresis_check () {
+ if [ -f "$WPA_CLI_TIMESTAMP" ]; then
+ local TIME TIMESTAMP TIMEWAIT
+ TIME=$(date +%s)
+ # current time minus 4 second event buffer
+ TIMEWAIT=$(($TIME-4))
+ # get time of last event
+ TIMESTAMP=$(cat $WPA_CLI_TIMESTAMP)
+ # compare values, allowing new action to be processed
+ # only if last action was more than 4 seconds ago
+ if [ "$TIMEWAIT" -le "$TIMESTAMP" ]; then
+ echo "Ignoring $WPA_ACTION event, too soon after previous event"
+ return 1
+ fi
+ fi
+
+ return 0
+}
+
+#####################################################################
+## identify ifupdown files
+# Identify ifupdown core files, so that state of the interface can be
+# checked. This is the weakest part of the wpa_action roaming scheme,
+# it would be _much_ better if stateless ifupdown capabilities were
+# a reality.
+#
+ifupdown_check () {
+ if [ -e /etc/network/interfaces ]; then
+ INTERFACES_FILE="/etc/network/interfaces"
+ else
+ echo "Cannot locate ifupdown's \"interfaces\" file, $WPA_IFACE will not be configured"
+ return 1
+ fi
+
+ if [ -e /etc/network/run/ifstate ]; then
+ # debian's ifupdown
+ IFSTATE_FILE="/etc/network/run/ifstate"
+ elif [ -e /var/run/network/ifstate ]; then
+ # ubuntu's
+ IFSTATE_FILE="/var/run/network/ifstate"
+ else
+ echo "Cannot locate ifupdown's \"ifstate\" file, $WPA_IFACE will not be configured"
+ return 1
+ fi
+
+ return 0
+}
+
+#####################################################################
+## apply mapping logic and ifup logical interface
+# Apply mapping logic via id_str or external mapping script, check
+# state of IFACE with respect to ifupdown and ifup logical interaface
+#
+ifup () {
+ local WPA_LOGICAL_IFACE
+
+ if [ -z "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -n "$WPA_ID_STR" ]; then
+ WPA_LOGICAL_IFACE="$WPA_ID_STR"
+ echo "Mapping logical interface via id_str: $WPA_LOGICAL_IFACE"
+ fi
+
+ if [ -z "$WPA_LOGICAL_IFACE" ] && [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then
+ echo "Mapping logical interface via wpa-mapping-script: $IF_WPA_MAPPING_SCRIPT"
+
+ local WPA_MAP_STDIN
+
+ WPA_MAP_STDIN=$(set | sed --quiet 's/^\(IF_WPA_MAP[0-9]*\)=.*/echo \$\1/p')
+
+ if [ -n "$WPA_MAP_STDIN" ]; then
+ WPA_LOGICAL_IFACE=$(eval "$WPA_MAP_STDIN" | "$IF_WPA_MAPPING_SCRIPT" "$WPA_IFACE")
+ else
+ WPA_LOGICAL_IFACE=$("$IF_WPA_MAPPING_SCRIPT" "$WPA_IFACE")
+ fi
+
+ if [ -n "$WPA_LOGICAL_IFACE" ]; then
+ echo "Mapping script result: $WPA_LOGICAL_IFACE"
+ else
+ echo "Mapping script failed."
+ fi
+ fi
+
+ if [ -z "$WPA_LOGICAL_IFACE" ]; then
+ if [ -n "$IF_WPA_ROAM_DEFAULT_IFACE" ]; then
+ WPA_LOGICAL_IFACE="$IF_WPA_ROAM_DEFAULT_IFACE"
+ echo "Using wpa-roam-default-iface: $WPA_LOGICAL_IFACE"
+ else
+ WPA_LOGICAL_IFACE="default"
+ echo "Using fallback logical interface: $WPA_LOGICAL_IFACE"
+ fi
+ fi
+
+ if [ -n "$WPA_LOGICAL_IFACE" ]; then
+ if egrep -q "^iface[[:space:]]+$WPA_LOGICAL_IFACE[[:space:]]+inet" "$INTERFACES_FILE"; then
+
+ echo "ifup $WPA_IFACE=$WPA_LOGICAL_IFACE"
+
+ if grep --quiet "^$WPA_IFACE=$WPA_IFACE" "$IFSTATE_FILE"; then
+ # Force settings over the unconfigured "master" IFACE
+ /sbin/ifup --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"
+ else
+ /sbin/ifup "$WPA_IFACE=$WPA_LOGICAL_IFACE"
+ fi
+ else
+ echo "No network defined for \"$WPA_LOGICAL_IFACE\" in \"$INTERFACES_FILE\""
+ fi
+ else
+ echo "No suitable logical interface mapping for ifupdown to configure"
+ fi
+}
+
+#####################################################################
+## ifdown IFACE
+# Check IFACE state and ifdown as requested.
+#
+ifdown () {
+ if grep --quiet "^$WPA_IFACE" "$IFSTATE_FILE"; then
+ echo "ifdown $WPA_IFACE"
+ /sbin/ifdown "$WPA_IFACE"
+ else
+ echo "Ignoring request to take \"$WPA_IFACE\" down, it is not up"
+ fi
+}
+
+#####################################################################
+## keep IFACE scanning
+# After ifdown, the IFACE may be left "down", and inhibits
+# wpa_supplicant's ability to continue roaming.
+#
+# NB: use iproute if present, flushing the IFACE first
+#
+if_post_down_up () {
+ if [ -x /sbin/ip ]; then
+ /sbin/ip addr flush dev "$WPA_IFACE" 2>/dev/null
+ /sbin/ip link set "$WPA_IFACE" up
+ else
+ /sbin/ifconfig "$WPA_IFACE" up
+ fi
+}
diff --git a/packages/wpa-supplicant/files/ifupdown.sh b/packages/wpa-supplicant/files/ifupdown.sh
new file mode 100755
index 0000000000..71486f7648
--- /dev/null
+++ b/packages/wpa-supplicant/files/ifupdown.sh
@@ -0,0 +1,132 @@
+#!/bin/sh
+
+# Copyright (C) 2006 Debian/Ubuntu wpasupplicant Maintainers
+# <pkg-wpa-devel@lists.alioth.debian.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# On Debian GNU/Linux systems, the text of the GPL license can be
+# found in /usr/share/common-licenses/GPL.
+
+if [ -n "$IF_WPA_MAINT_DEBUG" ]; then
+ set -x
+fi
+
+# quit if we're called for the loopback
+if [ "$IFACE" = lo ]; then
+ exit 0
+fi
+
+# allow wpa_supplicant interface to be specified via wpa-iface
+# useful for starting wpa_supplicant on one interface of a bridge
+if [ -n "$IF_WPA_IFACE" ]; then
+ WPA_IFACE="$IF_WPA_IFACE"
+else
+ WPA_IFACE="$IFACE"
+fi
+
+# source functions
+if [ -f /etc/wpa_supplicant/functions.sh ]; then
+ . /etc/wpa_supplicant/functions.sh
+else
+ exit 0
+fi
+
+# quit if executables are not installed
+if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
+ exit 0
+fi
+
+# quit if wpa_action is active
+if test_wpa_cli; then
+ exit 0
+fi
+
+#echo "Initial WPA Checks Pass"
+
+# preliminary sanity checks for roaming daemon
+if [ -n "$IF_WPA_ROAM" ]; then
+ if [ "$METHOD" != "manual" ]; then
+ wpa_msg stderr "wpa-roam can only be used with the \"manual\" inet METHOD"
+ exit 1
+ fi
+ if [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then
+ if ! type "$IF_WPA_MAPPING_SCRIPT" >/dev/null; then
+ wpa_msg stderr "wpa-mapping-script \"$IF_WPA_MAPPING_SCRIPT\" is not valid"
+ exit 1
+ fi
+ fi
+ if [ -n "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -z "$IF_WPA_MAPPING_SCRIPT" ]; then
+ wpa_msg stderr "\"wpa-mapping-script-priority 1\" is invalid without a wpa-mapping-script"
+ exit 1
+ fi
+ IF_WPA_CONF="$IF_WPA_ROAM"
+ WPA_ACTION_SCRIPT="/sbin/wpa_action"
+fi
+
+# master function; determines if ifupdown.sh should do something or not
+if [ -n "$IF_WPA_CONF" ]; then
+ if [ ! -s "$IF_WPA_CONF" ]; then
+ wpa_msg stderr "cannot read contents of $IF_WPA_CONF"
+ exit 1
+ fi
+ WPA_SUP_CONF_CTRL_DIR=$(sed --quiet \
+ 's/[[:space:]]*#.*//g;s/[[:space:]]\+.*$//g;s/^\(ctrl_interface\|DIR\)=\(.*\)/\2/p' "$IF_WPA_CONF")
+ if [ -n "$WPA_SUP_CONF_CTRL_DIR" ]; then
+ WPA_CTRL_DIR="$WPA_SUP_CONF_CTRL_DIR"
+ fi
+ WPA_SUP_CONF="-c $IF_WPA_CONF -C $WPA_CTRL_DIR"
+elif set | grep -q "^IF_WPA"; then
+ WPA_SUP_CONF="-C $WPA_CTRL_DIR"
+else
+ exit 0
+fi
+
+case "$MODE" in
+ start)
+ PHASE="pre-up"
+ echo "WPA: Configuring Interface"
+ case "$PHASE" in
+ pre-up)
+ kill_wpa_supplicant
+ init_wpa_supplicant || echo "FAILED"
+ conf_wpa_supplicant || { kill_wpa_supplicant; exit 1; }
+ ;;
+ post-up)
+ init_wpa_cli || { kill_wpa_supplicant; exit 1; }
+ ;;
+ esac
+ ;;
+
+ stop)
+ PHASE="post-down"
+ echo "WPA: Terminating"
+ case "$PHASE" in
+ pre-down)
+ kill_wpa_cli
+ ;;
+ post-down)
+ kill_wpa_supplicant
+ ;;
+ *)
+ wpa_msg stderr "unknown phase: \"$PHASE\""
+ exit 1
+ ;;
+ esac
+ ;;
+
+ *)
+ wpa_msg stderr "unknown mode: \"$MODE\""
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/wpa-supplicant/wpa-supplicant-0.5.inc b/packages/wpa-supplicant/wpa-supplicant-0.5.inc
index 28f355c612..b5e53e3f56 100644
--- a/packages/wpa-supplicant/wpa-supplicant-0.5.inc
+++ b/packages/wpa-supplicant/wpa-supplicant-0.5.inc
@@ -12,24 +12,18 @@ DEFAULT_PREFERENCE = "-2"
SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
file://defconfig-gnutls \
- file://init.sh \
file://gnutlsfix.patch;patch=1 \
- file://defaults-sane \
- file://wpa-supplicant.sh \
- file://wpa_supplicant.conf \
- file://wpa_supplicant.conf-sane"
+ file://ifupdown.sh \
+ file://functions.sh"
S = "${WORKDIR}/wpa_supplicant-${PV}"
-PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
+PACKAGES_prepend = "wpa-supplicant-passphrase "
FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase"
-FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli"
-RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
+RREPLACES = "wpa-supplicant-cli"
-INITSCRIPT_NAME = "wpa"
-INITSCRIPT_PARAMS = "defaults 10"
-inherit update-rc.d
+RRECOMMENDS_${PN} = "wpa-supplicant-passphrase"
export HAS_PCI = "${@base_contains('COMBINED_FEATURES', 'pci', 1, 0,d)}"
@@ -55,20 +49,16 @@ do_install () {
install -d ${D}${localstatedir}/run/wpa_supplicant
install -d ${D}${docdir}/wpa_supplicant
- install -m 644 README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
-
- install -d ${D}${sysconfdir}/init.d
- install -m 700 ${WORKDIR}/init.sh ${D}${sysconfdir}/init.d/wpa
-
- install -d ${D}${sysconfdir}/default
- install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa
- install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
+ install -m 644 README ${D}${docdir}/wpa_supplicant
install -d ${D}${sysconfdir}/network/if-pre-up.d/
install -d ${D}${sysconfdir}/network/if-post-down.d/
install -d ${D}${sysconfdir}/network/if-down.d/
- install -m 644 ${WORKDIR}/wpa_supplicant.conf ${D}${sysconfdir}
- install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant
- cd ${D}${sysconfdir}/network/ && \
- ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant
+
+ install -d ${D}${sysconfdir}/wpa_supplicant
+ install -m 755 ${WORKDIR}/ifupdown.sh ${D}${sysconfdir}/wpa_supplicant/
+ install -m 755 ${WORKDIR}/functions.sh ${D}${sysconfdir}/wpa_supplicant
+
+ ln -s /etc/wpa_supplicant/ifupdown.sh ${D}${sysconfdir}/network/if-pre-up.d/wpasupplicant
+ ln -s /etc/wpa_supplicant/ifupdown.sh ${D}${sysconfdir}/network/if-post-down.d/wpasupplicant
}
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
index 67a5b99b0f..ce744b3fe7 100644
--- a/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
+++ b/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
@@ -1,3 +1,3 @@
require wpa-supplicant-0.5.inc
-PR = "r1"
+PR = "r3"
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb
index 6594bbfdbe..2aa871bb74 100644
--- a/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb
+++ b/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb
@@ -1 +1,3 @@
require wpa-supplicant-0.5.inc
+
+PR = "r1" \ No newline at end of file
diff --git a/packages/xorg-app/xrandr/.mtn2git_empty b/packages/xorg-app/xrandr/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-app/xrandr/.mtn2git_empty
diff --git a/packages/xorg-app/xrandr/resolve_symbol_clash.patch b/packages/xorg-app/xrandr/resolve_symbol_clash.patch
new file mode 100644
index 0000000000..80d8960c94
--- /dev/null
+++ b/packages/xorg-app/xrandr/resolve_symbol_clash.patch
@@ -0,0 +1,35 @@
+---
+ xrandr.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: xrandr-1.2.0/xrandr.c
+===================================================================
+--- xrandr-1.2.0.orig/xrandr.c 2007-02-19 05:26:50.000000000 +0000
++++ xrandr-1.2.0/xrandr.c 2007-05-28 19:22:30.000000000 +0100
+@@ -163,7 +163,7 @@ reflection_name (Rotation rotation)
+
+ #if HAS_RANDR_1_2
+ typedef enum _policy {
+- clone, extend
++ policy_clone, extend
+ } policy_t;
+
+ typedef enum _relation {
+@@ -1398,7 +1398,7 @@ main (int argc, char **argv)
+ #if HAS_RANDR_1_2
+ output_t *output = NULL;
+ char *crtc;
+- policy_t policy = clone;
++ policy_t policy = policy_clone;
+ Bool setit_1_2 = False;
+ Bool query_1_2 = False;
+ Bool query_1 = False;
+@@ -1634,7 +1634,7 @@ main (int argc, char **argv)
+ continue;
+ }
+ if (!strcmp ("--clone", argv[i])) {
+- policy = clone;
++ policy = policy_clone;
+ setit_1_2 = True;
+ continue;
+ }
diff --git a/packages/xorg-app/xrandr_1.2.0.bb b/packages/xorg-app/xrandr_1.2.0.bb
index 57bd51fd65..f876ba6b47 100644
--- a/packages/xorg-app/xrandr_1.2.0.bb
+++ b/packages/xorg-app/xrandr_1.2.0.bb
@@ -5,4 +5,6 @@ LICENSE= "BSD-X"
DEPENDS += " libxrandr libxrender virtual/libx11"
PE = "1"
+PR = "r1"
+SRC_URI += "file://resolve_symbol_clash.patch;patch=1" \ No newline at end of file
diff --git a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch b/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
deleted file mode 100644
index f43d38065e..0000000000
--- a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- X11/src/ErrDes.c.orig 2005-09-03 16:15:48 +0200
-+++ X11/src/ErrDes.c 2005-09-03 16:16:03 +0200
-@@ -56,7 +56,7 @@
- #include <stdio.h>
-
- #ifndef ERRORDB
--#define ERRORDB "/usr/lib/X11/XErrorDB"
-+#define ERRORDB "/usr/share/X11/XErrorDB"
- #endif
-
- /*
---- X11/src/StrKeysym.c.orig 2005-09-03 16:41:18 +0200
-+++ X11/src/StrKeysym.c 2005-09-03 16:41:33 +0200
-@@ -36,7 +36,7 @@
- #include "Key.h"
-
- #ifndef KEYSYMDB
--#define KEYSYMDB "/usr/lib/X11/XKeysymDB"
-+#define KEYSYMDB "/usr/share/X11/XKeysymDB"
- #endif
-
- static Bool initialized;
diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc
index 634d6eb835..7bcd483c24 100644
--- a/packages/xorg-xserver/xorg-xserver-common.inc
+++ b/packages/xorg-xserver/xorg-xserver-common.inc
@@ -42,6 +42,15 @@ FILES_${PN}-doc += "${libdir}/X11/doc /usr/share/X11/xkb/compiled/README.compile
FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug ${libdir}/xorg/modules/*/.debug"
FILES_${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la"
+PACKAGES =+ "${PN}-multimedia ${PN}-configtools"
+
+FILES_${PN}-multimedia = "${libdir}/xorg/modules/multimedia/*.so"
+FILES_${PN}-configtools = "${bindir}/xorgconfig ${bindir}/xorgcfg"
+
+do_configure_prepend() {
+ sed -i -e s:/usr/include/drm:${STAGING_INCDIR}/drm:g hw/xfree86/os-support/linux/Makefile.am
+}
+
do_stage() {
autotools_stage_all
}
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
new file mode 100644
index 0000000000..e128123419
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
@@ -0,0 +1,194 @@
+Hello all,
+
+The attached patch provides a fast path for the case of performing
+a8b8g8r8 non-premultiplied (aka the GdkPixbuf format) OVER r5g6b5 via
+a new function called fbCompositeSrc_8888RevNPx0565. Basically, it's
+just an adaptation of the previous work I talked about here:
+
+http://lists.freedesktop.org/archives/xorg/2007-April/023763.html
+
+On my Nokia N800, I get a 3.4x speedup when running this little gdk
+benchmark program:
+
+http://amelang.net/composite_pixbuf.c
+
+The source file is kinda large (4.5MB) due to an embedded GdkPixbuf.
+
+Dan Amelang
+-------------- next part --------------
+From 63bdc0476c09669cabccffe4b35f8f56aff965a5 Mon Sep 17 00:00:00 2001
+From: Dan Amelang <dan at amelang.net>
+Date: Mon, 30 Apr 2007 03:22:52 -0700
+Subject: [PATCH] Implement fbCompositeSrc_8888RevNPx0565
+
+This provides a fast path for the common case of compositing GdkPixmaps
+with r5g6b5 images. On a simple GDK benchmark application, I get a
+3.4x increase in performance on the Nokia N800 (which currently is
+running xserver 1.1.99.3).
+
+All of the optimizations used here are already explained in the following
+post to the Xorg mailing list:
+
+ http://lists.freedesktop.org/archives/xorg/2007-April/023763.html
+---
+ fb/fbpict.c | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 139 insertions(+), 0 deletions(-)
+
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index a735967..3bd57fb 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -781,6 +781,143 @@ fbCompositeSrc_8888x0565 (CARD8 op,
+ fbFinishAccess (pSrc->pDrawable);
+ }
+
++
++#define cvt8888Revto0565(s) ((((s) >> 19) & 0x001f) | \
++ (((s) >> 5) & 0x07e0) | \
++ (((s) << 8) & 0xf800))
++
++#define FbOverU_8888RevNPx565(s, d) \
++ \
++ /* Extract alpha */ \
++ s_a = (s) >> 24; \
++ \
++ /* Extract r8g8b8 color channels */ \
++ s_r = ( (s) & 0xff); \
++ s_g = (((s) >> 8) & 0xff); \
++ s_b = (((s) >> 16) & 0xff); \
++ \
++ /* Extract r5g6b5 color channels */ \
++ d_r = ((d) >> 8) & 0xf8; \
++ d_g = ((d) >> 3) & 0xfc; \
++ d_b = ((d) << 3) & 0xf8; \
++ \
++ /* Use the higher bits of the channel to fill out the bottom */ \
++ d_r |= (d_r >> 5); \
++ d_g |= (d_g >> 6); \
++ d_b |= (d_b >> 5); \
++ \
++ /* Blend */ \
++ d_r = (s_r - d_r) * s_a + (d_r << 8); \
++ d_g = (s_g - d_g) * s_a + (d_g << 8); \
++ d_b = (s_b - d_b) * s_a + (d_b << 8); \
++ \
++ /* Pack result as r5g6b5 */ \
++ (d) = (d_r & 0xf800) | ((d_g & 0xfc00) >> 5) | (d_b >> 11)
++
++void
++fbCompositeSrc_8888RevNPx0565 (FbComposeData *params)
++{
++ CARD16 *dstLine, *dst;
++ CARD32 *srcLine, *src;
++ FbStride dstStride, srcStride;
++ int w, h;
++
++ fbComposeGetStart (params->src, params->xSrc, params->ySrc, CARD32,
++ srcStride, srcLine, 1);
++ fbComposeGetStart (params->dest, params->xDest, params->yDest, CARD16,
++ dstStride, dstLine, 1);
++ h = params->height;
++
++ while (h--)
++ {
++ CARD32 s1, s2, s3, s4;
++ int d_r, d_g, d_b, s_r, s_g, s_b, s_a;
++ CARD32 *dst_2px_wide;
++
++ src = srcLine;
++ srcLine += srcStride;
++ dst_2px_wide = (CARD32 *) dstLine;
++ dstLine += dstStride;
++ w = params->width - 4;
++
++ while (w >= 0)
++ {
++ s1 = *src;
++ s2 = *(src + 1);
++ s3 = *(src + 2);
++ s4 = *(src + 3);
++
++ w -= 4;
++ src += 4;
++
++ /* Check if the next 4 pixels are opaque */
++ if ((s1 & s2 & s3 & s4) > 0xfeffffff)
++ {
++ /* In this case, we just perform a SOURCE for all 4 pixels */
++#if X_BYTE_ORDER == X_BIG_ENDIAN
++ *dst_2px_wide++ = (cvt8888Revto0565 (s1) << 16) |
++ cvt8888Revto0565 (s2);
++ *dst_2px_wide++ = (cvt8888Revto0565 (s3) << 16) |
++ cvt8888Revto0565 (s4);
++#else
++ *dst_2px_wide++ = cvt8888Revto0565 (s1) |
++ (cvt8888Revto0565 (s2) << 16);
++ *dst_2px_wide++ = cvt8888Revto0565 (s3) |
++ (cvt8888Revto0565 (s4) << 16);
++#endif
++ }
++ /* Next, check if the next 4 pixels have any alpha in them at all */
++ else if ((s1 | s2 | s3 | s4) > 0x00ffffff)
++ {
++ /* In which case, we perform OVER on each one of them */
++ CARD32 d1, d2, d3, d4;
++
++#if X_BYTE_ORDER == X_BIG_ENDIAN
++ d1 = (*dst_2px_wide >> 16);
++ d2 = (*dst_2px_wide & 0xffff);
++ FbOverU_8888RevNPx565 (s1, d1);
++ FbOverU_8888RevNPx565 (s2, d2);
++ *dst_2px_wide++ = (d1 << 16) | d2;
++#else
++ d2 = (*dst_2px_wide >> 16);
++ d1 = (*dst_2px_wide & 0xffff);
++ FbOverU_8888RevNPx565 (s1, d1);
++ FbOverU_8888RevNPx565 (s2, d2);
++ *dst_2px_wide++ = d1 | (d2 << 16);
++#endif
++
++#if X_BYTE_ORDER == X_BIG_ENDIAN
++ d3 = (*dst_2px_wide >> 16);
++ d4 = (*dst_2px_wide & 0xffff);
++ FbOverU_8888RevNPx565 (s3, d3);
++ FbOverU_8888RevNPx565 (s4, d4);
++ *dst_2px_wide++ = (d3 << 16) | d4;
++#else
++ d4 = (*dst_2px_wide >> 16);
++ d3 = (*dst_2px_wide & 0xffff);
++ FbOverU_8888RevNPx565 (s3, d3);
++ FbOverU_8888RevNPx565 (s4, d4);
++ *dst_2px_wide++ = d3 | (d4 << 16);
++#endif
++ }
++ else
++ {
++ /* Do nothing, since the source pixels are all transparent */
++ dst_2px_wide += 2;
++ }
++ }
++
++ /* Deal with left over pixels */
++ for (dst = (CARD16 *) dst_2px_wide; w > -4; w--)
++ {
++ CARD32 d = *dst;
++ CARD32 s = *src++;
++ FbOverU_8888RevNPx565 (s, d);
++ *dst++ = d;
++ }
++ }
++}
++
+ void
+ fbCompositeSrcAdd_8000x8000 (CARD8 op,
+ PicturePtr pSrc,
+@@ -1669,7 +1806,9 @@ fbComposite (CARD8 op,
+ #ifdef USE_MMX
+ if (fbHaveMMX())
+ func = fbCompositeSrc_8888RevNPx0565mmx;
++ else
+ #endif
++ func = fbCompositeSrc_8888RevNPx0565;
+ break;
+ default:
+ break;
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/.mtn2git_empty b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/.mtn2git_empty
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch
new file mode 100644
index 0000000000..ccc19139c8
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch
@@ -0,0 +1,39 @@
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac 2007-04-20 03:23:40.000000000 +0200
++++ xorg-server-1.3.0.0/configure.ac 2007-05-09 16:51:34.000000000 +0200
+@@ -520,7 +520,11 @@
+ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
+
+ dnl Core modules for most extensions, et al.
++if test "$KDRIVE" = yes; then
++REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto [kbproto >= 1.0.3]"
++else
+ REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]"
++fi
+ REQUIRED_LIBS="xfont xau fontenc"
+
+ AM_CONDITIONAL(XV, [test "x$XV" = xyes])
+@@ -1603,7 +1607,9 @@
+ AC_SUBST(XKB_COMPILED_DIR)
+
+ dnl and the rest of these are generic, so they're in config.h
++if test ! x"$KDRIVE" = xyes; then
+ AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
++fi
+ AC_DEFINE(XResExtension, 1, [Build XRes extension])
+
+ AC_TRY_COMPILE([
+@@ -1616,10 +1622,12 @@
+
+ AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
+
++if test ! "x$KDRIVE" = xyes ; then
+ dnl xorgconfig CLI configuration utility
+ PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
+ AC_SUBST(XORGCONFIG_DEP_CFLAGS)
+ AC_SUBST(XORGCONFIG_DEP_LIBS)
++fi
+
+ dnl xorgcfg GUI configuration utility
+ AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg],
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch
new file mode 100644
index 0000000000..8ec3a37c78
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch
@@ -0,0 +1,11 @@
+Index: xorg-server-1.2.0/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.2.0.orig/hw/kdrive/Makefile.am 2007-03-28 17:11:38.000000000 +0200
++++ xorg-server-1.2.0/hw/kdrive/Makefile.am 2007-03-28 17:12:28.000000000 +0200
+@@ -1,5 +1,5 @@
+ if KDRIVEFBDEV
+-FBDEV_SUBDIRS = fbdev
++FBDEV_SUBDIRS = fbdev epson
+ endif
+
+ if KDRIVEIMAGEON
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch
new file mode 100644
index 0000000000..9a59530ed3
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch
@@ -0,0 +1,12 @@
+Index: xorg-server-1.2.0/configure.ac
+===================================================================
+--- xorg-server-1.2.0.orig/configure.ac 2007-03-29 13:28:10.000000000 +0200
++++ xorg-server-1.2.0/configure.ac 2007-03-29 13:28:35.000000000 +0200
+@@ -1517,6 +1517,7 @@
+ AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+ fi
+ AC_DEFINE(TSLIB, 1, [Have tslib support])
++ AC_DEFINE(TOUCHSCREEN, 1, [Have touchscreen support])
+ fi
+
+ # damage shadow extension glx (NOTYET) fb mi
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch
new file mode 100644
index 0000000000..717e72f93f
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch
@@ -0,0 +1,101 @@
+---
+ Xext/Makefile.am | 6 ++++++
+ configure.ac | 9 ++++++++-
+ include/kdrive-config.h.in | 3 +++
+ mi/miinitext.c | 6 ++++++
+ 4 files changed, 23 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.3.0.0/mi/miinitext.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/mi/miinitext.c 2007-05-15 16:05:34.000000000 +0100
++++ xorg-server-1.3.0.0/mi/miinitext.c 2007-05-15 16:05:39.000000000 +0100
+@@ -372,6 +372,9 @@ extern void ResExtensionInit(INITARGS);
+ #ifdef DMXEXT
+ extern void DMXExtensionInit(INITARGS);
+ #endif
++#ifdef XCALIBRATE
++extern void XCalibrateExtensionInit(INITARGS);
++#endif
+ #ifdef XEVIE
+ extern void XevieExtensionInit(INITARGS);
+ #endif
+@@ -663,6 +666,9 @@ InitExtensions(argc, argv)
+ #ifdef DAMAGE
+ if (!noDamageExtension) DamageExtensionInit();
+ #endif
++#ifdef XCALIBRATE
++ XCalibrateExtensionInit ();
++#endif
+ }
+
+ void
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac 2007-05-15 16:05:34.000000000 +0100
++++ xorg-server-1.3.0.0/configure.ac 2007-05-15 16:17:54.000000000 +0100
+@@ -421,6 +421,7 @@ AC_ARG_ENABLE(xf86vidmode, AS_HELP_ST
+ AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: enabled)]), [XF86MISC=$enableval], [XF86MISC=yes])
+ AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
+ AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE])
++AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY])
+ AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
+@@ -653,6 +654,12 @@ if test "x$XCSECURITY" = xyes; then
+ AC_DEFINE(XCSECURITY, 1, [Build Security extension])
+ fi
+
++AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
++if test "x$XCALIBRATE" = xyes; then
++ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
++ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
++fi
++
+ AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes])
+ if test "x$XEVIE" = xyes; then
+ AC_DEFINE(XEVIE, 1, [Build XEvIE extension])
+@@ -1547,7 +1554,7 @@ if test "$KDRIVE" = yes; then
+ ;;
+ esac
+ KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+- KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB $TSLIB_LIBS"
++ KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB $TSLIB_LIBS"
+
+ # check if we can build Xephyr
+ PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
+Index: xorg-server-1.3.0.0/include/kdrive-config.h.in
+===================================================================
+--- xorg-server-1.3.0.0.orig/include/kdrive-config.h.in 2007-05-15 16:05:34.000000000 +0100
++++ xorg-server-1.3.0.0/include/kdrive-config.h.in 2007-05-15 16:05:39.000000000 +0100
+@@ -25,4 +25,7 @@
+ /* Verbose debugging output hilarity */
+ #undef DEBUG
+
++/* Enable XCalibrate extension */
++#undef XCALIBRATE
++
+ #endif /* _KDRIVE_CONFIG_H_ */
+Index: xorg-server-1.3.0.0/Xext/Makefile.am
+===================================================================
+--- xorg-server-1.3.0.0.orig/Xext/Makefile.am 2007-05-15 16:05:34.000000000 +0100
++++ xorg-server-1.3.0.0/Xext/Makefile.am 2007-05-15 16:05:39.000000000 +0100
+@@ -91,6 +91,11 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS)
+ # XCalibrare needs tslib
+ endif
+
++XCALIBRATE_SRCS = xcalibrate.c
++if XCALIBRATE
++BUILTIN_SRCS += $(XCALIBRATE_SRCS)
++endif
++
+ # X EVent Interception Extension: allows accessibility helpers & composite
+ # managers to intercept events from input devices and transform as needed
+ # before the clients see them.
+@@ -169,6 +174,7 @@ EXTRA_DIST = \
+ $(XCSECURITY_SRCS) \
+ $(XCALIBRATE_SRCS) \
+ $(XINERAMA_SRCS) \
++ $(XCALIBRATE_SRCS) \
+ $(XEVIE_SRCS) \
+ $(XPRINT_SRCS) \
+ $(APPGROUP_SRCS) \
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/fix_default_mode.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/fix_default_mode.patch
new file mode 100644
index 0000000000..edc5146302
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/fix_default_mode.patch
@@ -0,0 +1,26 @@
+---
+ hw/kdrive/src/kmode.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: xorg-server-1.3.0.0/hw/kdrive/src/kmode.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/src/kmode.c 2007-05-16 10:30:29.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c 2007-05-16 10:31:08.000000000 +0100
+@@ -106,6 +106,8 @@ const KdMonitorTiming kdMonitorTimings[
+ 16, 120, 176, KdSyncNegative, /* 37.861 */
+ 1, 20, 24, KdSyncNegative, /* 72.809 */
+ },
++ /* DEFAULT */
++#define MONITOR_TIMING_DEFAULT 13
+ { 640, 480, 60, 25175, /* VESA */
+ 16, 48, 160, KdSyncNegative, /* 31.469 */
+ 10, 33, 45, KdSyncNegative, /* 59.940 */
+@@ -127,8 +129,6 @@ const KdMonitorTiming kdMonitorTimings[
+ 16, 160, 256, KdSyncPositive, /* 46.875 */
+ 1, 21, 25, KdSyncPositive, /* 75.000 */
+ },
+- /* DEFAULT */
+-#define MONITOR_TIMING_DEFAULT 9
+ { 800, 600, 72, 50000, /* VESA */
+ 56, 64, 240, KdSyncPositive, /* 48.077 */
+ 37, 23, 66, KdSyncPositive, /* 72.188 */
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch
new file mode 100644
index 0000000000..c160cd41dc
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch
@@ -0,0 +1,307 @@
+diff -u -r xorg-server-X11R7.1-1.1.0.orig/dix/window.c xorg-server-X11R7.1-1.1.0/dix/window.c
+--- xorg-server-X11R7.1-1.1.0.orig/dix/window.c 2007-01-08 14:30:38.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/dix/window.c 2007-01-16 17:16:19.000000000 +0000
+@@ -185,6 +185,8 @@
+ _X_EXPORT int numSaveUndersViewable = 0;
+ _X_EXPORT int deltaSaveUndersViewable = 0;
+
++char* RootPPM = NULL;
++
+ #ifdef DEBUG
+ /******
+ * PrintWindowTree
+@@ -311,6 +313,115 @@
+ #endif
+ }
+
++static int
++get_int(FILE *fp)
++{
++ int c = 0;
++
++ while ((c = getc(fp)) != EOF)
++ {
++ if (isspace(c))
++ continue;
++
++ if (c == '#')
++ while (c = getc(fp))
++ if (c == EOF)
++ return 0;
++ else if (c == '\n')
++ break;
++
++ if (isdigit(c))
++ {
++ int val = c - '0';
++ while ((c = getc(fp)) && isdigit(c))
++ val = (val * 10) + (c - '0');
++ return val;
++ }
++ }
++
++ return 0;
++}
++
++static unsigned char*
++ppm_load (const char* path, int depth, int *width, int *height)
++{
++ FILE *fp;
++ int max, n = 0, w, h, i, j, bytes_per_line;
++ unsigned char *data, *res, h1, h2;
++
++ if (depth < 16 || depth > 32)
++ return NULL;
++
++ if (depth > 16)
++ depth = 32;
++
++ fp = fopen (path, "r");
++ if (fp == NULL)
++ return FALSE;
++
++ h1 = getc(fp);
++ h2 = getc(fp);
++
++ /* magic is 'P6' for raw ppm */
++ if (h1 != 'P' && h2 != '6')
++ goto fail;
++
++ w = get_int(fp);
++ h = get_int(fp);
++
++ if (w == 0 || h == 0)
++ goto fail;
++
++ max = get_int(fp);
++
++ if (max != 255)
++ goto fail;
++
++ bytes_per_line = ((w * depth + 31) >> 5) << 2;
++
++ res = data = malloc(bytes_per_line * h);
++
++ for (i=0; i<h; i++)
++ {
++ for (j=0; j<w; j++)
++ {
++ unsigned char buf[3];
++ fread(buf, 1, 3, fp);
++
++ switch (depth)
++ {
++ case 24:
++ case 32:
++ *data = buf[2];
++ *(data+1) = buf[1];
++ *(data+2) = buf[0];
++ data += 4;
++ break;
++ case 16:
++ default:
++ *(unsigned short*)data
++ = ((buf[0] >> 3) << 11) | ((buf[1] >> 2) << 5) | (buf[2] >> 3);
++ data += 2;
++ break;
++ }
++ }
++ data += (bytes_per_line - (w*(depth>>3)));
++ }
++
++ data = res;
++
++ *width = w;
++ *height = h;
++
++ fclose(fp);
++
++ return res;
++
++ fail:
++ fclose(fp);
++ return NULL;
++}
++
+ static void
+ MakeRootTile(WindowPtr pWin)
+ {
+@@ -321,6 +432,36 @@
+ register unsigned char *from, *to;
+ register int i, j;
+
++ if (RootPPM != NULL)
++ {
++ int w, h;
++ unsigned char *data;
++
++ if ((data = ppm_load (RootPPM, pScreen->rootDepth, &w, &h)) != NULL)
++ {
++ pWin->background.pixmap
++ = (*pScreen->CreatePixmap)(pScreen, w, h, pScreen->rootDepth);
++
++ pWin->backgroundState = BackgroundPixmap;
++ pGC = GetScratchGC(pScreen->rootDepth, pScreen);
++ if (!pWin->background.pixmap || !pGC)
++ FatalError("could not create root tile");
++
++ ValidateGC((DrawablePtr)pWin->background.pixmap, pGC);
++
++ (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap,
++ pGC,
++ pScreen->rootDepth,
++ 0, 0, w, h, 0, ZPixmap, (char *)data);
++ FreeScratchGC(pGC);
++
++ free(data);
++ return;
++ }
++ else
++ ErrorF("Unable to load root window image.");
++ }
++
+ pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4,
+ pScreen->rootDepth);
+
+@@ -357,6 +498,7 @@
+
+ }
+
++
+ WindowPtr
+ AllocateWindow(ScreenPtr pScreen)
+ {
+diff -u -r xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c xorg-server-X11R7.1-1.1.0/hw/kdrive/src/kdrive.c
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c 2007-01-08 14:30:38.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/src/kdrive.c 2007-01-15 17:53:06.000000000 +0000
+@@ -58,6 +58,9 @@
+ { 32, 32 }
+ };
+
++int
++ProcXFixesHideCursor (ClientPtr client) ;
++
+ #define NUM_KD_DEPTHS (sizeof (kdDepths) / sizeof (kdDepths[0]))
+
+ int kdScreenPrivateIndex;
+@@ -84,6 +87,9 @@
+ KdOsFuncs *kdOsFuncs;
+ extern WindowPtr *WindowTable;
+
++extern Bool CursorInitiallyHidden; /* See Xfixes cursor.c */
++extern char* RootPPM; /* dix/window.c */
++
+ void
+ KdSetRootClip (ScreenPtr pScreen, BOOL enable)
+ {
+@@ -312,6 +318,7 @@
+ KdSetRootClip (pScreen, TRUE);
+ if (pScreenPriv->card->cfuncs->dpms)
+ (*pScreenPriv->card->cfuncs->dpms) (pScreen, pScreenPriv->dpmsState);
++
+ return TRUE;
+ }
+
+@@ -686,10 +693,14 @@
+ ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n");
+ ErrorF("-switchCmd Command to execute on vt switch\n");
+ ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n");
++ ErrorF("-hide-cursor Start with cursor hidden\n");
++ ErrorF("-root-ppm [path] Specify ppm file to use as root window background.\n");
+ ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
+ #ifdef PSEUDO8
+ p8UseMsg ();
+ #endif
++
++
+ }
+
+ int
+@@ -761,6 +772,19 @@
+ kdSoftCursor = TRUE;
+ return 1;
+ }
++ if (!strcmp (argv[i], "-hide-cursor"))
++ {
++ CursorInitiallyHidden = TRUE;
++ return 1;
++ }
++ if (!strcmp (argv[i], "-root-ppm"))
++ {
++ if ((i+1) < argc)
++ RootPPM = argv[i+1];
++ else
++ UseMsg ();
++ return 2;
++ }
+ if (!strcmp (argv[i], "-videoTest"))
+ {
+ kdVideoTest = TRUE;
+diff -u -r xorg-server-X11R7.1-1.1.0.orig/xfixes/cursor.c xorg-server-X11R7.1-1.1.0/xfixes/cursor.c
+--- xorg-server-X11R7.1-1.1.0.orig/xfixes/cursor.c 2007-01-08 14:30:38.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/xfixes/cursor.c 2007-01-11 16:33:00.000000000 +0000
+@@ -59,9 +59,12 @@
+ static RESTYPE CursorWindowType;
+ static int CursorScreenPrivateIndex = -1;
+ static int CursorGeneration;
++static Bool CursorGloballyHidden;
+ static CursorPtr CursorCurrent;
+ static CursorPtr pInvisibleCursor = NULL;
+
++Bool CursorInitiallyHidden = FALSE;
++
+ static void deleteCursorHideCountsForScreen (ScreenPtr pScreen);
+
+ #define VERIFY_CURSOR(pCursor, cursor, client, access) { \
+@@ -130,7 +133,7 @@
+
+ Unwrap (cs, pScreen, DisplayCursor);
+
+- if (cs->pCursorHideCounts != NULL) {
++ if (cs->pCursorHideCounts != NULL || CursorGloballyHidden) {
+ ret = (*pScreen->DisplayCursor) (pScreen, pInvisibleCursor);
+ } else {
+ ret = (*pScreen->DisplayCursor) (pScreen, pCursor);
+@@ -848,6 +851,12 @@
+ return BadWindow;
+ }
+
++ /* Is cursor set to be initially hidden ?, if so reset this
++ * flag as now visibility assumed under control of client.
++ */
++ if (CursorGloballyHidden)
++ CursorGloballyHidden = FALSE;
++
+ /*
+ * Has client hidden the cursor before on this screen?
+ * If so, just increment the count.
+@@ -899,9 +908,19 @@
+ return BadWindow;
+ }
+
++ /* X was started with cursor hidden, therefore just reset our flag
++ * (returning to normal client control) and cause cursor to now be
++ * shown.
++ */
++ if (CursorGloballyHidden == TRUE)
++ {
++ CursorGloballyHidden = FALSE;
++ return (client->noClientException);
++ }
++
+ /*
+ * Has client hidden the cursor on this screen?
+- * If not, generate an error.
++ * If so, generate an error.
+ */
+ pChc = findCursorHideCount(client, pWin->drawable.pScreen);
+ if (pChc == NULL) {
+@@ -1009,6 +1028,8 @@
+ XFixesCursorInit (void)
+ {
+ int i;
++
++ CursorGloballyHidden = CursorInitiallyHidden;
+
+ if (CursorGeneration != serverGeneration)
+ {
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch
new file mode 100644
index 0000000000..a580b500b7
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch
@@ -0,0 +1,58 @@
+Index: xorg-server-1.2.0/Makefile.am
+===================================================================
+--- xorg-server-1.2.0.orig/Makefile.am 2007-01-23 06:39:15.000000000 +0100
++++ xorg-server-1.2.0/Makefile.am 2007-03-28 20:26:19.000000000 +0200
+@@ -30,6 +30,10 @@
+ XINPUT_DIR=Xi
+ endif
+
++if XKB
++XKB_DIR=xkb
++endif
++
+ if DBE
+ DBE_DIR=dbe
+ endif
+@@ -46,7 +50,7 @@
+ randr \
+ render \
+ $(XINPUT_DIR) \
+- xkb \
++ $(XKB_DIR) \
+ $(DBE_DIR) \
+ $(MFB_DIR) \
+ $(AFB_DIR) \
+Index: xorg-server-1.2.0/configure.ac
+===================================================================
+--- xorg-server-1.2.0.orig/configure.ac 2007-01-23 06:39:15.000000000 +0100
++++ xorg-server-1.2.0/configure.ac 2007-03-28 20:27:13.000000000 +0200
+@@ -428,6 +428,7 @@
+ AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
+ AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes])
+ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
++AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
+
+ dnl DDXes.
+ AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
+@@ -754,12 +755,15 @@
+
+ AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+
+-AC_DEFINE(XKB, 1, [Build XKB])
+-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
++if test "x$XKB" = xyes; then
++ AC_DEFINE(XKB, 1, [Build XKB])
++ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
++ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
++ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
++ XKB_LIB='$(top_builddir)/xkb/libxkb.la'
++ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++fi
+
+ AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+ [Do not have `strcasecmp'.]))
diff --git a/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb b/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb
index 745710a704..7837884a75 100644
--- a/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb
+++ b/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb
@@ -7,13 +7,13 @@ SECTION = "x11/base"
DESCRIPTION = "X server from freedesktop.org"
DESCRIPTION_xserver-kdrive-xomap = "X server for the OMAP in the Nokia 800"
-PR = "r3"
+PR = "r4"
COMPATIBLE_MACHINE = "nokia800"
FILES_${PN} = "${libdir}/xserver /etc/dbus-1/* ${bindir}/Xomap"
-SRC_URI = "http://repository.maemo.org/pool/maemo3.0/free/source/xorg-server_1.1.99.3-0osso21.tar.gz \
+SRC_URI = "http://repository.maemo.org/pool/maemo3.0/free/source/xorg-server_1.1.99.3-0osso31.tar.gz \
file://kmode.patch;patch=1 \
file://disable-apm.patch;patch=1 \
file://no-serial-probing.patch;patch=1 \
diff --git a/packages/xorg-xserver/xserver-kdrive_1.2.0.bb b/packages/xorg-xserver/xserver-kdrive_1.2.0.bb
index 2ba1b09923..fb6bde07e8 100644
--- a/packages/xorg-xserver/xserver-kdrive_1.2.0.bb
+++ b/packages/xorg-xserver/xserver-kdrive_1.2.0.bb
@@ -3,14 +3,15 @@ require xserver-kdrive-common.inc
DEPENDS += "libxkbfile libxcalibrate"
PE = "1"
-PR = "r6"
+PR = "r7"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
file://enable-xcalibrate.patch;patch=1 \
file://w100.patch;patch=1 \
file://w100-fix-offscreen-bmp.patch;patch=1 \
- "
+ file://fbcompositesrc8888revnpx0565.patch;patch=1 \
+ "
S = "${WORKDIR}/xorg-server-${PV}"
diff --git a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
new file mode 100644
index 0000000000..8c6db70987
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
@@ -0,0 +1,17 @@
+require xserver-kdrive-common.inc
+
+# it's missing the xw100 patch
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS += "libxkbfile libxcalibrate"
+
+PE = "1"
+PR = "r0"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
+ ${KDRIVE_COMMON_PATCHES} \
+ file://fix_default_mode.patch;patch=1 \
+ file://enable-xcalibrate.patch;patch=1 \
+ file://hide-cursor-and-ppm-root.patch;patch=1"
+
+S = "${WORKDIR}/xorg-server-${PV}"
diff --git a/packages/xorg-xserver/xserver-xorg_1.2.0.bb b/packages/xorg-xserver/xserver-xorg_1.2.0.bb
index 900c3266cb..08b965bb75 100644
--- a/packages/xorg-xserver/xserver-xorg_1.2.0.bb
+++ b/packages/xorg-xserver/xserver-xorg_1.2.0.bb
@@ -1,8 +1,8 @@
+MESA_VER = "6.5.2"
+
require xorg-xserver-common.inc
PE = "1"
-SRC_URI += "file://drmfix.patch;patch=1"
-
EXTRA_OECONF += " ac_cv_file__usr_share_X11_sgml_defs_ent=no "
#DESCRIPTION = ""
diff --git a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb
new file mode 100644
index 0000000000..08b965bb75
--- /dev/null
+++ b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb
@@ -0,0 +1,10 @@
+MESA_VER = "6.5.2"
+
+require xorg-xserver-common.inc
+PE = "1"
+
+EXTRA_OECONF += " ac_cv_file__usr_share_X11_sgml_defs_ent=no "
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xqt2/xqt2_20060509.bb b/packages/xqt2/xqt2_20060509.bb
index 7f49cccb17..f1c839da86 100644
--- a/packages/xqt2/xqt2_20060509.bb
+++ b/packages/xqt2/xqt2_20060509.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
SECTION = "opie/applications"
APPTYPE = "binary"
APPNAME = "Xqt"
-PR = "r0"
+PR = "r1"
inherit palmtop
@@ -100,8 +100,8 @@ do_install() {
oe_runmake -C lib/font DESTDIR="${D}" CC="${CC}" LD="${LD}" \
CC_STAGING="-I${STAGING_INCDIR}" LD_STAGING="-L${STAGING_LIBDIR}" INSTALLED_LIBS="" install
- install -d ${D}${palmtopdir}/Apps/applications/
- install -m 0644 ${WORKDIR}/xqt2/xfree86/files/Xqt.desktop ${D}${palmtopdir}/Apps/applications
+ install -d ${D}${palmtopdir}/apps/Applications/
+ install -m 0644 ${WORKDIR}/xqt2/xfree86/files/Xqt.desktop ${D}${palmtopdir}/apps/Applications
install -d ${D}${palmtopdir}/bin/
install -m 0755 ${D}${bindir}/Xqt ${D}${palmtopdir}/bin/Xqt
install -d ${D}${palmtopdir}/pics
diff --git a/packages/xserver-common/files/Xserver-udev-input-helper.patch b/packages/xserver-common/files/Xserver-udev-input-helper.patch
new file mode 100644
index 0000000000..b4adc9ab96
--- /dev/null
+++ b/packages/xserver-common/files/Xserver-udev-input-helper.patch
@@ -0,0 +1,11 @@
+--- xserver-common-1.8/X11/Xserver.orig 2006-05-07 17:40:10.540539080 +0200
++++ xserver-common-1.8/X11/Xserver 2006-05-07 17:40:35.187792128 +0200
+@@ -27,7 +27,7 @@
+
+ export USER=root
+
+-ARGS="-br -pn"
++ARGS="-br -pn $INPUT_EXTRA_ARGS"
+
+ # use ucb 1x00 touchscreen if present
+ if [ -z "$TSLIB_TSDEVICE" ] && [ -e /dev/touchscreen/ucb1x00 ]; then
diff --git a/packages/xserver-common/files/at-fix-slcxxxx.patch b/packages/xserver-common/files/at-fix-slcxxxx.patch
new file mode 100644
index 0000000000..cc2af5a245
--- /dev/null
+++ b/packages/xserver-common/files/at-fix-slcxxxx.patch
@@ -0,0 +1,8 @@
+--- xserver-common-1.8/X11/slcXXXX.xmodmap.orig 2006-05-07 14:22:14.500971520 +0200
++++ xserver-common-1.8/X11/slcXXXX.xmodmap 2006-05-07 14:22:28.955774056 +0200
+@@ -10,3 +10,5 @@
+ keycode 80 = F28
+ keycode 81 = F29
+ keycode 86 = F30
++
++keycode 20 = minus at at
diff --git a/packages/xserver-common/files/load-xmodmap-k26.patch b/packages/xserver-common/files/load-xmodmap-k26.patch
new file mode 100644
index 0000000000..bc5a20bb6f
--- /dev/null
+++ b/packages/xserver-common/files/load-xmodmap-k26.patch
@@ -0,0 +1,23 @@
+--- xserver-common-1.8/X11/Xinit.d/12keymap.orig 2006-04-14 22:57:16.200518376 +0200
++++ xserver-common-1.8/X11/Xinit.d/12keymap 2006-04-14 23:01:46.938359968 +0200
+@@ -4,18 +4,10 @@
+
+ case $MACHINE in
+ "SHARP Shepherd" | "SHARP Husky" | "SHARP Corgi")
+- case `uname -r` in
+- 2.4*)
+- xmodmap - < /etc/X11/shepherd.xmodmap
+- ;;
+- esac
++ xmodmap - < /etc/X11/shepherd.xmodmap
+ ;;
+ "SHARP Akita" | "SHARP Borzoi" | "SHARP Spitz")
+- case `uname -r` in
+- 2.4*)
+- xmodmap - < /etc/X11/slcXXXX.xmodmap
+- ;;
+- esac
++ xmodmap - < /etc/X11/slcXXXX.xmodmap
+ ;;
+ "Sharp-Collie")
+ xmodmap - < /etc/X11/collie.xmodmap
diff --git a/packages/xserver-common/files/sl-cxx00-modmap.patch b/packages/xserver-common/files/sl-cxx00-modmap.patch
new file mode 100644
index 0000000000..057f9880bf
--- /dev/null
+++ b/packages/xserver-common/files/sl-cxx00-modmap.patch
@@ -0,0 +1,113 @@
+--- xserver-common-1.16/X11/slcXXXX.xmodmap.orig 2007-06-05 01:31:20.000000000 +0000
++++ xserver-common-1.16/X11/slcXXXX.xmodmap 2007-06-05 01:31:29.000000000 +0000
+@@ -1,5 +1,106 @@
+-keycode 88 = XF86Calendar
+-keycode 89 = telephone
+-keycode 40 = XF86Start
+-keycode 90 = XF86Mail
++! Modmap for Sharp Zaurus clamshells:
++! SL-C1000 (Akita)
++! SL-C3000 (Spitz)
++! SL-C3100 (Borzoi)
++! SL-C3200 (Terrier)
++!
++! Changelog:
++! version: 30 May 2007
++! Initial version
++!
++! This modmap adds an Alt_L and a compose key (Multi_Key)
++! at the Kana/Hira and Zen/Han keys. Users can set these to their
++! original Japanese functions if desired, but as a default putting at
++! least one Alt on the keyboard is a polite thing to do.
++!
++! Adds:
++! Fn + q = ` (grave)
++! Fn + - (minus) = @ (at)
++! Fn + 5 = € (Euro)
++! Fn + k = ¥ (Yen)
++! Fn + d = ・ (nakaten)
++! Fn + Backspace = Delete
++!
++! Currently unset:
++! Fn + Kana/Hira (カナ/ひら)
++! Fn + Zen/Han (全/半)
++! Fn + Space bar (音訓)
++! These should be bound to Japanese keysims for use with Japanese
++! IME's at a later date.
++! =======================================================================
+
++! The Euro character is not printed as a label, but as
++! the 5 doesn't have a blue Fn label, this is a nice extra
++! as a normal European keyboard has it on the 5 as third level
++! character
++keycode 14 = 5 percent EuroSign
++
++keycode 20 = minus minus at
++keycode 22 = BackSpace BackSpace Delete
++
++! The grave is not printed as a label, but is missing
++! so this is a nice place to add it, not too far from where it
++! is on a normal keyboard.
++keycode 24 = q Q grave
++
++! The nakaten character
++keycode 40 = d D kana_conjunctive
++
++! The Yen character
++keycode 45 = k K yen
++
++! This is the Kana/Hira key, right from "Ctrl"
++keycode 64 = Alt_L
++
++! Turn the Zen/Han key (left of minus) into the compose key
++keycode 105 = Multi_key
++
++! Control_R is gone, so clear out and reload control:
++clear control
++add control = Control_L
++
++! These are the 11 fields that generate keycodes
++! On the edge of the touchscreen. Every second one
++! (87, 89, 84, 79, 81) has a label, the rest doesn't,
++! but can be used as button nontheless, the size of the
++! eleven fields is the same.
++! These are mapped to F20..F30.
++! These buttons with Fn or Shift generate the F1..F11 keys.
++
++! No icon
++keycode 90 = F20 F1 F1
++! "Home" icon:
++keycode 87 = F21 F2 F2
++! No icon
++keycode 88 = F22 F3 F3
++! "Mail" icon:
++keycode 89 = F23 F4 F4
++! No icon
++keycode 83 = F24 F5 F5
++! "Address" icon:
++keycode 84 = F25 F6 F6
++! No icon
++keycode 85 = F26 F7 F7
++! "Calendar" icon:
++keycode 79 = F27 F8 F8
++! No icon
++keycode 80 = F28 F9 F9
++! "Book" icon:
++keycode 81 = F29 F10 F10
++! No icon
++keycode 86 = F30 F11 F11
++
++! These are the five buttons below the inbuilt keyboard
++! These are mapped to F13..F19
++! The Menu key generates F12 when pressed with Fn or Shift.
++
++! "Calendar" label and icon, "Sync" label beneath it:
++keycode 67 = F9 F14 F14
++! "Address" label and icon:
++keycode 68 = F10 F15 F15
++! "Mail" label and icon, "Check" label beneath it:
++keycode 76 = F13 F17 F17
++! "Home" label and icon:
++keycode 107 = F12 F18 F18
++! "Menu" label and icon:
++keycode 96 = F11 F12 F12
diff --git a/packages/xserver-common/files/softkeys-c7x0.patch b/packages/xserver-common/files/softkeys-c7x0.patch
new file mode 100644
index 0000000000..6ef2d9fb59
--- /dev/null
+++ b/packages/xserver-common/files/softkeys-c7x0.patch
@@ -0,0 +1,52 @@
+--- xserver-common-1.8/X11/shepherd.xmodmap.orig 2006-04-15 13:10:03.845853928 +0200
++++ xserver-common-1.8/X11/shepherd.xmodmap 2006-04-15 13:11:14.996037456 +0200
+@@ -1,49 +0,0 @@
+-keycode 38 = Mode_switch
+-keycode 31 = w W caret
+-keycode 13 = e E equal
+-keycode 26 = r R plus
+-keycode 28 = t T bracketleft
+-keycode 33 = y y bracketright
+-keycode 29 = u U braceleft
+-keycode 17 = i I braceright
+-!keycode 73 = Tab Tab Caps_Lock
+-keycode 12 = d D periodcentered
+-keycode 14 = f F backslash
+-keycode 15 = g G semicolon
+-keycode 16 = h H colon
+-keycode 18 = j J asterisk
+-keycode 19 = k K currency
+-keycode 20 = l L bar
+-keycode 10 = b B underscore
+-keycode 66 = minus minus at
+-keycode 71 = comma slash less
+-keycode 72 = period question greater
+-
+-! Side keys
+-keycode 134 = Down
+-keycode 133 = Up
+-keycode 131 = Return
+-keycode 132 = Escape
+-
+-!Special keys
+-!keycode 96 = XF86Calendar
+-!keycode 97 = telephone
+-!keycode 98 = XF86Mail
+-!keycode 48 = XF86HomePage
+-!keycode 37 = XF86Start
+-
+-clear Shift
+-clear Lock
+-clear Control
+-clear Mod1
+-clear Mod2
+-clear Mod3
+-clear Mod4
+-clear Mod5
+-
+-add Shift = Shift_L Shift_R
+-!add Lock = Caps_Lock
+-add Control = Control_L Control_R
+-add Mod1 = Alt_L Alt_R
+-add Mod2 = Mode_switch
+-
diff --git a/packages/xserver-common/files/softkeys-slcxxxx-xmodmap.patch b/packages/xserver-common/files/softkeys-slcxxxx-xmodmap.patch
new file mode 100644
index 0000000000..2f029e5352
--- /dev/null
+++ b/packages/xserver-common/files/softkeys-slcxxxx-xmodmap.patch
@@ -0,0 +1,20 @@
+--- xserver-common-1.8/X11/slcXXXX.xmodmap.orig 2006-04-15 13:03:51.471463440 +0200
++++ xserver-common-1.8/X11/slcXXXX.xmodmap 2006-04-15 13:05:04.576349808 +0200
+@@ -1,5 +1,12 @@
+-keycode 88 = XF86Calendar
+-keycode 89 = telephone
+-keycode 40 = XF86Start
+-keycode 90 = XF86Mail
+-
++
++keycode 90 = F20
++keycode 87 = F21
++keycode 88 = F22
++keycode 89 = F23
++keycode 83 = F24
++keycode 84 = F25
++keycode 85 = F26
++keycode 79 = F27
++keycode 80 = F28
++keycode 81 = F29
++keycode 86 = F30
diff --git a/packages/xserver-common/xserver-common_1.16.bb b/packages/xserver-common/xserver-common_1.16.bb
index 48320ba006..ca1c2f09cd 100644
--- a/packages/xserver-common/xserver-common_1.16.bb
+++ b/packages/xserver-common/xserver-common_1.16.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts and support files"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
-PR = "r2"
+PR = "r6"
PACKAGE_ARCH = "all"
@@ -11,7 +11,12 @@ inherit gpe
SRC_URI_append = " file://setDPI.sh \
file://xserver-imageon.patch;patch=1 \
- file://calibrate-only-if-ts.patch;patch=1"
+ file://calibrate-only-if-ts.patch;patch=1 \
+ file://softkeys-c7x0.patch;patch=1 \
+ file://load-xmodmap-k26.patch;patch=1 \
+ file://Xserver-udev-input-helper.patch;patch=1 \
+ file://sl-cxx00-modmap.patch;patch=1 \
+ "
do_install_append() {
install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
diff --git a/packages/xserver-common/xserver-common_svn.bb b/packages/xserver-common/xserver-common_svn.bb
index e272ac1a87..546481d48f 100644
--- a/packages/xserver-common/xserver-common_svn.bb
+++ b/packages/xserver-common/xserver-common_svn.bb
@@ -6,8 +6,15 @@ DEPENDS = "xmodmap xrandr xdpyinfo xtscal"
PV = "1.12+svn${SRCDATE}"
S = "${WORKDIR}/xserver-common"
+PR = "r2"
+
SRC_URI = "${GPE_SVN} \
file://Makefile.translation \
file://Makefile.dpkg_ipkg \
file://svn_makefiles.patch;patch=1 \
- file://keyboardless-buttonmap.patch;patch=1"
+ file://keyboardless-buttonmap.patch;patch=1 \
+ file://softkeys-c7x0.patch;patch=1 \
+ file://sl-cxx00-modmap.patch;patch=1 \
+ file://load-xmodmap-k26.patch;patch=1 \
+ file://Xserver-udev-input-helper.patch;patch=1"
+
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver
index 66feaad499..e59460f3b0 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver
@@ -96,7 +96,7 @@ case `module_id` in
;;
"GTA01")
ARGS="$ARGS -dpi 285 -screen 480x640" ;;
- Nokia N800")
+ "Nokia N800")
ARGS="$ARGS -dpi 225 -screen 800x480x16 -mouse tslib" ;;
*)
# Its a device we dont know about - in which case force
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
index 108f0c63fb..9d9b577766 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap libxrandr xdpyinfo xtscal xinit"
-PR = "r13"
+PR = "r14"
SRC_URI = "file://etc"
S = ${WORKDIR}
diff --git a/packages/yeaphone/yeaphone_0.1.bb b/packages/yeaphone/yeaphone_0.1.bb
index 2612b37e9a..67b651ae71 100644
--- a/packages/yeaphone/yeaphone_0.1.bb
+++ b/packages/yeaphone/yeaphone_0.1.bb
@@ -1,6 +1,5 @@
DESCRIPTION = "A VoIP SIP phone for the Yealink USB handset"
HOMEPAGE = "http://www.devbase.at/voip/"
-MAINTAINER = "Thomas Reitmayr <treitmayr@yahoo.com>"
LICENSE = "GPLv2"
PRIORITY = "optional"
DEPENDS = "liblinphone"
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-off b/packages/zaurusd/files/zaurus-hinge.bl-off
new file mode 100644
index 0000000000..888f90bfc5
--- /dev/null
+++ b/packages/zaurusd/files/zaurus-hinge.bl-off
@@ -0,0 +1,10 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: zaurus-hinge.bl-off
+# Date: 04-Jun-06
+
+test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
+${ZD_BINDIR}/bl off
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-on b/packages/zaurusd/files/zaurus-hinge.bl-on
new file mode 100644
index 0000000000..6d416ad8c4
--- /dev/null
+++ b/packages/zaurusd/files/zaurus-hinge.bl-on
@@ -0,0 +1,10 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: zaurus-hinge.bl-on
+# Date: 04-Jun-06
+
+test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
+${ZD_BINDIR}/bl on
diff --git a/packages/zaurusd/files/zaurusd-mixer-callback.patch b/packages/zaurusd/files/zaurusd-mixer-callback.patch
new file mode 100644
index 0000000000..7c9455d042
--- /dev/null
+++ b/packages/zaurusd/files/zaurusd-mixer-callback.patch
@@ -0,0 +1,11 @@
+--- zaurusd/scripts/zaurus-mixer-callback.in.orig 2007-06-05 03:15:30.000000000 +0000
++++ zaurusd/scripts/zaurus-mixer-callback.in 2007-06-05 03:14:53.000000000 +0000
+@@ -16,7 +16,7 @@
+ JACK="$1"
+ SPK="$2"
+ LEFT="true"
+-RLPLAYBACK="false"
++RLPLAYBACK="true"
+ RLBYPASS="false"
+
+ case $SPK in
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
index d839b85114..0bc2424a69 100644
--- a/packages/zaurusd/zaurusd_svn.bb
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "tslib"
RDEPENDS = "procps"
PV = "0.0+svn${SRCDATE}"
-PR = "r8"
+PR = "r10"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://zaurus-hinge.in \
@@ -12,7 +12,10 @@ SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://alsa-cxx00-default.state.patch;patch=1 \
file://disable-alsa-handling.patch;patch=1 \
file://zaurus-hinge.matchbox-portrait \
- file://zaurus-hinge.matchbox-landscape"
+ file://zaurus-hinge.matchbox-landscape \
+ file://zaurusd-mixer-callback.patch;patch=1 \
+ file://zaurus-hinge.bl-on \
+ file://zaurus-hinge.bl-off"
S = "${WORKDIR}/${PN}"
@@ -27,6 +30,12 @@ do_install_append() {
install -d "${D}/etc/zaurusd/hinge-landscape.d"
install -d "${D}/etc/zaurusd/hinge-portrait.d"
install -d "${D}/etc/zaurusd/hinge-close.d"
+ install -d ${D}/etc/apm/resume.d
+
+ install -m 0755 "${WORKDIR}/zaurus-hinge.bl-on" "${D}/etc/apm/resume.d/00-backlight-on"
+ install -m 0755 "${WORKDIR}/zaurus-hinge.bl-on" "${D}/etc/zaurusd/hinge-landscape.d/00-backlight-on"
+ install -m 0755 "${WORKDIR}/zaurus-hinge.bl-on" "${D}/etc/zaurusd/hinge-portrait.d/00-backlight-on"
+ install -m 0755 "${WORKDIR}/zaurus-hinge.bl-off" "${D}/etc/zaurusd/hinge-close.d/00-backlight-off"
install -m 0755 "${WORKDIR}/zaurus-hinge.matchbox-landscape" "${D}/etc/zaurusd/hinge-landscape.d/20-matchbox-landscape"
install -m 0755 "${WORKDIR}/zaurus-hinge.matchbox-portrait" "${D}/etc/zaurusd/hinge-portrait.d/20-matchbox-portrait"
diff --git a/packages/zope/zope_3.3.1.bb b/packages/zope/zope_3.3.1.bb
new file mode 100644
index 0000000000..156de2134f
--- /dev/null
+++ b/packages/zope/zope_3.3.1.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "A full fledged pluggable content management system with integrated web server and much more."
+SECTION = "console/network"
+PRIORITY = "optional"
+DEPENDS = "python"
+RDEPENDS = "python-core python-shell"
+LICENSE = "ZPL"
+PR = "r2"
+
+SRC_URI = "http://www.zope.org/Products/Zope3/${PV}/Zope-${PV}.tgz"
+
+S = "${WORKDIR}/Zope-${PV}"
+
+do_configure() {
+ ./configure --with-python=${STAGING_BINDIR_NATIVE}/python --prefix=${prefix} --force
+}
+
+do_compile() {
+ oe_runmake HOST_SYS=${HOST_SYS} BUILD_SYS=${BUILD_SYS}
+}
+
+do_install() {
+ oe_runmake install prefix=${D}${prefix} HOST_SYS=${HOST_SYS} BUILD_SYS=${BUILD_SYS}
+}
+
+PACKAGES =+ "python-zopeinterface python-zopeinterface-dbg"
+
+FILES_${PN} = "${prefix}"
+FILES_${PN}_doc = "${prefix}/doc"
+FILES_${PN}-dbg += "\
+${libdir}/python/BTrees/.debug \
+${libdir}/python/persistent/.debug \
+${libdir}/python/zope/proxy/.debug \
+${libdir}/python/zope/thread/.debug \
+${libdir}/python/zope/security/.debug \
+${libdir}/python/zope/hookable/.debug \
+${libdir}/python/zope/app/container/.debug \
+${libdir}/python/zope/i18nmessageid/.debug \
+${libdir}/python/ZODB/.debug"
+FILES_python-zopeinterface-dbg += "${libdir}/python/zope/interface/.debug "
+
+FILES_python-zopeinterface = "${libdir}/python/zope/interface/*.* ${libdir}/python/zope/interface/common"