uaccess.h (819771cc289226e392d5d45f1d162b47ace4eff6) uaccess.h (2e77a62cb3a6d2eb9dd875516411bcd131dd04e7)
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Based on arch/arm/include/asm/uaccess.h
4 *
5 * Copyright (C) 2012 ARM Ltd.
6 */
7#ifndef __ASM_UACCESS_H
8#define __ASM_UACCESS_H

--- 241 unchanged lines hidden (view full) ---

250 *
251 * The "__xxx_error" versions set the third argument to -EFAULT if an error
252 * occurs, and leave it unchanged on success.
253 */
254#define __get_mem_asm(load, reg, x, addr, err) \
255 asm volatile( \
256 "1: " load " " reg "1, [%2]\n" \
257 "2:\n" \
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Based on arch/arm/include/asm/uaccess.h
4 *
5 * Copyright (C) 2012 ARM Ltd.
6 */
7#ifndef __ASM_UACCESS_H
8#define __ASM_UACCESS_H

--- 241 unchanged lines hidden (view full) ---

250 *
251 * The "__xxx_error" versions set the third argument to -EFAULT if an error
252 * occurs, and leave it unchanged on success.
253 */
254#define __get_mem_asm(load, reg, x, addr, err) \
255 asm volatile( \
256 "1: " load " " reg "1, [%2]\n" \
257 "2:\n" \
258 " .section .fixup, \"ax\"\n" \
259 " .align 2\n" \
260 "3: mov %w0, %3\n" \
261 " mov %1, #0\n" \
262 " b 2b\n" \
263 " .previous\n" \
264 _ASM_EXTABLE(1b, 3b) \
258 _ASM_EXTABLE_UACCESS_ERR_ZERO(1b, 2b, %w0, %w1) \
265 : "+r" (err), "=&r" (x) \
259 : "+r" (err), "=&r" (x) \
266 : "r" (addr), "i" (-EFAULT))
260 : "r" (addr))
267
268#define __raw_get_mem(ldr, x, ptr, err) \
269do { \
270 unsigned long __gu_val; \
271 switch (sizeof(*(ptr))) { \
272 case 1: \
273 __get_mem_asm(ldr "b", "%w", __gu_val, (ptr), (err)); \
274 break; \

--- 52 unchanged lines hidden (view full) ---

327 if (unlikely(__gkn_err)) \
328 goto err_label; \
329} while (0)
330
331#define __put_mem_asm(store, reg, x, addr, err) \
332 asm volatile( \
333 "1: " store " " reg "1, [%2]\n" \
334 "2:\n" \
261
262#define __raw_get_mem(ldr, x, ptr, err) \
263do { \
264 unsigned long __gu_val; \
265 switch (sizeof(*(ptr))) { \
266 case 1: \
267 __get_mem_asm(ldr "b", "%w", __gu_val, (ptr), (err)); \
268 break; \

--- 52 unchanged lines hidden (view full) ---

321 if (unlikely(__gkn_err)) \
322 goto err_label; \
323} while (0)
324
325#define __put_mem_asm(store, reg, x, addr, err) \
326 asm volatile( \
327 "1: " store " " reg "1, [%2]\n" \
328 "2:\n" \
335 " .section .fixup,\"ax\"\n" \
336 " .align 2\n" \
337 "3: mov %w0, %3\n" \
338 " b 2b\n" \
339 " .previous\n" \
340 _ASM_EXTABLE(1b, 3b) \
329 _ASM_EXTABLE_UACCESS_ERR(1b, 2b, %w0) \
341 : "+r" (err) \
330 : "+r" (err) \
342 : "r" (x), "r" (addr), "i" (-EFAULT))
331 : "r" (x), "r" (addr))
343
344#define __raw_put_mem(str, x, ptr, err) \
345do { \
346 __typeof__(*(ptr)) __pu_val = (x); \
347 switch (sizeof(*(ptr))) { \
348 case 1: \
349 __put_mem_asm(str "b", "%w", __pu_val, (ptr), (err)); \
350 break; \

--- 109 unchanged lines hidden ---
332
333#define __raw_put_mem(str, x, ptr, err) \
334do { \
335 __typeof__(*(ptr)) __pu_val = (x); \
336 switch (sizeof(*(ptr))) { \
337 case 1: \
338 __put_mem_asm(str "b", "%w", __pu_val, (ptr), (err)); \
339 break; \

--- 109 unchanged lines hidden ---