Merge tag 'v3.10.41' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / drivers / gator / gator_annotate_kernel.c
index 4715f64a186511f8502ce00af069d68a0c2ca195..0108068255297285859854a15bc632579365de15 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * Copyright (C) ARM Limited 2012-2013. All rights reserved.
+ * Copyright (C) ARM Limited 2012-2014. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -29,11 +29,29 @@ static void kannotate_write(const char *ptr, unsigned int size)
        }
 }
 
+static void marshal_u16(char *buf, u16 val)
+{
+       buf[0] = val & 0xff;
+       buf[1] = (val >> 8) & 0xff;
+}
+
+static void marshal_u32(char *buf, u32 val)
+{
+       buf[0] = val & 0xff;
+       buf[1] = (val >> 8) & 0xff;
+       buf[2] = (val >> 16) & 0xff;
+       buf[3] = (val >> 24) & 0xff;
+}
+
 void gator_annotate_channel(int channel, const char *str)
 {
-       int str_size = strlen(str) & 0xffff;
-       long long header = ESCAPE_CODE | (STRING_ANNOTATION << 8) | (channel << 16) | ((long long)str_size << 48);
-       kannotate_write((char *)&header, sizeof(header));
+       const u16 str_size = strlen(str) & 0xffff;
+       char header[8];
+       header[0] = ESCAPE_CODE;
+       header[1] = STRING_ANNOTATION;
+       marshal_u32(header + 2, channel);
+       marshal_u16(header + 6, str_size);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size);
 }
 
@@ -48,14 +66,14 @@ EXPORT_SYMBOL(gator_annotate);
 
 void gator_annotate_channel_color(int channel, int color, const char *str)
 {
-       int str_size = (strlen(str) + 4) & 0xffff;
+       const u16 str_size = (strlen(str) + 4) & 0xffff;
        char header[12];
        header[0] = ESCAPE_CODE;
        header[1] = STRING_ANNOTATION;
-       *(u32 *)(&header[2]) = channel;
-       *(u16 *)(&header[6]) = str_size;
-       *(u32 *)(&header[8]) = color;
-       kannotate_write((char *)&header, sizeof(header));
+       marshal_u32(header + 2, channel);
+       marshal_u16(header + 6, str_size);
+       marshal_u32(header + 8, color);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size - 4);
 }
 
@@ -70,8 +88,12 @@ EXPORT_SYMBOL(gator_annotate_color);
 
 void gator_annotate_channel_end(int channel)
 {
-       long long header = ESCAPE_CODE | (STRING_ANNOTATION << 8) | (channel << 16);
-       kannotate_write((char *)&header, sizeof(header));
+       char header[8];
+       header[0] = ESCAPE_CODE;
+       header[1] = STRING_ANNOTATION;
+       marshal_u32(header + 2, channel);
+       marshal_u16(header + 6, 0);
+       kannotate_write(header, sizeof(header));
 }
 
 EXPORT_SYMBOL(gator_annotate_channel_end);
@@ -85,14 +107,14 @@ EXPORT_SYMBOL(gator_annotate_end);
 
 void gator_annotate_name_channel(int channel, int group, const char* str)
 {
-       int str_size = strlen(str) & 0xffff;
+       const u16 str_size = strlen(str) & 0xffff;
        char header[12];
        header[0] = ESCAPE_CODE;
        header[1] = NAME_CHANNEL_ANNOTATION;
-       *(u32 *)(&header[2]) = channel;
-       *(u32 *)(&header[6]) = group;
-       *(u16 *)(&header[10]) = str_size;
-       kannotate_write((char *)&header, sizeof(header));
+       marshal_u32(header + 2, channel);
+       marshal_u32(header + 6, group);
+       marshal_u16(header + 10, str_size);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size);
 }
 
@@ -100,9 +122,13 @@ EXPORT_SYMBOL(gator_annotate_name_channel);
 
 void gator_annotate_name_group(int group, const char* str)
 {
-       int str_size = strlen(str) & 0xffff;
-       long long header = ESCAPE_CODE | (NAME_GROUP_ANNOTATION << 8) | (group << 16) | ((long long)str_size << 48);
-       kannotate_write((char *)&header, sizeof(header));
+       const u16 str_size = strlen(str) & 0xffff;
+       char header[8];
+       header[0] = ESCAPE_CODE;
+       header[1] = NAME_GROUP_ANNOTATION;
+       marshal_u32(header + 2, group);
+       marshal_u16(header + 6, str_size);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size);
 }
 
@@ -110,11 +136,16 @@ EXPORT_SYMBOL(gator_annotate_name_group);
 
 void gator_annotate_visual(const char *data, unsigned int length, const char *str)
 {
-       int str_size = strlen(str) & 0xffff;
-       int visual_annotation = ESCAPE_CODE | (VISUAL_ANNOTATION << 8) | (str_size << 16);
-       kannotate_write((char *)&visual_annotation, sizeof(visual_annotation));
+       const u16 str_size = strlen(str) & 0xffff;
+       char header[4];
+       char header_length[4];
+       header[0] = ESCAPE_CODE;
+       header[1] = VISUAL_ANNOTATION;
+       marshal_u16(header + 2, str_size);
+       marshal_u32(header_length, length);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size);
-       kannotate_write((char *)&length, sizeof(length));
+       kannotate_write(header_length, sizeof(header_length));
        kannotate_write(data, length);
 }
 
@@ -122,17 +153,23 @@ EXPORT_SYMBOL(gator_annotate_visual);
 
 void gator_annotate_marker(void)
 {
-       int header = ESCAPE_CODE | (MARKER_ANNOTATION << 8);
-       kannotate_write((char *)&header, sizeof(header));
+       char header[4];
+       header[0] = ESCAPE_CODE;
+       header[1] = MARKER_ANNOTATION;
+       marshal_u16(header + 2, 0);
+       kannotate_write(header, sizeof(header));
 }
 
 EXPORT_SYMBOL(gator_annotate_marker);
 
 void gator_annotate_marker_str(const char *str)
 {
-       int str_size = strlen(str) & 0xffff;
-       int header = ESCAPE_CODE | (MARKER_ANNOTATION << 8) | (str_size << 16);
-       kannotate_write((char *)&header, sizeof(header));
+       const u16 str_size = strlen(str) & 0xffff;
+       char header[4];
+       header[0] = ESCAPE_CODE;
+       header[1] = MARKER_ANNOTATION;
+       marshal_u16(header + 2, str_size);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size);
 }
 
@@ -140,17 +177,25 @@ EXPORT_SYMBOL(gator_annotate_marker_str);
 
 void gator_annotate_marker_color(int color)
 {
-       long long header = (ESCAPE_CODE | (MARKER_ANNOTATION << 8) | 0x00040000 | ((long long)color << 32));
-       kannotate_write((char *)&header, sizeof(header));
+       char header[8];
+       header[0] = ESCAPE_CODE;
+       header[1] = MARKER_ANNOTATION;
+       marshal_u16(header + 2, 4);
+       marshal_u32(header + 4, color);
+       kannotate_write(header, sizeof(header));
 }
 
 EXPORT_SYMBOL(gator_annotate_marker_color);
 
 void gator_annotate_marker_color_str(int color, const char *str)
 {
-       int str_size = (strlen(str) + 4) & 0xffff;
-       long long header = ESCAPE_CODE | (MARKER_ANNOTATION << 8) | (str_size << 16) | ((long long)color << 32);
-       kannotate_write((char *)&header, sizeof(header));
+       const u16 str_size = (strlen(str) + 4) & 0xffff;
+       char header[8];
+       header[0] = ESCAPE_CODE;
+       header[1] = MARKER_ANNOTATION;
+       marshal_u16(header + 2, str_size);
+       marshal_u32(header + 4, color);
+       kannotate_write(header, sizeof(header));
        kannotate_write(str, str_size - 4);
 }