Add support for GT-S756x (kylessopen, Galaxy Trend/S Duos/Ace II x) (#1361)
This commit is contained in:
parent
afa759414d
commit
278dfcbbe8
22
device/device-samsung-kylessopen/APKBUILD
Normal file
22
device/device-samsung-kylessopen/APKBUILD
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Reference: <https://postmarketos.org/devicepkg>
|
||||||
|
pkgname="device-samsung-kylessopen"
|
||||||
|
pkgdesc="Galaxy Trend"
|
||||||
|
pkgver=0.1
|
||||||
|
pkgrel=0
|
||||||
|
url="https://postmarketos.org"
|
||||||
|
license="MIT"
|
||||||
|
arch="noarch"
|
||||||
|
options="!check"
|
||||||
|
depends="postmarketos-base linux-samsung-kylessopen mkbootimg mesa-dri-swrast msm-fb-refresher"
|
||||||
|
makedepends="devicepkg-dev"
|
||||||
|
source="deviceinfo"
|
||||||
|
|
||||||
|
build() {
|
||||||
|
devicepkg_build $startdir $pkgname
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
devicepkg_package $startdir $pkgname
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="724d8417ddb631f02789efa388cca790271767716b4c2d072d81d5def02eb339255f52514cfda3987d6318105767bbbf5f98714d3a3da1639bd807b4507ecfc1 deviceinfo"
|
37
device/device-samsung-kylessopen/deviceinfo
Normal file
37
device/device-samsung-kylessopen/deviceinfo
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Reference: <https://postmarketos.org/deviceinfo>
|
||||||
|
# Please use double quotes only. You can source this file in shell scripts.
|
||||||
|
|
||||||
|
deviceinfo_format_version="0"
|
||||||
|
deviceinfo_name="Galaxy Trend"
|
||||||
|
deviceinfo_manufacturer="Samsung"
|
||||||
|
deviceinfo_date=""
|
||||||
|
deviceinfo_dtb=""
|
||||||
|
deviceinfo_modules_initfs=""
|
||||||
|
deviceinfo_external_storage="true"
|
||||||
|
deviceinfo_arch="armhf"
|
||||||
|
|
||||||
|
# Device related
|
||||||
|
deviceinfo_keyboard="false"
|
||||||
|
#deviceinfo_external_disk="true"
|
||||||
|
deviceinfo_screen_width="480"
|
||||||
|
deviceinfo_screen_height="800"
|
||||||
|
deviceinfo_dev_touchscreen="/dev/input/event0"
|
||||||
|
deviceinfo_dev_touchscreen_calibration=""
|
||||||
|
deviceinfo_dev_keyboard=""
|
||||||
|
deviceinfo_msm_refresher="true"
|
||||||
|
# Bootloader related
|
||||||
|
deviceinfo_flash_method="heimdall-bootimg"
|
||||||
|
|
||||||
|
deviceinfo_flash_heimdall_partition_kernel="APPS"
|
||||||
|
deviceinfo_flash_heimdall_partition_system="SYSTEM"
|
||||||
|
|
||||||
|
deviceinfo_kernel_cmdline="androidboot.hardware=kylessopen"
|
||||||
|
deviceinfo_generate_bootimg="true"
|
||||||
|
deviceinfo_bootimg_qcdt="false"
|
||||||
|
deviceinfo_flash_offset_base="0x00200000"
|
||||||
|
deviceinfo_flash_offset_kernel="0x00008000"
|
||||||
|
deviceinfo_flash_offset_ramdisk="0x01300000"
|
||||||
|
deviceinfo_flash_offset_second="0x00f00000"
|
||||||
|
deviceinfo_flash_offset_tags="0x00000100"
|
||||||
|
deviceinfo_flash_pagesize="4096"
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
From 79f928baf4e7b0fa8f36276b2f877da2d46a50d0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
||||||
|
Date: Mon, 11 Dec 2017 11:00:24 -0200
|
||||||
|
Subject: [PATCH] fix video argb setting
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/video/msm/msm_fb.c | 34 +++++++++++++++++-----------------
|
||||||
|
1 file changed, 17 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/video/msm/msm_fb.c b/drivers/video/msm/msm_fb.c
|
||||||
|
index 251a5cbb753d..dcd9262a88f4 100644
|
||||||
|
--- a/drivers/video/msm/msm_fb.c
|
||||||
|
+++ b/drivers/video/msm/msm_fb.c
|
||||||
|
@@ -1342,16 +1342,16 @@ static int msm_fb_register(struct msm_fb_data_type *mfd)
|
||||||
|
fix->xpanstep = 1;
|
||||||
|
fix->ypanstep = 1;
|
||||||
|
var->vmode = FB_VMODE_NONINTERLACED;
|
||||||
|
- var->blue.offset = 0;
|
||||||
|
- var->green.offset = 8;
|
||||||
|
- var->red.offset = 16;
|
||||||
|
+ var->blue.offset = 24;
|
||||||
|
+ var->green.offset = 16;
|
||||||
|
+ var->red.offset = 8;
|
||||||
|
var->blue.length = 8;
|
||||||
|
var->green.length = 8;
|
||||||
|
var->red.length = 8;
|
||||||
|
var->blue.msb_right = 0;
|
||||||
|
var->green.msb_right = 0;
|
||||||
|
var->red.msb_right = 0;
|
||||||
|
- var->transp.offset = 24;
|
||||||
|
+ var->transp.offset = 0;
|
||||||
|
var->transp.length = 8;
|
||||||
|
bpp = 4;
|
||||||
|
break;
|
||||||
|
@@ -1361,16 +1361,16 @@ static int msm_fb_register(struct msm_fb_data_type *mfd)
|
||||||
|
fix->xpanstep = 1;
|
||||||
|
fix->ypanstep = 1;
|
||||||
|
var->vmode = FB_VMODE_NONINTERLACED;
|
||||||
|
- var->blue.offset = 8;
|
||||||
|
- var->green.offset = 16;
|
||||||
|
- var->red.offset = 24;
|
||||||
|
+ var->blue.offset = 16;
|
||||||
|
+ var->green.offset = 8;
|
||||||
|
+ var->red.offset = 0;
|
||||||
|
var->blue.length = 8;
|
||||||
|
var->green.length = 8;
|
||||||
|
var->red.length = 8;
|
||||||
|
var->blue.msb_right = 0;
|
||||||
|
var->green.msb_right = 0;
|
||||||
|
var->red.msb_right = 0;
|
||||||
|
- var->transp.offset = 0;
|
||||||
|
+ var->transp.offset = 24;
|
||||||
|
var->transp.length = 8;
|
||||||
|
bpp = 4;
|
||||||
|
break;
|
||||||
|
@@ -2260,15 +2260,15 @@ static int msm_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||||
|
/* Figure out if the user meant RGBA or ARGB
|
||||||
|
and verify the position of the RGB components */
|
||||||
|
|
||||||
|
- if (var->transp.offset == 24) {
|
||||||
|
- if ((var->blue.offset != 0) ||
|
||||||
|
- (var->green.offset != 8) ||
|
||||||
|
- (var->red.offset != 16))
|
||||||
|
- return -EINVAL;
|
||||||
|
- } else if (var->transp.offset == 0) {
|
||||||
|
- if ((var->blue.offset != 8) ||
|
||||||
|
+ if (var->transp.offset == 0) {
|
||||||
|
+ if ((var->blue.offset != 24) ||
|
||||||
|
(var->green.offset != 16) ||
|
||||||
|
- (var->red.offset != 24))
|
||||||
|
+ (var->red.offset != 8))
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ } else if (var->transp.offset == 24) {
|
||||||
|
+ if ((var->blue.offset != 16) ||
|
||||||
|
+ (var->green.offset != 8) ||
|
||||||
|
+ (var->red.offset != 0))
|
||||||
|
return -EINVAL;
|
||||||
|
} else
|
||||||
|
return -EINVAL;
|
||||||
|
@@ -2365,7 +2365,7 @@ static int msm_fb_set_par(struct fb_info *info)
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 32:
|
||||||
|
- if (var->transp.offset == 24)
|
||||||
|
+ if (var->transp.offset == 0)
|
||||||
|
mfd->fb_imgType = MDP_ARGB_8888;
|
||||||
|
else
|
||||||
|
mfd->fb_imgType = MDP_RGBA_8888;
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
From e41494c15d4df342854ac3d2940f5d6ac3158212 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bryan Huntsman <bryanh@codeaurora.org>
|
||||||
|
Date: Mon, 3 Jun 2013 18:48:08 -0700
|
||||||
|
Subject: [PATCH] msm: fix in-tree compilation for perf_trace_counters
|
||||||
|
|
||||||
|
In-tree compilation for arch/arm/mach-msm/perf_trace_counters.c was
|
||||||
|
hitting this error:
|
||||||
|
|
||||||
|
In file included from arch/arm/mach-msm/perf_trace_counters.h:127:0,
|
||||||
|
from arch/arm/mach-msm/perf_trace_counters.c:14:
|
||||||
|
include/trace/define_trace.h:79:43: fatal error: ./perf_trace_counters.h: No such file or directory
|
||||||
|
|
||||||
|
Instructions for TRACE_INCLUDE_FILE in include/trace/define_trace.h say
|
||||||
|
"the path is relative to define_trace.h, not the file including it".
|
||||||
|
Fix in-tree compilation by making the path relative to define_trace.h.
|
||||||
|
|
||||||
|
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
|
||||||
|
---
|
||||||
|
arch/arm/mach-msm/perf_trace_counters.h | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-msm/perf_trace_counters.h b/arch/arm/mach-msm/perf_trace_counters.h
|
||||||
|
index ce7e336aa40d..8f77badf42ac 100644
|
||||||
|
--- a/arch/arm/mach-msm/perf_trace_counters.h
|
||||||
|
+++ b/arch/arm/mach-msm/perf_trace_counters.h
|
||||||
|
@@ -121,7 +121,6 @@ TRACE_EVENT(sched_switch_with_ctrs,
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#undef TRACE_INCLUDE_PATH
|
||||||
|
-#define TRACE_INCLUDE_PATH .
|
||||||
|
+#define TRACE_INCLUDE_PATH ../../arch/arm/mach-msm
|
||||||
|
#define TRACE_INCLUDE_FILE perf_trace_counters
|
||||||
|
#include <trace/define_trace.h>
|
||||||
|
-
|
|
@ -0,0 +1,33 @@
|
||||||
|
source:
|
||||||
|
https://github.com/ShinySide/HispAsian_Lollipop_G6/commit/b7756b6fc4bb728722b14d2dfdbaf1dc843812e9
|
||||||
|
|
||||||
|
* These need to be static to avoid these errors:
|
||||||
|
|
||||||
|
drivers/built-in.o: In function `.LANCHOR1':
|
||||||
|
msm_iommu_sec.c:(.data+0x9298): undefined reference to `kgsl_iommu_sync_lock'
|
||||||
|
msm_iommu_sec.c:(.data+0x929c): undefined reference to `kgsl_iommu_sync_unlock'
|
||||||
|
Makefile:877: recipe for target '.tmp_vmlinux1' failed
|
||||||
|
make: *** [.tmp_vmlinux1] Error 1
|
||||||
|
|
||||||
|
Signed-off-by: Chet Kener <Cl3Kener@gmail.com>
|
||||||
|
|
||||||
|
--- a/drivers/gpu/msm/kgsl_iommu.c
|
||||||
|
+++ b/drivers/gpu/msm/kgsl_iommu.c
|
||||||
|
@@ -1010,7 +1010,7 @@ static int kgsl_iommu_init_sync_lock(struct kgsl_mmu *mmu)
|
||||||
|
*
|
||||||
|
* Return - int - number of commands.
|
||||||
|
*/
|
||||||
|
-inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
|
||||||
|
+static inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
|
||||||
|
unsigned int *cmds)
|
||||||
|
{
|
||||||
|
struct kgsl_device *device = mmu->device;
|
||||||
|
@@ -1080,7 +1080,7 @@ inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
|
||||||
|
*
|
||||||
|
* Return - int - number of commands.
|
||||||
|
*/
|
||||||
|
-inline unsigned int kgsl_iommu_sync_unlock(struct kgsl_mmu *mmu,
|
||||||
|
+static inline unsigned int kgsl_iommu_sync_unlock(struct kgsl_mmu *mmu,
|
||||||
|
unsigned int *cmds)
|
||||||
|
{
|
||||||
|
struct kgsl_device *device = mmu->device;
|
90
device/linux-samsung-kylessopen/APKBUILD
Normal file
90
device/linux-samsung-kylessopen/APKBUILD
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# Kernel config based on: arch/arm/configs/franken_defconfig
|
||||||
|
|
||||||
|
pkgname="linux-samsung-kylessopen"
|
||||||
|
pkgver=3.0.101
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Galaxy Trend kernel fork"
|
||||||
|
arch="armhf"
|
||||||
|
_carch="arm"
|
||||||
|
_flavor="samsung-kylessopen"
|
||||||
|
url="https://kernel.org"
|
||||||
|
license="GPL2"
|
||||||
|
options="!strip !check !tracedeps"
|
||||||
|
makedepends="perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev lzo xz"
|
||||||
|
HOSTCC="${CC:-gcc}"
|
||||||
|
HOSTCC="${HOSTCC#${CROSS_COMPILE}}"
|
||||||
|
|
||||||
|
# Source
|
||||||
|
_repository="FrankenKernel"
|
||||||
|
_commit="d0e853abec2d7be79f5d9b319273a0b66046b125"
|
||||||
|
_config="config-${_flavor}.${arch}"
|
||||||
|
source="
|
||||||
|
$pkgname-$_commit.tar.gz::https://github.com/pavlepiramida/${_repository}/archive/${_commit}.tar.gz
|
||||||
|
$_config
|
||||||
|
compiler-gcc6.h
|
||||||
|
gcc5.patch
|
||||||
|
0001-fix-video-argb-setting.patch
|
||||||
|
"
|
||||||
|
builddir="$srcdir/${_repository}-${_commit}"
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
default_prepare
|
||||||
|
|
||||||
|
# gcc6 support
|
||||||
|
cp -v "$srcdir/compiler-gcc6.h" "$builddir/include/linux/"
|
||||||
|
|
||||||
|
# Remove -Werror from all makefiles
|
||||||
|
local i
|
||||||
|
local makefiles="$(find . -type f -name Makefile)
|
||||||
|
$(find . -type f -name Kbuild)"
|
||||||
|
for i in $makefiles; do
|
||||||
|
sed -i 's/-Werror-/-W/g' "$i"
|
||||||
|
sed -i 's/-Werror//g' "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Prepare kernel config ('yes ""' for kernels lacking olddefconfig)
|
||||||
|
cp "$srcdir"/$_config "$builddir"/.config
|
||||||
|
yes "" | make ARCH="$_carch" HOSTCC="$HOSTCC" oldconfig
|
||||||
|
}
|
||||||
|
|
||||||
|
menuconfig() {
|
||||||
|
cd "$builddir"
|
||||||
|
make ARCH="$_carch" menuconfig
|
||||||
|
cp .config "$startdir"/$_config
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
unset LDFLAGS
|
||||||
|
make ARCH="$_carch" CC="${CC:-gcc}" \
|
||||||
|
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
# kernel.release
|
||||||
|
install -D "$builddir/include/config/kernel.release" \
|
||||||
|
"$pkgdir/usr/share/kernel/$_flavor/kernel.release"
|
||||||
|
|
||||||
|
# zImage (find the right one)
|
||||||
|
cd "$builddir/arch/$_carch/boot"
|
||||||
|
_target="$pkgdir/boot/vmlinuz-$_flavor"
|
||||||
|
for _zimg in zImage-dtb Image.gz-dtb *zImage Image; do
|
||||||
|
[ -e "$_zimg" ] || continue
|
||||||
|
msg "zImage found: $_zimg"
|
||||||
|
install -Dm644 "$_zimg" "$_target"
|
||||||
|
break
|
||||||
|
done
|
||||||
|
if ! [ -e "$_target" ]; then
|
||||||
|
error "Could not find zImage in $PWD!"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "--[ Installing modules ]--"
|
||||||
|
cd "$builddir"
|
||||||
|
make ARCH="$_carch" CC="${CC:-gcc}" \
|
||||||
|
INSTALL_MOD_PATH="$pkgdir" KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" modules_install
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="22c89caaae880c64fb1a9e25ff5c65813b4bfa9a27ca4310fe9da17c4a1bfff2b49b4516f48fd30a4ccb1a185fc525b0c5967b4f18bfd3c2f8cfce66c8a268bd linux-samsung-kylessopen-d0e853abec2d7be79f5d9b319273a0b66046b125.tar.gz
|
||||||
|
b28a411506adb2540c3de93b4d7529d25efb96ab93b31417bd78c4deea3b1e4f63bd4240d090dd27c54040e9c937a27bc8702d471be414722265d2dbd1cf4630 config-samsung-kylessopen.armhf
|
||||||
|
d80980e9474c82ba0ef1a6903b434d8bd1b092c40367ba543e72d2c119301c8b2d05265740e4104ca1ac5d15f6c4aa49e8776cb44264a9a28dc551e0d1850dcc compiler-gcc6.h
|
||||||
|
db5d16e03a93b453c98882dcd08b7a4cd96c126393365d8916d9cf045e8725831f70ea841756526af7bead36a74301024e3c569c438442906e079fea2ac0a022 gcc5.patch
|
||||||
|
e3083c260ed9c4fc0d83f43106700b6173876dbfae072f6e6696ac6785a4dc17771fbcb3e21601e04ed29a11bf0f7a2a09ad549375e0c34cea245c7f2e2bcbbd 0001-fix-video-argb-setting.patch"
|
69
device/linux-samsung-kylessopen/compiler-gcc6.h
Normal file
69
device/linux-samsung-kylessopen/compiler-gcc6.h
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
// SOURCE:
|
||||||
|
// https://github.com/NextThingCo/CHIP-u-boot/issues/10#issuecomment-287515505
|
||||||
|
|
||||||
|
#ifndef __LINUX_COMPILER_H
|
||||||
|
#error "Please don't include <linux/compiler-gcc6.h> directly, include <linux/compiler.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __used __attribute__((__used__))
|
||||||
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
|
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||||
|
|
||||||
|
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
to them will be unlikely. This means a lot of manual unlikely()s
|
||||||
|
are unnecessary now for any paths leading to the usual suspects
|
||||||
|
like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||||
|
older compilers]
|
||||||
|
|
||||||
|
Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||||
|
in the preprocessor, but we can live with this because they're unreleased.
|
||||||
|
Maketime probing would be overkill here.
|
||||||
|
|
||||||
|
gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||||
|
a special section, but I don't see any sense in this right now in
|
||||||
|
the kernel context */
|
||||||
|
#define __cold __attribute__((__cold__))
|
||||||
|
|
||||||
|
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
|
# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
|
# define __compiletime_error(message) __attribute__((error(message)))
|
||||||
|
#endif /* __CHECKER__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark a position in code as unreachable. This can be used to
|
||||||
|
* suppress control flow warnings after asm blocks that transfer
|
||||||
|
* control elsewhere.
|
||||||
|
*
|
||||||
|
* Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||||
|
* this in the preprocessor, but we can live with this because they're
|
||||||
|
* unreleased. Really, we need to have autoconf for the kernel.
|
||||||
|
*/
|
||||||
|
#define unreachable() __builtin_unreachable()
|
||||||
|
|
||||||
|
/* Mark a function definition as prohibited from being cloned. */
|
||||||
|
#define __noclone __attribute__((__noclone__))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the optimizer that something else uses this function or variable.
|
||||||
|
*/
|
||||||
|
#define __visible __attribute__((externally_visible))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GCC 'asm goto' miscompiles certain code sequences:
|
||||||
|
*
|
||||||
|
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||||
|
*
|
||||||
|
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||||
|
*
|
||||||
|
* (asm goto is automatically volatile - the naming reflects this.)
|
||||||
|
*/
|
||||||
|
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||||
|
#define __HAVE_BUILTIN_BSWAP32__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP64__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP16__
|
||||||
|
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||||
|
|
3072
device/linux-samsung-kylessopen/config-samsung-kylessopen.armhf
Normal file
3072
device/linux-samsung-kylessopen/config-samsung-kylessopen.armhf
Normal file
File diff suppressed because it is too large
Load Diff
114
device/linux-samsung-kylessopen/gcc5.patch
Normal file
114
device/linux-samsung-kylessopen/gcc5.patch
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
From e824d45043efd49607f66c89c921b07c1523bf9e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marco Franceschetti <vonfritz1@gmail.com>
|
||||||
|
Date: Sun, 13 Mar 2016 09:44:54 +0100
|
||||||
|
Subject: [PATCH] Fix compile errors with gcc5
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/include/asm/ftrace.h | 2 +-
|
||||||
|
arch/arm/kernel/return_address.c | 5 --
|
||||||
|
include/linux/compiler-gcc5.h | 66 ++++++++++++++++++++++
|
||||||
|
7 files changed, 79 insertions(+), 18 deletions(-)
|
||||||
|
create mode 100644 include/linux/compiler-gcc5.h
|
||||||
|
|
||||||
|
diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
|
||||||
|
index f89515adac6..2bb8cac28b9 100644
|
||||||
|
--- a/arch/arm/include/asm/ftrace.h
|
||||||
|
+++ b/arch/arm/include/asm/ftrace.h
|
||||||
|
@@ -45,7 +45,7 @@ void *return_address(unsigned int);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
-extern inline void *return_address(unsigned int level)
|
||||||
|
+static inline void *return_address(unsigned int level)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c
|
||||||
|
index 2f8f523cece..a3b587ffc14 100755
|
||||||
|
--- a/arch/arm/kernel/return_address.c
|
||||||
|
+++ b/arch/arm/kernel/return_address.c
|
||||||
|
@@ -63,11 +63,6 @@ void *return_address(unsigned int level)
|
||||||
|
//#warning "TODO: return_address should use unwind tables"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
-void *return_address(unsigned int level)
|
||||||
|
-{
|
||||||
|
- return NULL;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */
|
||||||
|
|
||||||
|
EXPORT_SYMBOL_GPL(return_address);
|
||||||
|
|
||||||
|
diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..cdd1cc202d5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/include/linux/compiler-gcc5.h
|
||||||
|
@@ -0,0 +1,66 @@
|
||||||
|
+#ifndef __LINUX_COMPILER_H
|
||||||
|
+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define __used __attribute__((__used__))
|
||||||
|
+#define __must_check __attribute__((warn_unused_result))
|
||||||
|
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||||
|
+
|
||||||
|
+/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
+ to them will be unlikely. This means a lot of manual unlikely()s
|
||||||
|
+ are unnecessary now for any paths leading to the usual suspects
|
||||||
|
+ like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||||
|
+ older compilers]
|
||||||
|
+
|
||||||
|
+ Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||||
|
+ in the preprocessor, but we can live with this because they're unreleased.
|
||||||
|
+ Maketime probing would be overkill here.
|
||||||
|
+
|
||||||
|
+ gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||||
|
+ a special section, but I don't see any sense in this right now in
|
||||||
|
+ the kernel context */
|
||||||
|
+#define __cold __attribute__((__cold__))
|
||||||
|
+
|
||||||
|
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||||
|
+
|
||||||
|
+#ifndef __CHECKER__
|
||||||
|
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
|
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||||
|
+#endif /* __CHECKER__ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Mark a position in code as unreachable. This can be used to
|
||||||
|
+ * suppress control flow warnings after asm blocks that transfer
|
||||||
|
+ * control elsewhere.
|
||||||
|
+ *
|
||||||
|
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||||
|
+ * this in the preprocessor, but we can live with this because they're
|
||||||
|
+ * unreleased. Really, we need to have autoconf for the kernel.
|
||||||
|
+ */
|
||||||
|
+#define unreachable() __builtin_unreachable()
|
||||||
|
+
|
||||||
|
+/* Mark a function definition as prohibited from being cloned. */
|
||||||
|
+#define __noclone __attribute__((__noclone__))
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Tell the optimizer that something else uses this function or variable.
|
||||||
|
+ */
|
||||||
|
+#define __visible __attribute__((externally_visible))
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||||
|
+ *
|
||||||
|
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||||
|
+ *
|
||||||
|
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||||
|
+ * Fixed in GCC 4.8.2 and later versions.
|
||||||
|
+ *
|
||||||
|
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||||
|
+ */
|
||||||
|
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||||
|
+
|
||||||
|
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||||
|
+#define __HAVE_BUILTIN_BSWAP32__
|
||||||
|
+#define __HAVE_BUILTIN_BSWAP64__
|
||||||
|
+#define __HAVE_BUILTIN_BSWAP16__
|
||||||
|
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
Loading…
Reference in New Issue
Block a user