From ca0e6432e64cada147f6131b91ad3da555c10364 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Fri, 25 Aug 2006 09:50:42 +0000 Subject: udev-097: drop the MAKEDEV link from links.conf, it is created in the init script --- packages/udev/udev-097/links.conf | 20 ++++++++++++++++++++ packages/udev/udev_097.bb | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/udev/udev-097/links.conf (limited to 'packages') diff --git a/packages/udev/udev-097/links.conf b/packages/udev/udev-097/links.conf new file mode 100644 index 0000000000..ee26012039 --- /dev/null +++ b/packages/udev/udev-097/links.conf @@ -0,0 +1,20 @@ +# This file does not exist. Please do not ask the debian maintainer about it. +# You may use it to do strange and wonderful things, at your risk. + +L fd /proc/self/fd +L stdin /proc/self/fd/0 +L stdout /proc/self/fd/1 +L stderr /proc/self/fd/2 +L core /proc/kcore +L sndstat /proc/asound/oss/sndstat + +D pts +D shm + +# Hic sunt leones. +M ppp c 108 0 +D loop +M loop/0 b 7 0 +D net +M net/tun c 10 200 + diff --git a/packages/udev/udev_097.bb b/packages/udev/udev_097.bb index 2e9e8d500f..fe24573b8d 100644 --- a/packages/udev/udev_097.bb +++ b/packages/udev/udev_097.bb @@ -8,7 +8,7 @@ used to detect the type of a file system and read its metadata." DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \ needed to link programs with libvolume_id." -PR = "r0" +PR = "r1" SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://noasmlinkage.patch;patch=1 \ -- cgit v1.2.3 From 5a7bb23659fa97a1ac55bf6769605cf342a62911 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Fri, 25 Aug 2006 10:09:02 +0000 Subject: initscripts: don't run the devices (devfs) script when udev is active, update for new udev versions --- packages/initscripts/initscripts-1.0/checkroot.sh | 5 +++++ packages/initscripts/initscripts-1.0/devices | 2 +- packages/initscripts/initscripts_1.0.bb | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/initscripts/initscripts-1.0/checkroot.sh b/packages/initscripts/initscripts-1.0/checkroot.sh index 8255038c32..0283e1acca 100755 --- a/packages/initscripts/initscripts-1.0/checkroot.sh +++ b/packages/initscripts/initscripts-1.0/checkroot.sh @@ -148,7 +148,12 @@ fi # remount the rootfs rw but do not try to change mtab because it # is on a ro fs until the remount succeeded. Then clean up old mtabs # and finally write the new mtab. +# This part is only needed if the rootfs was mounted ro. # +if [ $(grep rootfs /proc/mounts | awk '{print $4}') = rw ]; then + exit 0 +fi +echo "Remounting root file system..." mount -n -o remount,$rootmode / if test "$rootmode" = rw then diff --git a/packages/initscripts/initscripts-1.0/devices b/packages/initscripts/initscripts-1.0/devices index 28fb71fe3f..fb0f851d16 100755 --- a/packages/initscripts/initscripts-1.0/devices +++ b/packages/initscripts/initscripts-1.0/devices @@ -6,7 +6,7 @@ . /etc/default/rcS # exit without doing anything if udev is active -if test -e /dev/.udevdb; then +if test -e /dev/.udev -o -e /dev/.udevdb; then exit 0 fi diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb index 0d14403a36..29747d41c2 100644 --- a/packages/initscripts/initscripts_1.0.bb +++ b/packages/initscripts/initscripts_1.0.bb @@ -6,7 +6,7 @@ DEPENDS = "makedevs" DEPENDS_openzaurus = "makedevs virtual/kernel" RDEPENDS = "makedevs" LICENSE = "GPL" -PR = "r74" +PR = "r75" SRC_URI = "file://halt \ file://ramdisk \ -- cgit v1.2.3 From b007bb8a853a60ab918584da2e89ca75b21ab543 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 25 Aug 2006 10:16:09 +0000 Subject: gpe-edit: insert \n to unbreak metadata --- packages/gpe-edit/gpe-edit_0.32.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/gpe-edit/gpe-edit_0.32.bb b/packages/gpe-edit/gpe-edit_0.32.bb index af59b81e43..e504ec2271 100644 --- a/packages/gpe-edit/gpe-edit_0.32.bb +++ b/packages/gpe-edit/gpe-edit_0.32.bb @@ -1,6 +1,8 @@ MAINTAINER = "Phil Blundell " -SECTION = "gpe"DESCRIPTION = "Editor for the GPE Palmtop Environment" +SECTION = "gpe" +DESCRIPTION = "Editor for the GPE Palmtop Environment" LICENSE = "GPL" +PR = "r1" DEPENDS = "gtk+ libgpewidget" -- cgit v1.2.3 From 6a96d189f181e57619d0c20cbae1b926953f10d9 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Fri, 25 Aug 2006 10:16:16 +0000 Subject: handhelds-pxa-2.6-cvs: bump version to 2.6.17-hh0 --- packages/linux/handhelds-pxa-2.6_cvs.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/linux/handhelds-pxa-2.6_cvs.bb b/packages/linux/handhelds-pxa-2.6_cvs.bb index 7dfcb4d237..75f4425638 100644 --- a/packages/linux/handhelds-pxa-2.6_cvs.bb +++ b/packages/linux/handhelds-pxa-2.6_cvs.bb @@ -27,8 +27,8 @@ ALLOW_EMPTY_htcuniversal = 1 K_MAJOR = "2" K_MINOR = "6" -K_MICRO = "16" -HHV = "5" +K_MICRO = "17" +HHV = "0" # KERNEL_PRIORITY = "${@'%d' % (int(bb.data.getVar('K_MAJOR',d,1)) * 100000000 + int(bb.data.getVar('K_MINOR',d,1)) * 1000000 + int(bb.data.getVar('K_MICRO',d,1)) * 10000 + float(bb.data.getVar('HHV',d,1)))}" -- cgit v1.2.3 From 0ef0aaaef45154d538d943c4bcbe340814c72628 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 25 Aug 2006 10:20:41 +0000 Subject: libgnomecups: add dep on libgnomeui --- packages/gnome/libgnomecups_0.2.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/gnome/libgnomecups_0.2.2.bb b/packages/gnome/libgnomecups_0.2.2.bb index 86214904c8..53251ba84b 100644 --- a/packages/gnome/libgnomecups_0.2.2.bb +++ b/packages/gnome/libgnomecups_0.2.2.bb @@ -2,7 +2,7 @@ DESCRIPTION="Gnome Cups Manager" LICENSE="GPLv2" PR="r0" -DEPENDS="glib-2.0 gtk+ pango cups intltool" +DEPENDS="glib-2.0 gtk+ pango cups intltool libgnomeui" inherit gnome pkgconfig -- cgit v1.2.3 From d5f25d3bad63b36e72105732291d0b18d63aab11 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 25 Aug 2006 10:52:54 +0000 Subject: ipsec-tools: s/net/network/ --- packages/ipsec-tools/ipsec-tools.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/ipsec-tools/ipsec-tools.inc b/packages/ipsec-tools/ipsec-tools.inc index 2b1669f987..31ec6c87bf 100644 --- a/packages/ipsec-tools/ipsec-tools.inc +++ b/packages/ipsec-tools/ipsec-tools.inc @@ -3,7 +3,8 @@ Linux-2.6 IPsec implementation." DEPENDS = "virtual/kernel openssl readline flex" LICENSE = "BSD" MAINTAINER = "Chris Larson " -SECTION = "console/net" +SECTION = "console/network" +PR = "r1" inherit autotools -- cgit v1.2.3 From cf5b9a1071cea6f65d9abe979c9c42d4542efb63 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 25 Aug 2006 10:53:36 +0000 Subject: nfs-utils: s/networking/network/ --- packages/nfs-utils/nfs-utils_1.0.6.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/nfs-utils/nfs-utils_1.0.6.bb b/packages/nfs-utils/nfs-utils_1.0.6.bb index 17bc5a6f9f..4f5e64b352 100644 --- a/packages/nfs-utils/nfs-utils_1.0.6.bb +++ b/packages/nfs-utils/nfs-utils_1.0.6.bb @@ -1,9 +1,9 @@ DESCRIPTION = "userspace utilities for kernel nfs" PRIORITY = "optional" -SECTION = "console/networking" +SECTION = "console/network" MAINTAINER = "dyoung " LICENSE = "GPL" -PR = "r5" +PR = "r6" SRC_URI = "${SOURCEFORGE_MIRROR}/nfs/nfs-utils-${PV}.tar.gz \ file://acinclude-lossage.patch;patch=1 \ -- cgit v1.2.3 From 62873b87b2c414f7101d2765f59870e9b5d79e0a Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 25 Aug 2006 11:28:13 +0000 Subject: xserver-kdrive git: fix packaging so Security Policy ends up in the rootfs --- packages/xorg-xserver/xserver-kdrive_git.bb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/xorg-xserver/xserver-kdrive_git.bb b/packages/xorg-xserver/xserver-kdrive_git.bb index 90fa12aebb..aa5784e1c7 100644 --- a/packages/xorg-xserver/xserver-kdrive_git.bb +++ b/packages/xorg-xserver/xserver-kdrive_git.bb @@ -1,22 +1,30 @@ PV = "1.1.0+git${SRCDATE}" DEFAULT_PREFERENCE = "-2" +PR = "r1" + LICENSE = "MIT" DEPENDS = "tslib libxkbfile xf86dgaproto xf86vidmodeproto xf86miscproto xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto xcalibrateext recordproto videoproto scrnsaverproto" PROVIDES = "virtual/xserver" RPROVIDES = "virtual/xserver" -PACKAGES = "xserver-kdrive-fbdev xserver-kdrive-fake xserver-kdrive-xephyr ${PN}-doc ${PN}-dev ${PN}-locale" +PACKAGES =+ "xserver-kdrive-fbdev xserver-kdrive-fake xserver-kdrive-xephyr ${PN}-doc ${PN}-dev ${PN}-locale" SECTION = "x11/base" DESCRIPTION = "X server from freedesktop.org" DESCRIPTION_xserver-kdrive-fbdev = "X server from freedesktop.org, supporting generic framebuffer devices" DESCRIPTION_xserver-kdrive-fake = "Fake X server" DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window" +FILES_${PN} += "${libdir}/xserver/SecurityPolicy" + FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev" FILES_xserver-kdrive-fake = "${bindir}/Xfake" FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr" +RDEPENDS_xserver-kdrive-fbdev = "${PN}" +RDEPENDS_xserver-kdrive-fake = "${PN}" +RDEPENDS_xserver-kdrive-xephyr = "${PN}" + SRC_URI = "git://anongit.freedesktop.org/xorg/xserver;protocol=git \ file://kmode.patch;patch=1 \ file://disable-apm.patch;patch=1 \ -- cgit v1.2.3 From 5855ee2bfcfe65a2e57723d1fcd299a1c86685cf Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 25 Aug 2006 12:50:17 +0000 Subject: libvncserver: depends on libxext --- packages/libvncserver/libvncserver_0.8.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/libvncserver/libvncserver_0.8.2.bb b/packages/libvncserver/libvncserver_0.8.2.bb index 480a888745..8ceec7e62a 100644 --- a/packages/libvncserver/libvncserver_0.8.2.bb +++ b/packages/libvncserver/libvncserver_0.8.2.bb @@ -6,7 +6,7 @@ MAINTAINER = "Patrik Gfeller " SECTION = "libs" PRIORITY = "optional" PROVIDES = "x11vnc" -DEPENDS = "virtual/libsdl virtual/libx11 zlib jpeg" +DEPENDS = "virtual/libsdl virtual/libx11 zlib jpeg libxext" PR = "r2" SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz;md5sum=17a18e398af6c1730f72068022a152aa" -- cgit v1.2.3 From 1b5f7764622b8f117f228a5ef0bb487a95a10092 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 25 Aug 2006 13:03:35 +0000 Subject: python-manifest: remove explicit rdependency on libncurses5 --- packages/python/python-2.4.3-manifest.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'packages') diff --git a/packages/python/python-2.4.3-manifest.inc b/packages/python/python-2.4.3-manifest.inc index 82c886658c..1d14654f85 100644 --- a/packages/python/python-2.4.3-manifest.inc +++ b/packages/python/python-2.4.3-manifest.inc @@ -1,5 +1,5 @@ ######################################################################################################################## -### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2005 Michael 'Mickey' Lauer ] on Wed Aug 2 23:25:58 2006 +### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2006 Michael 'Mickey' Lauer ] on Fri Aug 25 15:00:35 2006 ### ### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy ### @@ -148,8 +148,8 @@ RDEPENDS_python-netserver="python-core python-netclient" FILES_python-netserver="${libdir}/python2.4/cgi.* ${libdir}/python2.4/BaseHTTPServer.* ${libdir}/python2.4/SimpleHTTPServer.* ${libdir}/python2.4/SocketServer.* " DESCRIPTION_python-curses="Python Curses Support" -PR_python-curses="ml0" -RDEPENDS_python-curses="python-core libncurses5" +PR_python-curses="ml1" +RDEPENDS_python-curses="python-core" FILES_python-curses="${libdir}/python2.4/curses ${libdir}/python2.4/lib-dynload/_curses.so ${libdir}/python2.4/lib-dynload/_curses_panel.so " DESCRIPTION_python-syslog="Python's syslog Interface" -- cgit v1.2.3 From b9a8c3254310d3839dee97146c00ab0400543fbb Mon Sep 17 00:00:00 2001 From: Florian Boor Date: Fri, 25 Aug 2006 13:18:31 +0000 Subject: networkmanager: depend on libglade --- packages/networkmanager/networkmanager_0.6.4.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/networkmanager/networkmanager_0.6.4.bb b/packages/networkmanager/networkmanager_0.6.4.bb index d30a101bcb..e9c02ba3dd 100644 --- a/packages/networkmanager/networkmanager_0.6.4.bb +++ b/packages/networkmanager/networkmanager_0.6.4.bb @@ -4,7 +4,7 @@ LICENSE = "GPL" HOMEPAGE = "http://www.gnome.org" MAINTAINER = "Milan Plzik " PRIORITY = "optional" -DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf-dbus wireless-tools" +DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf-dbus wireless-tools libglade" RDEPENDS = "wpa-supplicant dhcdbd gnome-keyring hicolor-icon-theme" PR = "r1" -- cgit v1.2.3 From 31489e5e5023c60be052aa263c53d33ddfcb6742 Mon Sep 17 00:00:00 2001 From: Mustafa Yuecel Date: Fri, 25 Aug 2006 16:13:33 +0000 Subject: initscripts-1.0/slugos/devices.patch: adapt patch to the current devices file --- packages/initscripts/initscripts-1.0/slugos/devices.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/initscripts/initscripts-1.0/slugos/devices.patch b/packages/initscripts/initscripts-1.0/slugos/devices.patch index 26b1841d5b..2583b62f48 100644 --- a/packages/initscripts/initscripts-1.0/slugos/devices.patch +++ b/packages/initscripts/initscripts-1.0/slugos/devices.patch @@ -8,8 +8,8 @@ . /etc/default/rcS # exit without doing anything if udev is active --if test -e /dev/.udevdb; then -+if test -e /dev/.udevdb -o -e /dev/.permanent; then +-if test -e /dev/.udev -o -e /dev/.udevdb; then ++if test -e /dev/.udev -o -e /dev/.udevdb -o -e /dev/.permanent; then exit 0 fi -- cgit v1.2.3 From b3556207e1db3ecae008038a3d837959de12bc22 Mon Sep 17 00:00:00 2001 From: Mustafa Yuecel Date: Fri, 25 Aug 2006 16:32:16 +0000 Subject: avetanabt: add version 20060413 - cvs version: updated path to CVS repository, DEFAULT_PREFERENCE = "-1" --- packages/avetanabt/avetanabt_20060413.bb | 63 ++++++++++++++++++++++++++++++++ packages/avetanabt/avetanabt_cvs.bb | 8 ++-- 2 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 packages/avetanabt/avetanabt_20060413.bb (limited to 'packages') diff --git a/packages/avetanabt/avetanabt_20060413.bb b/packages/avetanabt/avetanabt_20060413.bb new file mode 100644 index 0000000000..8472e0e0ce --- /dev/null +++ b/packages/avetanabt/avetanabt_20060413.bb @@ -0,0 +1,63 @@ +DESCRIPTION = "avetanaBT: Bluetooth API implementation for Java (JSR-82)" +SECTION = "devel" +DEPENDS = "findutils-native jikes-native kaffeh-native fastjar-native bluez-libs classpath" +MAINTAINER = "Mustafa Yuecel " +LICENSE = "GPL" +HOMEPAGE = "http://sourceforge.net/projects/avetanabt/" + +PR = "r0" + +SRC_URI = "${SOURCEFORGE_MIRROR}/avetanabt/avetanaBluetooth-${PV}.tgz" + +S = "${WORKDIR}/avetanabt" + +PACKAGES = "${PN}" +FILES_${PN} = "${libdir}/libavetanaBT.so ${datadir}/avetanabt/avetanaBT.jar" + +do_compile() { + + # doing nearly the same as in Makefile written... + + # clean build directory + mkdir -p build + rm -fr build/* + + # generate classes + # javac -> jikes + ${STAGING_BINDIR}/find {de,javax,com} -iname *.java > file.list + ${STAGING_BINDIR}/jikes -verbose --bootclasspath ${STAGING_DIR}/${BUILD_SYS}/share/kaffeh/rt.jar -d build @file.list + + # create own version.xml (add version information available at runtime) + head -n 4 version.xml >> build/version.xml + echo " " >> build/version.xml + tail -n 3 version.xml >> build/version.xml + + # move classes into jar archive + # jar -> fastjar + ${STAGING_BINDIR}/fastjar -v -cf avetanaBT.jar -C build de -C build javax -C build com -C build version.xml + + # JNI generated header file - de_avetana_bluetooth_stack_BlueZ.h + # javah -> kaffeh + ${STAGING_BINDIR}/kaffeh -jni -classpath avetanaBT.jar:${STAGING_DIR}/${BUILD_SYS}/share/kaffeh/rt.jar -d c de.avetana.bluetooth.stack.BlueZ + + # Native language (C) library - libavetanaBT.so + ${CXX} ${CXXFLAGS} -shared -lbluetooth -I${STAGING_INCDIR}/classpath c/BlueZ.cpp -o libavetanaBT.so ${LDFLAGS} + +} + +do_stage() { + + install -d ${STAGING_DIR}/${BUILD_SYS}/share/avetanabt + install avetanaBT.jar ${STAGING_DIR}/${BUILD_SYS}/share/avetanabt/ + +} + +do_install() { + + install -d ${D}${libdir} + install -m 0755 libavetanaBT.so ${D}${libdir}/ + + install -d ${D}${datadir}/avetanabt + install avetanaBT.jar ${D}${datadir}/avetanabt/ + +} diff --git a/packages/avetanabt/avetanabt_cvs.bb b/packages/avetanabt/avetanabt_cvs.bb index 7f6bea2a20..c25699caf0 100644 --- a/packages/avetanabt/avetanabt_cvs.bb +++ b/packages/avetanabt/avetanabt_cvs.bb @@ -5,10 +5,12 @@ MAINTAINER = "Mustafa Yuecel " LICENSE = "GPL" HOMEPAGE = "http://sourceforge.net/projects/avetanabt/" -PV = "0.0+cvs${SRCDATE}" -PR = "r3" +DEFAULT_PREFERENCE = "-1" -SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/avetanabt;module=avetanabt" +PV = "20060413+cvs${SRCDATE}" +PR = "r5" + +SRC_URI = "cvs://anonymous@avetanabt.cvs.sourceforge.net/cvsroot/avetanabt;module=avetanabt" S = "${WORKDIR}/avetanabt" -- cgit v1.2.3 From 0d607195ebad2d7b4ccd2fc985e9daaf2dd70b80 Mon Sep 17 00:00:00 2001 From: Mustafa Yuecel Date: Fri, 25 Aug 2006 17:25:34 +0000 Subject: subversion: add (disabled) version 1.3.2 - DEFAULT_PREFERENCE = "-1" due to errors on stage phase - bug report follows soon --- packages/subversion/subversion_1.3.2.bb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 packages/subversion/subversion_1.3.2.bb (limited to 'packages') diff --git a/packages/subversion/subversion_1.3.2.bb b/packages/subversion/subversion_1.3.2.bb new file mode 100644 index 0000000000..f508381d15 --- /dev/null +++ b/packages/subversion/subversion_1.3.2.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "The Subversion (svn) client" +SECTION = "console/network" +DEPENDS = "apr-util-0.9.12 neon" +MAINTAINER = "Mustafa Yuecel " +LICENSE = "Apache/BSD" +HOMEPAGE = "http://subversion.tigris.org" +PR = "r0" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \ + file://disable-revision-install.patch;patch=1" + +EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${BUILD_SYS} \ + --without-berkeley-db --without-apxs --without-apache \ + --without-swig --with-apr=${STAGING_BINDIR} \ + --with-apr-util=${STAGING_BINDIR}" + +inherit autotools + +do_configure() { + oe_runconf +} -- cgit v1.2.3 From 4f1963886d9d2227be98a4473ceefc9c1011d1fd Mon Sep 17 00:00:00 2001 From: Philip Balister Date: Fri, 25 Aug 2006 18:03:06 +0000 Subject: linux-omap1_2.6.12-rc2.bb : Fixes so it builds reliably * add dependency on u-boot * Fix do_deploy to massage kernel for use on omap5912osk board --- packages/linux/linux-omap1_2.6.12-rc2.bb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'packages') diff --git a/packages/linux/linux-omap1_2.6.12-rc2.bb b/packages/linux/linux-omap1_2.6.12-rc2.bb index 7ea9e16091..46e7d0ba95 100644 --- a/packages/linux/linux-omap1_2.6.12-rc2.bb +++ b/packages/linux/linux-omap1_2.6.12-rc2.bb @@ -14,7 +14,7 @@ KERNEL_IMAGETYPE = "vmlinux" KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}" KERNEL_CCSUFFIX = "-3.3.4" -#DEPENDS = "uboot" +DEPENDS = "u-boot" inherit kernel @@ -25,13 +25,17 @@ do_configure_prepend() { oe_runmake oldconfig } -do_deploy_omap5912osk() { - install -d ${DEPLOY_DIR_IMAGE} - arm-linux-objcopy -O binary -R .note -R .comment -S arch/arm/boot/compressed/vmlinux ${DEPLOY_DIR}/linux.bin - gzip -f -9 ${DEPLOY_DIR}/linux.bin - mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n "OE" -d ${DEPLOY_DIR}/linux.bin.gz ${DEPLOY_DIR}/uImage_bb.cc - cp ${DEPLOY_DIR}/uImage_bb.cc /tftpboot -# install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin +do_deploy() { + if [ "${MACHINE}" == "omap5912osk" ]; then + install -d ${DEPLOY_DIR_IMAGE} + arm-linux-objcopy -O binary -R .note -R .comment -S arch/arm/boot/compressed/vmlinux ${DEPLOY_DIR_IMAGE}/linux.bin + gzip -f -9 ${DEPLOY_DIR_IMAGE}/linux.bin + mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n "OE" -d ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin + rm ${DEPLOY_DIR_IMAGE}/linux.bin.gz + +# cp ${DEPLOY_DIR}/uImage_bb.cc /tftpboot +# install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin + fi } -- cgit v1.2.3 From 302b477c6e599fec386e4c66adcfbf38e427217e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 26 Aug 2006 11:39:30 +0000 Subject: pango 1.14: add appropriate PACKAGES_DYNAMIC to stop bitbake trunk from building pango 1.10 to satisfy dependencies on pango-module-* --- packages/pango/pango_1.14.0.bb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'packages') diff --git a/packages/pango/pango_1.14.0.bb b/packages/pango/pango_1.14.0.bb index 77eee85214..19fc1d7a92 100644 --- a/packages/pango/pango_1.14.0.bb +++ b/packages/pango/pango_1.14.0.bb @@ -7,6 +7,8 @@ Open Source framework for the layout and rendering of \ internationalized text." PR = "r0" +PACKAGES_DYNAMIC = "pango-module-*" + RRECOMMENDS_${PN} = "pango-module-basic-x pango-module-basic-fc" # seems to go wrong with default cflags @@ -26,11 +28,7 @@ FILES_${PN} = "/etc ${bindir} ${libdir}/libpango*.so.*" LIBV = "1.5.0" do_stage () { - for lib in pango pangox pangoft2 pangoxft pangocairo; do - oe_libinstall -so -C pango lib$lib-1.0 ${STAGING_LIBDIR}/ - done - install -d ${STAGING_INCDIR}/pango - install -m 0644 ${S}/pango/pango*.h ${STAGING_INCDIR}/pango/ + autotools_stage_all } postinst_prologue() { -- cgit v1.2.3 From 0b32edd66ab6a06eaad0b2c749d385a686ca8ffc Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Sat, 26 Aug 2006 13:52:23 +0000 Subject: avahi: add 0.6.13 --- packages/avahi/avahi_0.6.13.bb | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 packages/avahi/avahi_0.6.13.bb (limited to 'packages') diff --git a/packages/avahi/avahi_0.6.13.bb b/packages/avahi/avahi_0.6.13.bb new file mode 100644 index 0000000000..7584a02514 --- /dev/null +++ b/packages/avahi/avahi_0.6.13.bb @@ -0,0 +1,64 @@ +DESCRIPTION = "Avahi implements the DNS-SD over Multicast DNS" +SECTION = "network" +PRIORITY = "optional" +AUTHOR = "Lennart Poettering " +HOMEPAGE = "http://avahi.org" +MAINTAINER = "Philipp Zabel " +LICENSE= "GPL" +PR = "r0" + +DEPENDS = "expat libdaemon dbus" +RRECOMMENDS = "libnss-mdns" + +SRC_URI = "http://avahi.org/download/avahi-${PV}.tar.gz" + +PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib avahi-dev avahi-doc avahi-utils" + +FILES_libavahi-common = "${libdir}/libavahi-common.so.*" +FILES_libavahi-core= "${libdir}/libavahi-core.so.*" +FILES_avahi-daemon = "${sbindir}/avahi-daemon \ + ${sysconfdir}/avahi/avahi-daemon.conf \ + ${sysconfdir}/avahi/hosts \ + ${sysconfdir}/avahi/services \ + ${sysconfdir}/dbus-1 \ + ${sysconfdir}/init.d/avahi-daemon \ + ${datadir}/avahi/introspection/*.introspect \ + ${datadir}/avahi/avahi-service.dtd \ + ${datadir}/avahi/service-types" +FILES_libavahi-client = "${libdir}/libavahi-client.so.*" +FILES_avahi-dnsconfd = "${sbindir}/avahi-dnsconfd \ + ${sysconfdir}/avahi/avahi-dnsconfd.action \ + ${sysconfdir}/init.d/avahi-dnsconfd" +FILES_libavahi-glib = "${libdir}/libavahi-glib.so.*" +FILES_avahi-utils = "${bindir}/avahi-*" + +CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf" + +EXTRA_OECONF = "--with-distro=debian --disable-gdbm --disable-gtk --disable-mono --disable-monodoc --disable-qt3 --disable-qt4 --disable-python" +inherit autotools pkgconfig update-rc.d + + +do_stage() { + autotools_stage_all +} + +INITSCRIPT_PACKAGES = "avahi-daemon avahi-dnsconfd" +INITSCRIPT_NAME_avahi-daemon = "avahi-daemon" +INITSCRIPT_PARAMS_avahi-daemon = "defaults 21 19" +INITSCRIPT_NAME_avahi-dnsconfd = "avahi-dnsconfd" +INITSCRIPT_PARAMS_avahi-dnsconfd = "defaults 22 19" + +pkg_postinst_avahi-daemon () { + # can't do this offline + if [ "x$D" != "x" ]; then + exit 1 + fi + grep avahi /etc/group || addgroup avahi + grep avahi /etc/passwd || adduser --disabled-password --system --home /var/run/avahi-daemon --no-create-home avahi --ingroup avahi -g Avahi + /etc/init.d/dbus-1 force-reload +} + +pkg_postrm_avahi-daemon () { + deluser avahi || true + delgroup avahi || true +} -- cgit v1.2.3 From f7f1ac27e90f042fa1c4322b193b5b6a27cd4c07 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 26 Aug 2006 14:02:37 +0000 Subject: busybox 1.2.1: replace mv with a non-gnu-ish cp --- packages/busybox/busybox_1.2.1.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/busybox/busybox_1.2.1.bb b/packages/busybox/busybox_1.2.1.bb index 8b399f1626..741df3f62d 100644 --- a/packages/busybox/busybox_1.2.1.bb +++ b/packages/busybox/busybox_1.2.1.bb @@ -74,7 +74,7 @@ do_install () { install -d ${D}/busybox ls ${D} -R - mv ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/ + cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/ # Move the busybox binary back to /bin install -d ${D}${base_bindir} mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/ -- cgit v1.2.3 From 295f7fdd9aa9556b023d3e7cce312ed33d251020 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 26 Aug 2006 14:28:29 +0000 Subject: db-native: make sure do_package() is empty --- packages/db/db-native_4.3.29.bb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'packages') diff --git a/packages/db/db-native_4.3.29.bb b/packages/db/db-native_4.3.29.bb index 12a875ff13..aac4e2021b 100644 --- a/packages/db/db-native_4.3.29.bb +++ b/packages/db/db-native_4.3.29.bb @@ -10,4 +10,8 @@ inherit native require db_${PV}.bb +do_package() { +: +} + PACKAGES = "" -- cgit v1.2.3 From 0814eff011ab9a23abc7681b4236b05b5b9927df Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 26 Aug 2006 16:49:16 +0000 Subject: qemu: Add arm nptl patch (as used in scratchbox) to fix EABI locale generation, add version 0.8.2, apply patches to some fixed verisons --- packages/qemu/files/arm_nptl.patch | 857 ++++++++++++++++++++++++++++++++ packages/qemu/qemu-0.8.0/.mtn2git_empty | 0 packages/qemu/qemu-0.8.0/arm_nptl.patch | 854 +++++++++++++++++++++++++++++++ packages/qemu/qemu-0.8.2/.mtn2git_empty | 0 packages/qemu/qemu-0.8.2/arm_nptl.patch | 857 ++++++++++++++++++++++++++++++++ packages/qemu/qemu-native_0.8.0.bb | 1 + packages/qemu/qemu-native_0.8.2.bb | 6 + packages/qemu/qemu_0.8.0.bb | 5 +- packages/qemu/qemu_0.8.2.bb | 9 + packages/qemu/qemu_cvs.bb | 5 +- 10 files changed, 2591 insertions(+), 3 deletions(-) create mode 100644 packages/qemu/files/arm_nptl.patch create mode 100644 packages/qemu/qemu-0.8.0/.mtn2git_empty create mode 100644 packages/qemu/qemu-0.8.0/arm_nptl.patch create mode 100644 packages/qemu/qemu-0.8.2/.mtn2git_empty create mode 100644 packages/qemu/qemu-0.8.2/arm_nptl.patch create mode 100644 packages/qemu/qemu-native_0.8.2.bb create mode 100644 packages/qemu/qemu_0.8.2.bb (limited to 'packages') diff --git a/packages/qemu/files/arm_nptl.patch b/packages/qemu/files/arm_nptl.patch new file mode 100644 index 0000000000..958c27e5e1 --- /dev/null +++ b/packages/qemu/files/arm_nptl.patch @@ -0,0 +1,857 @@ +Index: qemu/configure +=================================================================== +--- qemu.orig/configure 2006-08-14 22:09:39.000000000 +0100 ++++ qemu/configure 2006-08-14 22:38:54.000000000 +0100 +@@ -96,6 +96,7 @@ + user="no" + build_docs="no" + uname_release="" ++nptl="yes" + + # OS specific + targetos=`uname -s` +@@ -240,6 +241,8 @@ + ;; + --enable-uname-release=*) uname_release="$optarg" + ;; ++ --disable-nptl) nptl="no" ++ ;; + esac + done + +@@ -438,6 +441,23 @@ + fi + fi + ++# check NPTL support ++cat > $TMPC < ++void foo() ++{ ++#ifndef CLONE_SETTLS ++#error bork ++#endif ++} ++EOF ++ ++if $cc -c -o $TMPO $TMPC 2> /dev/null ; then ++ : ++else ++ nptl="no" ++fi ++ + ########################################## + # SDL probe + +@@ -556,6 +576,7 @@ + fi + echo "FMOD support $fmod $fmod_support" + echo "kqemu support $kqemu" ++echo "NPTL support $nptl" + echo "Documentation $build_docs" + [ ! -z "$uname_release" ] && \ + echo "uname -r $uname_release" +@@ -864,6 +885,14 @@ + echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak + fi + fi ++else ++ if test "$nptl" = "yes" ; then ++ case "$target_cpu" in ++ arm | armeb) ++ echo "#define USE_NPTL 1" >> $config_h ++ ;; ++ esac ++ fi + fi + + if test "$cocoa" = "yes" ; then +Index: qemu/exec-all.h +=================================================================== +--- qemu.orig/exec-all.h 2006-05-26 18:10:52.000000000 +0100 ++++ qemu/exec-all.h 2006-08-14 22:37:29.000000000 +0100 +@@ -347,163 +347,7 @@ + extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4]; + extern void *io_mem_opaque[IO_MEM_NB_ENTRIES]; + +-#ifdef __powerpc__ +-static inline int testandset (int *p) +-{ +- int ret; +- __asm__ __volatile__ ( +- "0: lwarx %0,0,%1\n" +- " xor. %0,%3,%0\n" +- " bne 1f\n" +- " stwcx. %2,0,%1\n" +- " bne- 0b\n" +- "1: " +- : "=&r" (ret) +- : "r" (p), "r" (1), "r" (0) +- : "cr0", "memory"); +- return ret; +-} +-#endif +- +-#ifdef __i386__ +-static inline int testandset (int *p) +-{ +- long int readval = 0; +- +- __asm__ __volatile__ ("lock; cmpxchgl %2, %0" +- : "+m" (*p), "+a" (readval) +- : "r" (1) +- : "cc"); +- return readval; +-} +-#endif +- +-#ifdef __x86_64__ +-static inline int testandset (int *p) +-{ +- long int readval = 0; +- +- __asm__ __volatile__ ("lock; cmpxchgl %2, %0" +- : "+m" (*p), "+a" (readval) +- : "r" (1) +- : "cc"); +- return readval; +-} +-#endif +- +-#ifdef __s390__ +-static inline int testandset (int *p) +-{ +- int ret; +- +- __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n" +- " jl 0b" +- : "=&d" (ret) +- : "r" (1), "a" (p), "0" (*p) +- : "cc", "memory" ); +- return ret; +-} +-#endif +- +-#ifdef __alpha__ +-static inline int testandset (int *p) +-{ +- int ret; +- unsigned long one; +- +- __asm__ __volatile__ ("0: mov 1,%2\n" +- " ldl_l %0,%1\n" +- " stl_c %2,%1\n" +- " beq %2,1f\n" +- ".subsection 2\n" +- "1: br 0b\n" +- ".previous" +- : "=r" (ret), "=m" (*p), "=r" (one) +- : "m" (*p)); +- return ret; +-} +-#endif +- +-#ifdef __sparc__ +-static inline int testandset (int *p) +-{ +- int ret; +- +- __asm__ __volatile__("ldstub [%1], %0" +- : "=r" (ret) +- : "r" (p) +- : "memory"); +- +- return (ret ? 1 : 0); +-} +-#endif +- +-#ifdef __arm__ +-static inline int testandset (int *spinlock) +-{ +- register unsigned int ret; +- __asm__ __volatile__("swp %0, %1, [%2]" +- : "=r"(ret) +- : "0"(1), "r"(spinlock)); +- +- return ret; +-} +-#endif +- +-#ifdef __mc68000 +-static inline int testandset (int *p) +-{ +- char ret; +- __asm__ __volatile__("tas %1; sne %0" +- : "=r" (ret) +- : "m" (p) +- : "cc","memory"); +- return ret; +-} +-#endif +- +-#ifdef __ia64 +-#include +- +-static inline int testandset (int *p) +-{ +- return __sync_lock_test_and_set (p, 1); +-} +-#endif +- +-typedef int spinlock_t; +- +-#define SPIN_LOCK_UNLOCKED 0 +- +-#if defined(CONFIG_USER_ONLY) +-static inline void spin_lock(spinlock_t *lock) +-{ +- while (testandset(lock)); +-} +- +-static inline void spin_unlock(spinlock_t *lock) +-{ +- *lock = 0; +-} +- +-static inline int spin_trylock(spinlock_t *lock) +-{ +- return !testandset(lock); +-} +-#else +-static inline void spin_lock(spinlock_t *lock) +-{ +-} +- +-static inline void spin_unlock(spinlock_t *lock) +-{ +-} +- +-static inline int spin_trylock(spinlock_t *lock) +-{ +- return 1; +-} +-#endif ++#include "qemu_spinlock.h" + + extern spinlock_t tb_lock; + +Index: qemu/linux-user/arm/syscall.h +=================================================================== +--- qemu.orig/linux-user/arm/syscall.h 2005-04-27 21:11:21.000000000 +0100 ++++ qemu/linux-user/arm/syscall.h 2006-08-14 22:37:29.000000000 +0100 +@@ -28,7 +28,9 @@ + #define ARM_SYSCALL_BASE 0x900000 + #define ARM_THUMB_SYSCALL 0 + +-#define ARM_NR_cacheflush (ARM_SYSCALL_BASE + 0xf0000 + 2) ++#define ARM_NR_BASE 0xf0000 ++#define ARM_NR_cacheflush (ARM_NR_BASE + 2) ++#define ARM_NR_set_tls (ARM_NR_BASE + 5) + + #define ARM_NR_semihosting 0x123456 + #define ARM_NR_thumb_semihosting 0xAB +Index: qemu/linux-user/main.c +=================================================================== +--- qemu.orig/linux-user/main.c 2006-05-26 18:11:01.000000000 +0100 ++++ qemu/linux-user/main.c 2006-08-14 22:37:29.000000000 +0100 +@@ -331,6 +331,50 @@ + } + } + ++/* Handle a jump to the kernel code page. */ ++static int ++do_kernel_trap(CPUARMState *env) ++{ ++ uint32_t addr; ++ uint32_t *ptr; ++ uint32_t cpsr; ++ ++ switch (env->regs[15]) { ++ case 0xffff0fc0: /* __kernel_cmpxchg */ ++ /* XXX: This only works between threads, not between processes. ++ Use native atomic operations. */ ++ /* ??? This probably breaks horribly if the access segfaults. */ ++ cpu_lock(); ++ ptr = (uint32_t *)env->regs[2]; ++ cpsr = cpsr_read(env); ++ if (*ptr == env->regs[0]) { ++ *ptr = env->regs[1]; ++ env->regs[0] = 0; ++ cpsr |= CPSR_C; ++ } else { ++ env->regs[0] = -1; ++ cpsr &= ~CPSR_C; ++ } ++ cpsr_write(env, cpsr, CPSR_C); ++ cpu_unlock(); ++ break; ++ case 0xffff0fe0: /* __kernel_get_tls */ ++ env->regs[0] = env->cp15.c13_tls; ++ break; ++ default: ++ return 1; ++ } ++ /* Jump back to the caller. */ ++ addr = env->regs[14]; ++ if (addr & 1) { ++ env->thumb = 1; ++ addr &= ~1; ++ } ++ env->regs[15] = addr; ++ ++ return 0; ++} ++ + void cpu_loop(CPUARMState *env) + { + int trapnr; +@@ -387,10 +431,8 @@ + } + } + +- if (n == ARM_NR_cacheflush) { +- arm_cache_flush(env->regs[0], env->regs[1]); +- } else if (n == ARM_NR_semihosting +- || n == ARM_NR_thumb_semihosting) { ++ if (n == ARM_NR_semihosting ++ || n == ARM_NR_thumb_semihosting) { + env->regs[0] = do_arm_semihosting (env); + } else if (n == 0 || n >= ARM_SYSCALL_BASE + || (env->thumb && n == ARM_THUMB_SYSCALL)) { +@@ -401,14 +443,34 @@ + n -= ARM_SYSCALL_BASE; + env->eabi = 0; + } +- env->regs[0] = do_syscall(env, +- n, +- env->regs[0], +- env->regs[1], +- env->regs[2], +- env->regs[3], +- env->regs[4], +- env->regs[5]); ++ if ( n > ARM_NR_BASE) { ++ switch (n) ++ { ++ case ARM_NR_cacheflush: ++ arm_cache_flush(env->regs[0], env->regs[1]); ++ break; ++#ifdef USE_NPTL ++ case ARM_NR_set_tls: ++ cpu_set_tls(env, env->regs[0]); ++ env->regs[0] = 0; ++ break; ++#endif ++ default: ++ printf ("Error: Bad syscall: %x\n", n); ++ goto error; ++ } ++ } ++ else ++ { ++ env->regs[0] = do_syscall(env, ++ n, ++ env->regs[0], ++ env->regs[1], ++ env->regs[2], ++ env->regs[3], ++ env->regs[4], ++ env->regs[5]); ++ } + } else { + goto error; + } +@@ -447,6 +509,10 @@ + } + } + break; ++ case EXCP_KERNEL_TRAP: ++ if (do_kernel_trap(env)) ++ goto error; ++ break; + default: + error: + fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", +@@ -1649,6 +1715,10 @@ + ts->heap_base = info->brk; + /* This will be filled in on the first SYS_HEAPINFO call. */ + ts->heap_limit = 0; ++ /* Register the magic kernel code page. The cpu will generate a ++ special exception when it tries to execute code here. We can't ++ put real code here because it may be in use by the host kernel. */ ++ page_set_flags(0xffff0000, 0xffff0fff, 0); + } + #elif defined(TARGET_SPARC) + { +Index: qemu/linux-user/qemu.h +=================================================================== +--- qemu.orig/linux-user/qemu.h 2006-05-26 18:11:01.000000000 +0100 ++++ qemu/linux-user/qemu.h 2006-08-14 22:37:29.000000000 +0100 +@@ -76,6 +76,9 @@ + uint32_t v86mask; + #endif + int used; /* non zero if used */ ++#ifdef USE_NPTL ++ uint32_t *child_tidptr; ++#endif + uint8_t stack[0]; + } __attribute__((aligned(16))) TaskState; + +Index: qemu/linux-user/syscall.c +=================================================================== +--- qemu.orig/linux-user/syscall.c 2006-05-26 18:11:01.000000000 +0100 ++++ qemu/linux-user/syscall.c 2006-08-14 22:44:47.000000000 +0100 +@@ -66,9 +66,18 @@ + #include + + #include "qemu.h" ++#include "qemu_spinlock.h" + + //#define DEBUG + ++#ifdef USE_NPTL ++#define CLONE_NPTL_FLAGS2 (CLONE_SETTLS | \ ++ CLONE_PARENT_SETTID | CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID) ++#else ++/* XXX: Hardcode the above values. */ ++#define CLONE_NPTL_FLAGS2 0 ++#endif ++ + #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) + /* 16 bit uid wrappers emulation */ + #define USE_UID16 +@@ -1569,20 +1578,38 @@ + thread/process */ + #define NEW_STACK_SIZE 8192 + ++#ifdef USE_NPTL ++static spinlock_t nptl_lock = SPIN_LOCK_UNLOCKED; ++#endif ++ + static int clone_func(void *arg) + { + CPUState *env = arg; ++#ifdef HAVE_NPTL ++ /* Wait until the parent has finshed initializing the tls state. */ ++ while (!spin_trylock(&nptl_lock)) ++ usleep(1); ++ spin_unlock(&nptl_lock); ++#endif + cpu_loop(env); + /* never exits */ + return 0; + } + +-int do_fork(CPUState *env, unsigned int flags, unsigned long newsp) ++int do_fork(CPUState *env, unsigned int flags, unsigned long newsp, ++ uint32_t *parent_tidptr, void *newtls, ++ uint32_t *child_tidptr) + { + int ret; + TaskState *ts; + uint8_t *new_stack; + CPUState *new_env; ++#ifdef USE_NPTL ++ unsigned int nptl_flags; ++ ++ if (flags & CLONE_PARENT_SETTID) ++ *parent_tidptr = gettid(); ++#endif + + if (flags & CLONE_VM) { + ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE); +@@ -1627,16 +1654,60 @@ + #error unsupported target CPU + #endif + new_env->opaque = ts; ++#ifdef USE_NPTL ++ nptl_flags = flags; ++ flags &= ~CLONE_NPTL_FLAGS2; ++ if (nptl_flags & CLONE_CHILD_CLEARTID) { ++ ts->child_tidptr = child_tidptr; ++ } ++ if (nptl_flags & CLONE_SETTLS) ++ cpu_set_tls (new_env, newtls); ++ /* Grab the global cpu lock so that the thread setup appears ++ atomic. */ ++ if (nptl_flags & CLONE_CHILD_SETTID) ++ spin_lock(&nptl_lock); ++#else ++ if (flags & CLONE_NPTL_FLAGS2) ++ return -EINVAL; ++#endif ++ + #ifdef __ia64__ + ret = __clone2(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env); + #else + ret = clone(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env); + #endif ++#ifdef USE_NPTL ++ if (ret != -1) { ++ if (nptl_flags & CLONE_CHILD_SETTID) ++ *child_tidptr = ret; ++ } ++ /* Allow the child to continue. */ ++ if (nptl_flags & CLONE_CHILD_SETTID) ++ spin_unlock(&nptl_lock); ++#endif + } else { +- /* if no CLONE_VM, we consider it is a fork */ +- if ((flags & ~CSIGNAL) != 0) +- return -EINVAL; +- ret = fork(); ++ /* if no CLONE_VM, we consider it is a fork */ ++ if ((flags & ~(CSIGNAL | CLONE_NPTL_FLAGS2)) != 0) ++ return -EINVAL; ++ ret = fork(); ++#ifdef USE_NPTL ++ /* There is a race condition here. The parent process could ++ theoretically read the TID in the child process before the child ++ tid is set. This would require using either ptrace ++ (not implemented) or having *_tidptr to point at a shared memory ++ mapping. We can't repeat the spinlock hack used above because ++ the child process gets its own copy of the lock. */ ++ if (ret == 0) { ++ /* Child Process. */ ++ if (flags & CLONE_CHILD_SETTID) ++ *child_tidptr = gettid(); ++ ts = (TaskState *)env->opaque; ++ if (flags & CLONE_CHILD_CLEARTID) ++ ts->child_tidptr = child_tidptr; ++ if (flags & CLONE_SETTLS) ++ cpu_set_tls (env, newtls); ++ } ++#endif + } + return ret; + } +@@ -1880,7 +1951,7 @@ + ret = do_brk(arg1); + break; + case TARGET_NR_fork: +- ret = get_errno(do_fork(cpu_env, SIGCHLD, 0)); ++ ret = get_errno(do_fork(cpu_env, SIGCHLD, 0, NULL, NULL, NULL)); + break; + case TARGET_NR_waitpid: + { +@@ -2836,7 +2907,8 @@ + ret = get_errno(fsync(arg1)); + break; + case TARGET_NR_clone: +- ret = get_errno(do_fork(cpu_env, arg1, arg2)); ++ ret = get_errno(do_fork(cpu_env, arg1, arg2, (uint32_t *)arg3, ++ (void *)arg4, (uint32_t *)arg5)); + break; + #ifdef __NR_exit_group + /* new thread calls */ +@@ -3186,7 +3258,8 @@ + #endif + #ifdef TARGET_NR_vfork + case TARGET_NR_vfork: +- ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0)); ++ ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0, ++ NULL, NULL, NULL)); + break; + #endif + #ifdef TARGET_NR_ugetrlimit +@@ -3681,4 +3754,3 @@ + #endif + return ret; + } +- +Index: qemu/target-arm/cpu.h +=================================================================== +--- qemu.orig/target-arm/cpu.h 2006-02-20 00:33:36.000000000 +0000 ++++ qemu/target-arm/cpu.h 2006-08-14 22:39:35.000000000 +0100 +@@ -35,6 +35,9 @@ + #define EXCP_IRQ 5 + #define EXCP_FIQ 6 + #define EXCP_BKPT 7 ++#define EXCP_KERNEL_TRAP 8 /* Jumped to kernel code page. */ ++ ++ + + /* We currently assume float and double are IEEE single and double + precision respectively. +@@ -85,6 +88,7 @@ + uint32_t c9_data; + uint32_t c13_fcse; /* FCSE PID. */ + uint32_t c13_context; /* Context ID. */ ++ uint32_t c13_tls; /* Paul Brook told me to just add this ;) */ + } cp15; + + /* Internal CPU feature flags. */ +@@ -135,6 +139,15 @@ + int cpu_arm_signal_handler(int host_signum, struct siginfo *info, + void *puc); + ++void cpu_lock(void); ++void cpu_unlock(void); ++#if defined(USE_NPTL) ++static inline void cpu_set_tls(CPUARMState *env, void *newtls) ++{ ++ env->cp15.c13_tls = (uint32_t)newtls; ++} ++#endif ++ + #define CPSR_M (0x1f) + #define CPSR_T (1 << 5) + #define CPSR_F (1 << 6) +@@ -146,7 +159,11 @@ + #define CPSR_J (1 << 24) + #define CPSR_IT_0_1 (3 << 25) + #define CPSR_Q (1 << 27) +-#define CPSR_NZCV (0xf << 28) ++#define CPSR_V (1 << 28) ++#define CPSR_C (1 << 29) ++#define CPSR_Z (1 << 30) ++#define CPSR_N (1 << 31) ++#define CPSR_NZCV (CPSR_N | CPSR_Z | CPSR_C | CPSR_V) + + #define CACHED_CPSR_BITS (CPSR_T | CPSR_Q | CPSR_NZCV) + /* Return the current CPSR value. */ +Index: qemu/target-arm/exec.h +=================================================================== +--- qemu.orig/target-arm/exec.h 2005-11-26 10:38:39.000000000 +0000 ++++ qemu/target-arm/exec.h 2006-08-14 22:37:29.000000000 +0100 +@@ -51,8 +51,6 @@ + + /* In op_helper.c */ + +-void cpu_lock(void); +-void cpu_unlock(void); + void helper_set_cp15(CPUState *, uint32_t, uint32_t); + uint32_t helper_get_cp15(CPUState *, uint32_t); + +Index: qemu/target-arm/op.c +=================================================================== +--- qemu.orig/target-arm/op.c 2006-02-20 00:33:36.000000000 +0000 ++++ qemu/target-arm/op.c 2006-08-14 22:37:29.000000000 +0100 +@@ -891,6 +891,12 @@ + cpu_loop_exit(); + } + ++void OPPROTO op_kernel_trap(void) ++{ ++ env->exception_index = EXCP_KERNEL_TRAP; ++ cpu_loop_exit(); ++} ++ + /* VFP support. We follow the convention used for VFP instrunctions: + Single precition routines have a "s" suffix, double precision a + "d" suffix. */ +Index: qemu/target-arm/translate.c +=================================================================== +--- qemu.orig/target-arm/translate.c 2006-05-26 18:11:04.000000000 +0100 ++++ qemu/target-arm/translate.c 2006-08-14 22:37:29.000000000 +0100 +@@ -2377,6 +2377,7 @@ + s->is_jmp = DISAS_JUMP; + } + ++ + /* generate intermediate code in gen_opc_buf and gen_opparam_buf for + basic block 'tb'. If search_pc is TRUE, also generate PC + information for each intermediate instruction. */ +@@ -2411,6 +2412,15 @@ + nb_gen_labels = 0; + lj = -1; + do { ++#ifdef CONFIG_USER_ONLY ++ /* Intercept jump to the magic kernel page. */ ++ if (dc->pc > 0xffff0000) { ++ gen_op_kernel_trap(); ++ dc->is_jmp = DISAS_UPDATE; ++ break; ++ } ++#endif ++ + if (env->nb_breakpoints > 0) { + for(j = 0; j < env->nb_breakpoints; j++) { + if (env->breakpoints[j] == dc->pc) { +Index: qemu/qemu_spinlock.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ qemu/qemu_spinlock.h 2006-08-14 22:37:29.000000000 +0100 +@@ -0,0 +1,182 @@ ++/* ++ * internal execution defines for qemu ++ * ++ * Copyright (c) 2003 Fabrice Bellard ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _QEMU_SPINLOCK_H ++#define _QEMU_SPINLOCK_H ++ ++#ifdef __powerpc__ ++static inline int testandset (int *p) ++{ ++ int ret; ++ __asm__ __volatile__ ( ++ "0: lwarx %0,0,%1\n" ++ " xor. %0,%3,%0\n" ++ " bne 1f\n" ++ " stwcx. %2,0,%1\n" ++ " bne- 0b\n" ++ "1: " ++ : "=&r" (ret) ++ : "r" (p), "r" (1), "r" (0) ++ : "cr0", "memory"); ++ return ret; ++} ++#endif ++ ++#ifdef __i386__ ++static inline int testandset (int *p) ++{ ++ long int readval = 0; ++ ++ __asm__ __volatile__ ("lock; cmpxchgl %2, %0" ++ : "+m" (*p), "+a" (readval) ++ : "r" (1) ++ : "cc"); ++ return readval; ++} ++#endif ++ ++#ifdef __x86_64__ ++static inline int testandset (int *p) ++{ ++ long int readval = 0; ++ ++ __asm__ __volatile__ ("lock; cmpxchgl %2, %0" ++ : "+m" (*p), "+a" (readval) ++ : "r" (1) ++ : "cc"); ++ return readval; ++} ++#endif ++ ++#ifdef __s390__ ++static inline int testandset (int *p) ++{ ++ int ret; ++ ++ __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n" ++ " jl 0b" ++ : "=&d" (ret) ++ : "r" (1), "a" (p), "0" (*p) ++ : "cc", "memory" ); ++ return ret; ++} ++#endif ++ ++#ifdef __alpha__ ++static inline int testandset (int *p) ++{ ++ int ret; ++ unsigned long one; ++ ++ __asm__ __volatile__ ("0: mov 1,%2\n" ++ " ldl_l %0,%1\n" ++ " stl_c %2,%1\n" ++ " beq %2,1f\n" ++ ".subsection 2\n" ++ "1: br 0b\n" ++ ".previous" ++ : "=r" (ret), "=m" (*p), "=r" (one) ++ : "m" (*p)); ++ return ret; ++} ++#endif ++ ++#ifdef __sparc__ ++static inline int testandset (int *p) ++{ ++ int ret; ++ ++ __asm__ __volatile__("ldstub [%1], %0" ++ : "=r" (ret) ++ : "r" (p) ++ : "memory"); ++ ++ return (ret ? 1 : 0); ++} ++#endif ++ ++#ifdef __arm__ ++static inline int testandset (int *spinlock) ++{ ++ register unsigned int ret; ++ __asm__ __volatile__("swp %0, %1, [%2]" ++ : "=r"(ret) ++ : "0"(1), "r"(spinlock)); ++ ++ return ret; ++} ++#endif ++ ++#ifdef __mc68000 ++static inline int testandset (int *p) ++{ ++ char ret; ++ __asm__ __volatile__("tas %1; sne %0" ++ : "=r" (ret) ++ : "m" (p) ++ : "cc","memory"); ++ return ret; ++} ++#endif ++ ++#ifdef __ia64 ++#include ++ ++static inline int testandset (int *p) ++{ ++ return __sync_lock_test_and_set (p, 1); ++} ++#endif ++ ++typedef int spinlock_t; ++ ++#define SPIN_LOCK_UNLOCKED 0 ++ ++#if defined(CONFIG_USER_ONLY) ++static inline void spin_lock(spinlock_t *lock) ++{ ++ while (testandset(lock)); ++} ++ ++static inline void spin_unlock(spinlock_t *lock) ++{ ++ *lock = 0; ++} ++ ++static inline int spin_trylock(spinlock_t *lock) ++{ ++ return !testandset(lock); ++} ++#else ++static inline void spin_lock(spinlock_t *lock) ++{ ++} ++ ++static inline void spin_unlock(spinlock_t *lock) ++{ ++} ++ ++static inline int spin_trylock(spinlock_t *lock) ++{ ++ return 1; ++} ++#endif ++ ++#endif /* ! _QEMU_SPINLOCK_H */ diff --git a/packages/qemu/qemu-0.8.0/.mtn2git_empty b/packages/qemu/qemu-0.8.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/qemu/qemu-0.8.0/arm_nptl.patch b/packages/qemu/qemu-0.8.0/arm_nptl.patch new file mode 100644 index 0000000000..daf105071c --- /dev/null +++ b/packages/qemu/qemu-0.8.0/arm_nptl.patch @@ -0,0 +1,854 @@ +diff -ur qemu-0.8.0.orig/configure qemu-0.8.0/configure +--- qemu-0.8.0.orig/configure 2005-12-20 00:51:53.000000000 +0200 ++++ qemu-0.8.0/configure 2006-07-12 15:26:40.000000000 +0300 +@@ -89,6 +89,7 @@ + cocoa="no" + check_gfx="yes" + check_gcc="yes" ++nptl=yes + + # OS specific + targetos=`uname -s` +@@ -205,6 +206,8 @@ + ;; + --disable-gcc-check) check_gcc="no" + ;; ++ --disable-nptl) nptl="no" ++ ;; + esac + done + +@@ -299,6 +302,23 @@ + fi + fi + ++# check NPTL support ++cat > $TMPC < ++void foo() ++{ ++#ifndef CLONE_SETTLS ++#error bork ++#endif ++} ++EOF ++ ++if $cc -c -o $TMPO $TMPC 2> /dev/null ; then ++ : ++else ++ nptl="no" ++fi ++ + ########################################## + # SDL probe + +@@ -489,6 +509,7 @@ + fi + echo "" + echo "kqemu support $kqemu" ++echo "NPTL support $nptl" + if test $kqemu = "yes" -a $linux = "yes" ; then + echo "" + echo "KQEMU Linux module configuration:" +@@ -793,6 +814,14 @@ + fi + echo "" >> $config_mak + fi ++else ++ if test "$nptl" = "yes" ; then ++ case "$target_cpu" in ++ arm | armeb) ++ echo "#define USE_NPTL 1" >> $config_h ++ ;; ++ esac ++ fi + fi + + if test "$cocoa" = "yes" ; then +Only in qemu-0.8.0: configure.rej~ +Only in qemu-0.8.0: configure~ +diff -ur qemu-0.8.0.orig/exec-all.h qemu-0.8.0/exec-all.h +--- qemu-0.8.0.orig/exec-all.h 2005-12-20 00:51:53.000000000 +0200 ++++ qemu-0.8.0/exec-all.h 2006-07-12 15:23:46.000000000 +0300 +@@ -347,163 +347,7 @@ + extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4]; + extern void *io_mem_opaque[IO_MEM_NB_ENTRIES]; + +-#ifdef __powerpc__ +-static inline int testandset (int *p) +-{ +- int ret; +- __asm__ __volatile__ ( +- "0: lwarx %0,0,%1\n" +- " xor. %0,%3,%0\n" +- " bne 1f\n" +- " stwcx. %2,0,%1\n" +- " bne- 0b\n" +- "1: " +- : "=&r" (ret) +- : "r" (p), "r" (1), "r" (0) +- : "cr0", "memory"); +- return ret; +-} +-#endif +- +-#ifdef __i386__ +-static inline int testandset (int *p) +-{ +- long int readval = 0; +- +- __asm__ __volatile__ ("lock; cmpxchgl %2, %0" +- : "+m" (*p), "+a" (readval) +- : "r" (1) +- : "cc"); +- return readval; +-} +-#endif +- +-#ifdef __x86_64__ +-static inline int testandset (int *p) +-{ +- long int readval = 0; +- +- __asm__ __volatile__ ("lock; cmpxchgl %2, %0" +- : "+m" (*p), "+a" (readval) +- : "r" (1) +- : "cc"); +- return readval; +-} +-#endif +- +-#ifdef __s390__ +-static inline int testandset (int *p) +-{ +- int ret; +- +- __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n" +- " jl 0b" +- : "=&d" (ret) +- : "r" (1), "a" (p), "0" (*p) +- : "cc", "memory" ); +- return ret; +-} +-#endif +- +-#ifdef __alpha__ +-static inline int testandset (int *p) +-{ +- int ret; +- unsigned long one; +- +- __asm__ __volatile__ ("0: mov 1,%2\n" +- " ldl_l %0,%1\n" +- " stl_c %2,%1\n" +- " beq %2,1f\n" +- ".subsection 2\n" +- "1: br 0b\n" +- ".previous" +- : "=r" (ret), "=m" (*p), "=r" (one) +- : "m" (*p)); +- return ret; +-} +-#endif +- +-#ifdef __sparc__ +-static inline int testandset (int *p) +-{ +- int ret; +- +- __asm__ __volatile__("ldstub [%1], %0" +- : "=r" (ret) +- : "r" (p) +- : "memory"); +- +- return (ret ? 1 : 0); +-} +-#endif +- +-#ifdef __arm__ +-static inline int testandset (int *spinlock) +-{ +- register unsigned int ret; +- __asm__ __volatile__("swp %0, %1, [%2]" +- : "=r"(ret) +- : "0"(1), "r"(spinlock)); +- +- return ret; +-} +-#endif +- +-#ifdef __mc68000 +-static inline int testandset (int *p) +-{ +- char ret; +- __asm__ __volatile__("tas %1; sne %0" +- : "=r" (ret) +- : "m" (p) +- : "cc","memory"); +- return ret; +-} +-#endif +- +-#ifdef __ia64 +-#include +- +-static inline int testandset (int *p) +-{ +- return __sync_lock_test_and_set (p, 1); +-} +-#endif +- +-typedef int spinlock_t; +- +-#define SPIN_LOCK_UNLOCKED 0 +- +-#if defined(CONFIG_USER_ONLY) +-static inline void spin_lock(spinlock_t *lock) +-{ +- while (testandset(lock)); +-} +- +-static inline void spin_unlock(spinlock_t *lock) +-{ +- *lock = 0; +-} +- +-static inline int spin_trylock(spinlock_t *lock) +-{ +- return !testandset(lock); +-} +-#else +-static inline void spin_lock(spinlock_t *lock) +-{ +-} +- +-static inline void spin_unlock(spinlock_t *lock) +-{ +-} +- +-static inline int spin_trylock(spinlock_t *lock) +-{ +- return 1; +-} +-#endif ++#include "qemu_spinlock.h" + + extern spinlock_t tb_lock; + +diff -ur qemu-0.8.0.orig/linux-user/arm/syscall.h qemu-0.8.0/linux-user/arm/syscall.h +--- qemu-0.8.0.orig/linux-user/arm/syscall.h 2005-12-20 00:51:53.000000000 +0200 ++++ qemu-0.8.0/linux-user/arm/syscall.h 2006-07-12 15:23:46.000000000 +0300 +@@ -28,7 +28,9 @@ + #define ARM_SYSCALL_BASE 0x900000 + #define ARM_THUMB_SYSCALL 0 + +-#define ARM_NR_cacheflush (ARM_SYSCALL_BASE + 0xf0000 + 2) ++#define ARM_NR_BASE 0xf0000 ++#define ARM_NR_cacheflush (ARM_NR_BASE + 2) ++#define ARM_NR_set_tls (ARM_NR_BASE + 5) + + #define ARM_NR_semihosting 0x123456 + #define ARM_NR_thumb_semihosting 0xAB +diff -ur qemu-0.8.0.orig/linux-user/main.c qemu-0.8.0/linux-user/main.c +--- qemu-0.8.0.orig/linux-user/main.c 2006-07-12 15:20:37.000000000 +0300 ++++ qemu-0.8.0/linux-user/main.c 2006-07-12 15:23:46.000000000 +0300 +@@ -326,6 +326,50 @@ + } + } + ++/* Handle a jump to the kernel code page. */ ++static int ++do_kernel_trap(CPUARMState *env) ++{ ++ uint32_t addr; ++ uint32_t *ptr; ++ uint32_t cpsr; ++ ++ switch (env->regs[15]) { ++ case 0xffff0fc0: /* __kernel_cmpxchg */ ++ /* XXX: This only works between threads, not between processes. ++ Use native atomic operations. */ ++ /* ??? This probably breaks horribly if the access segfaults. */ ++ cpu_lock(); ++ ptr = (uint32_t *)env->regs[2]; ++ cpsr = cpsr_read(env); ++ if (*ptr == env->regs[0]) { ++ *ptr = env->regs[1]; ++ env->regs[0] = 0; ++ cpsr |= CPSR_C; ++ } else { ++ env->regs[0] = -1; ++ cpsr &= ~CPSR_C; ++ } ++ cpsr_write(env, cpsr, CPSR_C); ++ cpu_unlock(); ++ break; ++ case 0xffff0fe0: /* __kernel_get_tls */ ++ env->regs[0] = env->cp15.c13_tls; ++ break; ++ default: ++ return 1; ++ } ++ /* Jump back to the caller. */ ++ addr = env->regs[14]; ++ if (addr & 1) { ++ env->thumb = 1; ++ addr &= ~1; ++ } ++ env->regs[15] = addr; ++ ++ return 0; ++} ++ + void cpu_loop(CPUARMState *env) + { + int trapnr; +@@ -368,10 +412,8 @@ + n = insn & 0xffffff; + } + +- if (n == ARM_NR_cacheflush) { +- arm_cache_flush(env->regs[0], env->regs[1]); +- } else if (n == ARM_NR_semihosting +- || n == ARM_NR_thumb_semihosting) { ++ if (n == ARM_NR_semihosting ++ || n == ARM_NR_thumb_semihosting) { + env->regs[0] = do_arm_semihosting (env); + } else if (n >= ARM_SYSCALL_BASE + || (env->thumb && n == ARM_THUMB_SYSCALL)) { +@@ -381,14 +423,34 @@ + } else { + n -= ARM_SYSCALL_BASE; + } +- env->regs[0] = do_syscall(env, +- n, +- env->regs[0], +- env->regs[1], +- env->regs[2], +- env->regs[3], +- env->regs[4], +- env->regs[5]); ++ if ( n > ARM_NR_BASE) { ++ switch (n) ++ { ++ case ARM_NR_cacheflush: ++ arm_cache_flush(env->regs[0], env->regs[1]); ++ break; ++#ifdef USE_NPTL ++ case ARM_NR_set_tls: ++ cpu_set_tls(env, env->regs[0]); ++ env->regs[0] = 0; ++ break; ++#endif ++ default: ++ printf ("Error: Bad syscall: %x\n", n); ++ goto error; ++ } ++ } ++ else ++ { ++ env->regs[0] = do_syscall(env, ++ n, ++ env->regs[0], ++ env->regs[1], ++ env->regs[2], ++ env->regs[3], ++ env->regs[4], ++ env->regs[5]); ++ } + } else { + goto error; + } +@@ -427,6 +489,10 @@ + } + } + break; ++ case EXCP_KERNEL_TRAP: ++ if (do_kernel_trap(env)) ++ goto error; ++ break; + default: + error: + fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", +@@ -1602,6 +1668,10 @@ + ts->heap_base = info->brk; + /* This will be filled in on the first SYS_HEAPINFO call. */ + ts->heap_limit = 0; ++ /* Register the magic kernel code page. The cpu will generate a ++ special exception when it tries to execute code here. We can't ++ put real code here because it may be in use by the host kernel. */ ++ page_set_flags(0xffff0000, 0xffff0fff, 0); + } + #elif defined(TARGET_SPARC) + { +diff -ur qemu-0.8.0.orig/linux-user/qemu.h qemu-0.8.0/linux-user/qemu.h +--- qemu-0.8.0.orig/linux-user/qemu.h 2005-12-20 00:51:53.00000000