summarylogtreecommitdiffstats
path: root/gcc5-something_something_the_dark_side.patch
diff options
context:
space:
mode:
authorVi0L02016-01-20 11:21:47 +0100
committerVi0L02016-01-20 11:21:47 +0100
commiteadf2b77178f8eebd804aef5d3ad69a520f79f43 (patch)
tree55241b4971e0e4f48be18684e9e03ff3d0cdc8ce /gcc5-something_something_the_dark_side.patch
parent22555aac2aea69e426e4c50122159cbd186f7aa3 (diff)
downloadaur-eadf2b77178f8eebd804aef5d3ad69a520f79f43.tar.gz
13.1-33.2: kernel 4.4 support + gcc5 support + fixing lib32/dri symlink
Diffstat (limited to 'gcc5-something_something_the_dark_side.patch')
-rw-r--r--gcc5-something_something_the_dark_side.patch421
1 files changed, 421 insertions, 0 deletions
diff --git a/gcc5-something_something_the_dark_side.patch b/gcc5-something_something_the_dark_side.patch
new file mode 100644
index 000000000000..6ec3de3dfdf0
--- /dev/null
+++ b/gcc5-something_something_the_dark_side.patch
@@ -0,0 +1,421 @@
+diff -uNr 15.12/common/lib/modules/fglrx/15.12/common/lib/modules/fglrx/build_mod/firegl_public.c 15.12b/common/lib/modules/fglrx/build_mod/firegl_public.c
+--- 15.12/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-12-22 20:38:02.000000000 +0100
++++ 15.12b/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-12-22 21:23:25.960041558 +0100
+@@ -6154,6 +6154,7 @@
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+ kernel_fpu_begin();
+ #else
++ preempt_disable();
+ __kernel_fpu_begin();
+ #endif
+ #else
+@@ -6208,6 +6209,7 @@
+ kernel_fpu_end();
+ #else
+ __kernel_fpu_end();
++ preempt_enable();
+ #endif
+ }
+
+diff -uNr 15.12/common/lib/modules/fglrx/build_mod/kcl_debug.c 15.12b/common/lib/modules/fglrx/build_mod/kcl_debug.c
+--- 15.12/common/lib/modules/fglrx/build_mod/kcl_debug.c 2015-12-22 20:38:02.000000000 +0100
++++ 15.12b/common/lib/modules/fglrx/build_mod/kcl_debug.c 2015-11-25 19:05:48.000000000 +0100
+@@ -29,19 +29,20 @@
+ * - not declared in the corresponding header
+ *
+ */
+-
+ #include <asm-generic/errno-base.h> //for EINVAL definition
+
+ #include <linux/version.h>
+ #include <linux/kernel.h>
+ #include <linux/sysrq.h>
+-
++#include <linux/thread_info.h>
++#include "firegl_public.h"
+ #include "kcl_debug.h"
+
++extern void* ATI_API_CALL KCL_MEM_SmallBufferAllocAtomic(kcl_size_t size);
++extern void ATI_API_CALL KCL_MEM_SmallBufferFree(void* p);
++
+ extern int ATI_API_CALL firegl_debug_dump(void);
+
+-extern void* ATI_API_CALL KCL_MEM_SmallBufferAllocAtomic(unsigned long size);
+-extern void ATI_API_CALL KCL_MEM_SmallBufferFree(void* p);
+ static unsigned int prvGetCpuId(void);
+
+ static void kcl_debug_sysrq_dump_handler(int key
+@@ -141,7 +142,6 @@
+ */
+ void ATI_API_CALL KCL_DEBUG_Print(const char* fmt, ...)
+ {
+-
+ char* buffer=KCL_MEM_SmallBufferAllocAtomic(MAX_STRING_LENGTH);
+ va_list marker;
+
+@@ -156,6 +156,47 @@
+ KCL_MEM_SmallBufferFree(buffer);
+ }
+
++/** \brief Print debug information to the OS debug console according to traceMask and debugMask
++ * \param traceMask Bit mask of enabled trace function
++ * \param debugMask Bit mask of enabled debug level. 0-7 total
++ * \param name function name
++ * \param line line number inside the file
++ * \param the print parameter
++ * \param fmt printf-like formatting string
++ * \param ... printf-like parameters
++ */
++void ATI_API_CALL KCL_DEBUG_Print_Trace(unsigned int traceMask, unsigned int debugMask, void* name, int line, long param, const char* fmt, ...)
++{
++ int print = firegl_trace(traceMask, debugMask, name, line, param);
++ if(print)
++ {
++ int len;
++ char* buffer=KCL_MEM_SmallBufferAllocAtomic(MAX_STRING_LENGTH);
++ if(buffer==NULL)
++ return;
++ if(fmt == NULL)
++ {
++ buffer[0] = '\n';
++ buffer[1] = '\0';
++ }
++ else
++ {
++ va_list marker;
++ va_start(marker, fmt);
++ kcl_vsnprintf(buffer,255,fmt, marker);
++ va_end(marker);
++ len = strlen(buffer);
++ if(buffer[len-1] != '\n')
++ {
++ buffer[len]='\n';
++ buffer[len+1]='\0';
++ }
++ }
++ KCL_DEBUG_Print("[fglrx] %s:%d %s", (char*)name, line, buffer);
++ KCL_MEM_SmallBufferFree(buffer);
++ }
++}
++
+ /** \brief Register keyboard handler to dump module internal state
+ * \param enable 1 to register the handler, 0 to unregister it
+ * \return 0
+@@ -170,7 +211,6 @@
+ {
+ unregister_sysrq_key('l', &kcl_debug_sysrq_dump_op);
+ }
+-
+ return 0;
+ }
+
+@@ -180,7 +220,6 @@
+ {
+ dump_stack();
+ }
+-
+ /* FIXME: this is temporary workaround to support code using old naming convention */
+
+ void ATI_API_CALL __ke_printk(const char* fmt, ...)
+@@ -204,4 +243,67 @@
+
+ /* End of FIXME */
+
++#ifdef CONFIG_4KSTACKS
++#define STACK_SIZE_MASK 4095UL
++#define STACK_SIZE (4096 - sizeof(struct thread_info))
++#else
++#define STACK_SIZE_MASK 8191UL
++#define STACK_SIZE (8192 - sizeof(struct thread_info))
++#endif
+
++static unsigned long stackBase(void)
++{
++ unsigned long esp = ((unsigned long)&esp) & ~STACK_SIZE_MASK;
++ return esp + sizeof(struct thread_info);
++}
++
++/* Don't inline this. The stack frame of this function provides
++ * protection to the caller's stack frame. */
++static noinline unsigned long stackCur(void)
++{
++ unsigned long esp = (unsigned long)&esp;
++ return esp;
++}
++
++/** \brief Mark unused stack with a magick number
++ *
++ * \return Current amount of stack used in bytes
++ */
++#define STACK_TAG 0x89abcdef
++unsigned ATI_API_CALL KCL_DEBUG_StackTag(void)
++{
++ unsigned *p, *q;
++ unsigned free;
++
++ p = (unsigned *)((stackBase() + sizeof(unsigned)-1) &
++ ~(sizeof(unsigned)-1));
++ q = (unsigned *)(stackCur() & ~(sizeof(unsigned)-1));
++ free = (unsigned long)q - (unsigned long)p;
++
++ while (p < q)
++ {
++ *p++ = STACK_TAG;
++ }
++
++ return STACK_SIZE - free;
++}
++
++/** \brief Measure maximum amount of stack usage since last call to StackTag
++ *
++ * \return Maximum amount of stack usage since last call to StackTag in bytes
++ */
++unsigned ATI_API_CALL KCL_DEBUG_StackMeasure(void)
++{
++ unsigned *base, *p, *q;
++
++ base = p = (unsigned *)((stackBase() + sizeof(unsigned)-1) &
++ ~(sizeof(unsigned)-1));
++ q = (unsigned *)(stackCur() & ~(sizeof(unsigned)-1));
++
++ while (p < q && *p == STACK_TAG)
++ {
++ p++;
++ }
++
++ return STACK_SIZE - ((unsigned long)p - (unsigned long)base);
++}
+diff -uNr 15.12/common/lib/modules/fglrx/build_mod/kcl_debug.h 15.12b/common/lib/modules/fglrx/build_mod/kcl_debug.h
+--- 15.12/common/lib/modules/fglrx/build_mod/kcl_debug.h 2015-12-22 20:38:02.000000000 +0100
++++ 15.12b/common/lib/modules/fglrx/build_mod/kcl_debug.h 2015-11-25 19:05:48.000000000 +0100
+@@ -64,20 +64,27 @@
+ FN_GENERIC_MAXIMUM = 0x3f
+ } FN_TRACE;
+
+-extern void ATI_API_CALL firegl_trace(unsigned int traceMask,
++extern int ATI_API_CALL firegl_trace(unsigned int traceMask,
+ unsigned int debugMask,
+ void* name,
+ int line,
+- long param,
+- const char* fmt,
+- ...);
++ long param);
+
+ #define MAX_STRING_LENGTH 512
+
+ void ATI_API_CALL KCL_DEBUG_Print(const char* fmt, ...);
++void ATI_API_CALL KCL_DEBUG_Print_Trace(unsigned int traceMask,
++ unsigned int debugMask,
++ void* name,
++ int line,
++ long param,
++ const char* fmt,
++ ...);
+ int ATI_API_CALL KCL_DEBUG_RegKbdHandler(int enable);
+ int ATI_API_CALL KCL_DEBUG_RegKbdDumpHandler(int enable);
+ void ATI_API_CALL KCL_DEBUG_OsDump(void);
++unsigned ATI_API_CALL KCL_DEBUG_StackTag(void);
++unsigned ATI_API_CALL KCL_DEBUG_StackMeasure(void);
+
+ #ifdef SPECIAL
+ #undef SPECIAL
+@@ -209,102 +216,106 @@
+ KCL_DEBUG_Print("<6>[fglrx] " fmt, ##arg)
+
+
+-#define KCL_DEBUG_TRACE(m, p, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_TRACE, \
+- (void*)__FUNCTION__, \
+- (int)(__LINE__), \
+- (long)(p), \
+- fmt, \
+- ##arg); \
++#define KCL_DEBUG_TRACE(m, p, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_TRACE, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ (long)(p), \
++ fmt, \
++ ##arg); \
+ } while (0)
+
+ #define KCL_DEBUG_TRACEIN KCL_DEBUG_TRACE
+
+-#define KCL_DEBUG_TRACEOUT(m, p, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_TRACEOUT, \
+- (void*)__FUNCTION__, \
+- (int)(__LINE__), \
+- (long)(p), \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG1(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL1, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG2(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL2, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG3(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL3, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG4(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL4, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG5(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL5, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
+- } while (0)
+-
+-#define KCL_DEBUG6(m, fmt, arg...) \
+- do \
+- { \
+- firegl_trace(m, \
+- FN_DEBUG_LEVEL6, \
+- (void*)__FUNCTION__, \
+- (int)__LINE__, \
+- 0, \
+- fmt, \
+- ##arg); \
++#define KCL_DEBUG_TRACEOUT(m, p, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_TRACEOUT, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ (long)(p), \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++
++#define KCL_DEBUG1(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL1, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++#define KCL_DEBUG2(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL2, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++#define KCL_DEBUG3(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL3, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++
++#define KCL_DEBUG4(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL4, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++
++#define KCL_DEBUG5(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL5, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
++ } while (0)
++
++
++#define KCL_DEBUG6(m, fmt, arg...) \
++ do \
++ { \
++ KCL_DEBUG_Print_Trace(m, \
++ FN_DEBUG_LEVEL6, \
++ (void*)__FUNCTION__, \
++ (int)(__LINE__), \
++ 0, \
++ fmt, \
++ ##arg); \
+ } while (0)
+
+ #endif