diff options
Diffstat (limited to 'recipes')
7 files changed, 453 insertions, 1 deletions
diff --git a/recipes/linux/linux-omap-2.6.29/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch b/recipes/linux/linux-omap-2.6.29/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch new file mode 100644 index 0000000000..7852f0afdb --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch @@ -0,0 +1,287 @@ +From 8a7643b09856f4f661403dcedbe0455b3cbeeea9 Mon Sep 17 00:00:00 2001 +From: Steven Newbury <s_j_newbury@yahoo.co.uk> +Date: Fri, 22 May 2009 14:25:40 +0200 +Subject: [PATCH] implement TIF_RESTORE_SIGMASK support and enable the related + syscalls: + +pselect6 +ppoll +epoll_pwait + +Based on http://www.spinics.net/lists/arm-kernel/msg38114.html +--- + arch/arm/include/asm/thread_info.h | 2 + + arch/arm/include/asm/unistd.h | 7 ++- + arch/arm/kernel/calls.S | 6 +- + arch/arm/kernel/signal.c | 90 +++++++++++++++--------------------- + 4 files changed, 46 insertions(+), 59 deletions(-) + +diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h +index 4f88482..2cf0917 100644 +--- a/arch/arm/include/asm/thread_info.h ++++ b/arch/arm/include/asm/thread_info.h +@@ -136,6 +136,7 @@ extern void vfp_sync_state(struct thread_info *thread); + #define TIF_SIGPENDING 0 + #define TIF_NEED_RESCHED 1 + #define TIF_SYSCALL_TRACE 8 ++#define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal */ + #define TIF_POLLING_NRFLAG 16 + #define TIF_USING_IWMMXT 17 + #define TIF_MEMDIE 18 +@@ -144,6 +145,7 @@ extern void vfp_sync_state(struct thread_info *thread); + #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) + #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) + #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) ++#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) + #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) + #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) + #define _TIF_FREEZE (1 << TIF_FREEZE) +diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h +index 94cc58e..cd1eaa0 100644 +--- a/arch/arm/include/asm/unistd.h ++++ b/arch/arm/include/asm/unistd.h +@@ -360,8 +360,8 @@ + #define __NR_readlinkat (__NR_SYSCALL_BASE+332) + #define __NR_fchmodat (__NR_SYSCALL_BASE+333) + #define __NR_faccessat (__NR_SYSCALL_BASE+334) +- /* 335 for pselect6 */ +- /* 336 for ppoll */ ++#define __NR_pselect6 (__NR_SYSCALL_BASE+335) ++#define __NR_ppoll (__NR_SYSCALL_BASE+336) + #define __NR_unshare (__NR_SYSCALL_BASE+337) + #define __NR_set_robust_list (__NR_SYSCALL_BASE+338) + #define __NR_get_robust_list (__NR_SYSCALL_BASE+339) +@@ -372,7 +372,7 @@ + #define __NR_vmsplice (__NR_SYSCALL_BASE+343) + #define __NR_move_pages (__NR_SYSCALL_BASE+344) + #define __NR_getcpu (__NR_SYSCALL_BASE+345) +- /* 346 for epoll_pwait */ ++#define __NR_epoll_pwait (__NR_SYSCALL_BASE+346) + #define __NR_kexec_load (__NR_SYSCALL_BASE+347) + #define __NR_utimensat (__NR_SYSCALL_BASE+348) + #define __NR_signalfd (__NR_SYSCALL_BASE+349) +@@ -430,6 +430,7 @@ + #define __ARCH_WANT_SYS_SIGPENDING + #define __ARCH_WANT_SYS_SIGPROCMASK + #define __ARCH_WANT_SYS_RT_SIGACTION ++#define __ARCH_WANT_SYS_RT_SIGSUSPEND + + #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) + #define __ARCH_WANT_SYS_TIME +diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S +index 1680e9e..534000d 100644 +--- a/arch/arm/kernel/calls.S ++++ b/arch/arm/kernel/calls.S +@@ -344,8 +344,8 @@ + CALL(sys_readlinkat) + CALL(sys_fchmodat) + CALL(sys_faccessat) +-/* 335 */ CALL(sys_ni_syscall) /* eventually pselect6 */ +- CALL(sys_ni_syscall) /* eventually ppoll */ ++/* 335 */ CALL(sys_pselect6) ++ CALL(sys_ppoll) + CALL(sys_unshare) + CALL(sys_set_robust_list) + CALL(sys_get_robust_list) +@@ -355,7 +355,7 @@ + CALL(sys_vmsplice) + CALL(sys_move_pages) + /* 345 */ CALL(sys_getcpu) +- CALL(sys_ni_syscall) /* eventually epoll_pwait */ ++ CALL(sys_epoll_pwait) + CALL(sys_kexec_load) + CALL(sys_utimensat) + CALL(sys_signalfd) +diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c +index 80b8b5c..7645048 100644 +--- a/arch/arm/kernel/signal.c ++++ b/arch/arm/kernel/signal.c +@@ -47,57 +47,23 @@ const unsigned long sigreturn_codes[7] = { + MOV_R7_NR_RT_SIGRETURN, SWI_SYS_RT_SIGRETURN, SWI_THUMB_RT_SIGRETURN, + }; + +-static int do_signal(sigset_t *oldset, struct pt_regs * regs, int syscall); ++static void do_signal(struct pt_regs * regs, int syscall); + + /* + * atomically swap in the new signal mask, and wait for a signal. + */ +-asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask, struct pt_regs *regs) ++asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask) + { +- sigset_t saveset; +- + mask &= _BLOCKABLE; + spin_lock_irq(¤t->sighand->siglock); +- saveset = current->blocked; ++ current->saved_sigmask = current->blocked; + siginitset(¤t->blocked, mask); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); +- regs->ARM_r0 = -EINTR; +- +- while (1) { +- current->state = TASK_INTERRUPTIBLE; +- schedule(); +- if (do_signal(&saveset, regs, 0)) +- return regs->ARM_r0; +- } +-} +- +-asmlinkage int +-sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, struct pt_regs *regs) +-{ +- sigset_t saveset, newset; +- +- /* XXX: Don't preclude handling different sized sigset_t's. */ +- if (sigsetsize != sizeof(sigset_t)) +- return -EINVAL; +- +- if (copy_from_user(&newset, unewset, sizeof(newset))) +- return -EFAULT; +- sigdelsetmask(&newset, ~_BLOCKABLE); +- +- spin_lock_irq(¤t->sighand->siglock); +- saveset = current->blocked; +- current->blocked = newset; +- recalc_sigpending(); +- spin_unlock_irq(¤t->sighand->siglock); +- regs->ARM_r0 = -EINTR; +- +- while (1) { +- current->state = TASK_INTERRUPTIBLE; +- schedule(); +- if (do_signal(&saveset, regs, 0)) +- return regs->ARM_r0; +- } ++ current->state = TASK_INTERRUPTIBLE; ++ schedule(); ++ set_thread_flag(TIF_RESTORE_SIGMASK); ++ return -ERESTARTNOHAND; + } + + asmlinkage int +@@ -290,7 +256,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs) + + badframe: + force_sig(SIGSEGV, current); +- return 0; ++ return -EFAULT; + } + + asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) +@@ -325,7 +291,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) + + badframe: + force_sig(SIGSEGV, current); +- return 0; ++ return -EFAULT; + } + + static int +@@ -541,7 +507,7 @@ static inline void restart_syscall(struct pt_regs *regs) + /* + * OK, we're invoking a handler + */ +-static void ++static int + handle_signal(unsigned long sig, struct k_sigaction *ka, + siginfo_t *info, sigset_t *oldset, + struct pt_regs * regs, int syscall) +@@ -592,7 +558,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, + + if (ret != 0) { + force_sigsegv(sig, tsk); +- return; ++ return ret; + } + + /* +@@ -606,6 +572,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, + recalc_sigpending(); + spin_unlock_irq(&tsk->sighand->siglock); + ++ return ret; + } + + /* +@@ -617,11 +584,12 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, + * the kernel can handle, and then we build all the user-level signal handling + * stack-frames in one go after that. + */ +-static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) ++static void do_signal(struct pt_regs *regs, int syscall) + { + struct k_sigaction ka; + siginfo_t info; + int signr; ++ sigset_t *oldset; + + /* + * We want the common case to go fast, which +@@ -630,18 +598,29 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) + * if so. + */ + if (!user_mode(regs)) +- return 0; ++ return; + + if (try_to_freeze()) + goto no_signal; + + single_step_clear(current); + ++ if (test_thread_flag(TIF_RESTORE_SIGMASK)) ++ oldset = ¤t->saved_sigmask; ++ else ++ oldset = ¤t->blocked; ++ + signr = get_signal_to_deliver(&info, &ka, regs, NULL); + if (signr > 0) { +- handle_signal(signr, &ka, &info, oldset, regs, syscall); ++ if (handle_signal(signr, &ka, &info, oldset, regs, syscall) == 0) { ++ /* a signal was successfully delivered; the saved ++ * sigmask will have been stored in the signal frame, ++ * and will be restored by sigreturn, so we can simply ++ * clear the TIF_RESTORE_SIGMASK flag */ ++ clear_thread_flag(TIF_RESTORE_SIGMASK); ++ } + single_step_set(current); +- return 1; ++ return; + } + + no_signal: +@@ -665,7 +644,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) + usp = (u32 __user *)regs->ARM_sp; + + /* +- * Either we supports OABI only, or we have ++ * Either we support OABI only, or we have + * EABI with the OABI compat layer enabled. + * In the later case we don't know if user + * space is EABI or not, and if not we must +@@ -695,12 +674,17 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) + } + } + single_step_set(current); +- return 0; ++ /* if there's no signal to deliver, we just put the saved sigmask ++ back. */ ++ if (test_thread_flag(TIF_RESTORE_SIGMASK)) { ++ clear_thread_flag(TIF_RESTORE_SIGMASK); ++ sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); ++ } + } + + asmlinkage void + do_notify_resume(struct pt_regs *regs, unsigned int thread_flags, int syscall) + { +- if (thread_flags & _TIF_SIGPENDING) +- do_signal(¤t->blocked, regs, syscall); ++ if (thread_flags & (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK)) ++ do_signal(regs, syscall); + } +-- +1.6.2.4 + diff --git a/recipes/quake/files/quake3_makefile.patch b/recipes/quake/files/quake3_makefile.patch new file mode 100644 index 0000000000..b9e94577b2 --- /dev/null +++ b/recipes/quake/files/quake3_makefile.patch @@ -0,0 +1,29 @@ +--- /tmp/Makefile 2009-05-25 14:59:16.000000000 +0530 ++++ git/pandora/Makefile 2009-05-25 15:07:46.000000000 +0530 +@@ -64,14 +64,14 @@ ARFLAGS=ar rv
+ DLL_ONLY=true
+ ARCH=arm
+ VENDOR=dec +-
BASE_CFLAGS = -mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a -mfloat-abi=softfp \
+- -mfpu=neon -ftree-vectorize -ffast-math -fomit-frame-pointer \ ++
BASE_CFLAGS = -O3 -mtune=cortex-a8 -march=armv7-a -mfloat-abi=softfp \
++ -mfpu=neon -ffast-math -fomit-frame-pointer \ + -fno-strict-aliasing -fsingle-precision-constant \ + -I$(PNDSDK)/usr/include -DIPHONE -DBOTLIB -DDLL_ONLY -DC_ONLY -D__arm__ -DSHLIB_SUFFIX="\"so\"" -D_PANDORA_ + + THREAD_LDFLAGS=-lpthread +
+-LDFLAGS=-L$(PNDSDK)/usr/lib -ldl -lm -lX11 -lXau -lXdmcp -lXxf86vm -lXext ++LDFLAGS+=-L$(PNDSDK)/usr/lib -ldl -lm -lX11 -lXau -lXdmcp -lXxf86vm -lXext + + GL_CFAGS = -I$(PNDSDK)/usr/X11R6/include +
+@@ -126,7 +126,7 @@ DO_NASM=nasm -f elf -o $@ $<
+ DO_DED_CC=$(CC) -DDEDICATED -DC_ONLY $(CFLAGS) -o $@ -c $<
+
+ #### DEFAULT TARGET
+-default:build_debug
++default:build_release
+
+ debug: build_debug
+ release: build_release
diff --git a/recipes/quake/quake3-pandora-gles_git.bb b/recipes/quake/quake3-pandora-gles_git.bb new file mode 100644 index 0000000000..d468d34a44 --- /dev/null +++ b/recipes/quake/quake3-pandora-gles_git.bb @@ -0,0 +1,39 @@ +DESCRIPTION = "OpenGL ES quake3 port to the omap3-pandora" +LICENSE = "GPL" + +SRCREV = "39d08bf6e81f7cdc29380858dfe671b0722332a3" +PR_append = "+gitr${SRCREV}" +PV = "0.0" + +DEPENDS = "virtual/libsdl libgles-omap3" + +SRC_URI = "git://github.com/Cpasjuste/quake3_pandora_gles.git;branch=master;protocol=git \ + file://quake3_makefile.patch;patch=1 \ +" +S = "${WORKDIR}/git" + +export PNDSDK="${STAGING_DIR}" + +do_compile() { + cd pandora + sed -i -e s:=arm-none-linux-gnueabi-:=${TARGET_PREFIX}:g Makefile + oe_runmake +} + +do_install() { + install -d ${D}/${bindir} + install -d ${D}/${libdir}/quake3/baseq3/ + + install -m 0755 ${S}/pandora/release${TARGET_ARCH}/baseq3/*.so ${D}/${libdir}/quake3/baseq3 + install -m 0755 ${S}/pandora/release${TARGET_ARCH}/quake3 ${D}/${libdir}/quake3 + + install -m 0755 ${S}/pandora/autoexec.cfg ${D}/${libdir}/quake3/baseq3 + install -m 0755 ${S}/pandora/autoexec_high_detail.cfg ${D}/${libdir}/quake3 + install -m 0755 ${S}/pandora/autoexec_medium_detail.cfg ${D}/${libdir}/quake3 + install -m 0755 ${S}/pandora/autoexec_low_detail.cfg ${D}/${libdir}/quake3 + install -m 0755 ${S}/pandora/run.sh ${D}/${libdir}/quake3 +} + +FILES_${PN} += "${libdir}" +FILES_${PN}-dbg += "${libdir}/quake3/.debug ${libdir}/quake3/baseq3/.debug" + diff --git a/recipes/udev/udev_141.bb b/recipes/udev/udev_141.bb index e7438fb4d6..e687989e9f 100644 --- a/recipes/udev/udev_141.bb +++ b/recipes/udev/udev_141.bb @@ -6,7 +6,10 @@ LICENSE = "GPL" # Untested DEFAULT_PREFERENCE = "-1" -PR = "r6" +PR = "r8" + +# needed for init.d script +RDEPENDS_udev += "udev-utils" SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://mount.blacklist \ @@ -64,6 +67,9 @@ do_install () { mv ${D}${base_libdir}/udev/rules.d ${D}${sysconfdir}/udev/ ln -sf ${sysconfdir}/udev/rules.d ${D}${base_libdir}/udev/ + cp ${S}/rules/rules.d/* ${D}${sysconfdir}/udev/rules.d/ + cp ${S}/rules/packages/* ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules diff --git a/recipes/xorg-driver/xf86-video-geode/0001-probe-GPIO-device-before-asking-for-base_addr.patch b/recipes/xorg-driver/xf86-video-geode/0001-probe-GPIO-device-before-asking-for-base_addr.patch new file mode 100644 index 0000000000..af267ba269 --- /dev/null +++ b/recipes/xorg-driver/xf86-video-geode/0001-probe-GPIO-device-before-asking-for-base_addr.patch @@ -0,0 +1,30 @@ +From 1c70b4d2b70155558a9b5edb79a172696c16e129 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador <otavio@ossystems.com.br> +Date: Fri, 22 May 2009 18:02:04 -0300 +Subject: [PATCH] probe GPIO device before asking for base_addr + +After finding the PCI ISA device it is required to ask for the +resources to be read, before we use the base_addr for GPIO. + +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + src/geode_ddc.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/src/geode_ddc.c b/src/geode_ddc.c +index 2533488..086dbb1 100644 +--- a/src/geode_ddc.c ++++ b/src/geode_ddc.c +@@ -72,6 +72,9 @@ geode_gpio_iobase(void) + if (pci == NULL) + return 0; + ++ if (pci_device_probe(pci) != 0) ++ return 0; ++ + /* The GPIO I/O address is in resource 1 */ + return (unsigned short)pci->regions[1].base_addr; + #else +-- +1.6.3.1.54.g99dd + diff --git a/recipes/xorg-driver/xf86-video-geode/0002-GX-fix-RandR-to-properly-use-dixSetPrivate.patch b/recipes/xorg-driver/xf86-video-geode/0002-GX-fix-RandR-to-properly-use-dixSetPrivate.patch new file mode 100644 index 0000000000..7408473063 --- /dev/null +++ b/recipes/xorg-driver/xf86-video-geode/0002-GX-fix-RandR-to-properly-use-dixSetPrivate.patch @@ -0,0 +1,56 @@ +From 312b5ad7a3e1f92abaa113c3e72c8da5cb3e6cb0 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador <otavio@ossystems.com.br> +Date: Fri, 22 May 2009 20:40:16 -0300 +Subject: [PATCH 2/2] [GX] fix RandR to properly use dixSetPrivate + +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + src/gx_randr.c | 13 +++---------- + 1 files changed, 3 insertions(+), 10 deletions(-) + +diff --git a/src/gx_randr.c b/src/gx_randr.c +index 6cdd244..68e1dbd 100644 +--- a/src/gx_randr.c ++++ b/src/gx_randr.c +@@ -57,18 +57,13 @@ typedef struct _GXRandRInfo + + #define AMD_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4) + +-#if AMD_OLDPRIV +- + static int GXRandRIndex; + ++#if AMD_OLDPRIV + #define XF86RANDRINFO(p) ((XF86RandRInfoPtr) (p)->devPrivates[GXRandRIndex].ptr) + #else +- +-static DevPrivateKey GXRandRKey; +- + #define XF86RANDRINFO(p) ((XF86RandRInfoPtr) \ +- dixLookupPrivate(&(p)->devPrivates, GXRandRKey)); +- ++ dixLookupPrivate(&(p)->devPrivates, GXRandRIndex)); + #endif + + static int +@@ -333,8 +328,6 @@ GXRandRInit(ScreenPtr pScreen, int rotation) + } + #if AMD_OLDPRIV + GXRandRIndex = AllocateScreenPrivateIndex(); +-#else +- GXRandRKey = &GXRandRKey; + #endif + + pRandr = xcalloc(sizeof(XF86RandRInfoRec), 1); +@@ -363,7 +356,7 @@ GXRandRInit(ScreenPtr pScreen, int rotation) + #if AMD_OLDPRIV + pScreen->devPrivates[GXRandRIndex].ptr = pRandr; + #else +- dixSetPrivate(&pScreen->devPrivates, GXRandRKey, pRandr); ++ dixSetPrivate(&pScreen->devPrivates, &GXRandRIndex, pRandr); + #endif + return TRUE; + } +-- +1.6.3.1.54.g99dd + diff --git a/recipes/xorg-driver/xf86-video-geode_2.11.2.bb b/recipes/xorg-driver/xf86-video-geode_2.11.2.bb index 380ce2ea0b..5f1cc3ad03 100644 --- a/recipes/xorg-driver/xf86-video-geode_2.11.2.bb +++ b/recipes/xorg-driver/xf86-video-geode_2.11.2.bb @@ -1,5 +1,10 @@ require xorg-driver-video.inc PE = "1" +PR = "r1" COMPATIBLE_HOST = 'i.86.*-linux' DESCRIPTION = "X.org server -- Geode GX2/LX display driver" + +SRC_URI += "file://0001-probe-GPIO-device-before-asking-for-base_addr.patch;patch=1 \ + file://0002-GX-fix-RandR-to-properly-use-dixSetPrivate.patch;patch=1 \ + " |