summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commonlib/lz4_wrapper.c22
-rwxr-xr-xutil/lint/checkpatch.pl4
2 files changed, 16 insertions, 10 deletions
diff --git a/src/commonlib/lz4_wrapper.c b/src/commonlib/lz4_wrapper.c
index 93fa7e8e1d..0342868d74 100644
--- a/src/commonlib/lz4_wrapper.c
+++ b/src/commonlib/lz4_wrapper.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 Google Inc.
+ * Copyright 2015-2016 Google Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -54,14 +54,18 @@ static void LZ4_copy8(void *dst, const void *src)
((uint8_t *)dst)[i] = ((uint8_t *)src)[i];
#else
uint32_t x0, x1;
- __asm__ volatile (
- "ldr %[x0], [%[src]]\n\t"
- "ldr %[x1], [%[src], #4]\n\t"
- "str %[x0], [%[dst]]\n\t"
- "str %[x1], [%[dst], #4]\n\t"
- : [x0]"=r"(x0), [x1]"=r"(x1)
- : [src]"r"(src), [dst]"r"(dst)
- : "memory" );
+ __asm__ ("ldr %[x0], [%[src]]"
+ : [x0]"=r"(x0)
+ : [src]"r"(src), "m"(*(const uint32_t *)src));
+ __asm__ ("ldr %[x1], [%[src], #4]"
+ : [x1]"=r"(x1)
+ : [src]"r"(src), "m"(*(const uint32_t *)(src + 4)));
+ __asm__ ("str %[x0], [%[dst]]"
+ : "=m"(*(uint32_t *)dst)
+ : [x0]"r"(x0), [dst]"r"(dst));
+ __asm__ ("str %[x1], [%[dst], #4]"
+ : "=m"(*(uint32_t *)(dst + 4))
+ : [x1]"r"(x1), [dst]"r"(dst));
#endif
#elif defined(__riscv__)
/* RISC-V implementations may trap on any unaligned access. */
diff --git a/util/lint/checkpatch.pl b/util/lint/checkpatch.pl
index 3a4b8be455..45445043e7 100755
--- a/util/lint/checkpatch.pl
+++ b/util/lint/checkpatch.pl
@@ -3,6 +3,7 @@
# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
# (c) 2008-2010 Andy Whitcroft <apw@canonical.com>
+# (c) 2016 Google Inc.
# Licensed under the terms of the GNU GPL License version 2
use strict;
@@ -3377,11 +3378,12 @@ sub process {
# 1. with a type on the left -- int [] a;
# 2. at the beginning of a line for slice initialisers -- [0...10] = 5,
# 3. inside a curly brace -- = { [0...10] = 5 }
+# 4. in an extended asm instruction -- : [r0]"r"(r0)
while ($line =~ /(.*?\s)\[/g) {
my ($where, $prefix) = ($-[1], $1);
if ($prefix !~ /$Type\s+$/ &&
($where != 0 || $prefix !~ /^.\s+$/) &&
- $prefix !~ /[{,]\s+$/) {
+ $prefix !~ /[{,:]\s+$/) {
if (ERROR("BRACKET_SPACE",
"space prohibited before open square bracket '['\n" . $herecurr) &&
$fix) {