Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
76580237
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
76580237
编写于
9月 04, 2016
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xtensa: split uaccess.h into C and asm sides
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
4ad41c1e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
162 addition
and
144 deletion
+162
-144
arch/xtensa/include/asm/asm-uaccess.h
arch/xtensa/include/asm/asm-uaccess.h
+160
-0
arch/xtensa/include/asm/uaccess.h
arch/xtensa/include/asm/uaccess.h
+0
-142
arch/xtensa/kernel/coprocessor.S
arch/xtensa/kernel/coprocessor.S
+1
-1
arch/xtensa/kernel/entry.S
arch/xtensa/kernel/entry.S
+1
-1
未找到文件。
arch/xtensa/include/asm/asm-uaccess.h
0 → 100644
浏览文件 @
76580237
/*
* include/asm-xtensa/uaccess.h
*
* User space memory access functions
*
* These routines provide basic accessing functions to the user memory
* space for the kernel. This header file provides functions such as:
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 2001 - 2005 Tensilica Inc.
*/
#ifndef _XTENSA_ASM_UACCESS_H
#define _XTENSA_ASM_UACCESS_H
#include <linux/errno.h>
#include <asm/types.h>
#define VERIFY_READ 0
#define VERIFY_WRITE 1
#include <asm/current.h>
#include <asm/asm-offsets.h>
#include <asm/processor.h>
/*
* These assembly macros mirror the C macros in asm/uaccess.h. They
* should always have identical functionality. See
* arch/xtensa/kernel/sys.S for usage.
*/
#define KERNEL_DS 0
#define USER_DS 1
#define get_ds (KERNEL_DS)
/*
* get_fs reads current->thread.current_ds into a register.
* On Entry:
* <ad> anything
* <sp> stack
* On Exit:
* <ad> contains current->thread.current_ds
*/
.
macro
get_fs
ad
,
sp
GET_CURRENT
(
\
ad
,
\
sp
)
#if THREAD_CURRENT_DS > 1020
addi
\
ad
,
\
ad
,
TASK_THREAD
l32i
\
ad
,
\
ad
,
THREAD_CURRENT_DS
-
TASK_THREAD
#else
l32i
\
ad
,
\
ad
,
THREAD_CURRENT_DS
#endif
.
endm
/*
* set_fs sets current->thread.current_ds to some value.
* On Entry:
* <at> anything (temp register)
* <av> value to write
* <sp> stack
* On Exit:
* <at> destroyed (actually, current)
* <av> preserved, value to write
*/
.
macro
set_fs
at
,
av
,
sp
GET_CURRENT
(
\
at
,
\
sp
)
s32i
\
av
,
\
at
,
THREAD_CURRENT_DS
.
endm
/*
* kernel_ok determines whether we should bypass addr/size checking.
* See the equivalent C-macro version below for clarity.
* On success, kernel_ok branches to a label indicated by parameter
* <success>. This implies that the macro falls through to the next
* insruction on an error.
*
* Note that while this macro can be used independently, we designed
* in for optimal use in the access_ok macro below (i.e., we fall
* through on error).
*
* On Entry:
* <at> anything (temp register)
* <success> label to branch to on success; implies
* fall-through macro on error
* <sp> stack pointer
* On Exit:
* <at> destroyed (actually, current->thread.current_ds)
*/
#if ((KERNEL_DS != 0) || (USER_DS == 0))
# error Assembly macro kernel_ok fails
#endif
.
macro
kernel_ok
at
,
sp
,
success
get_fs
\
at
,
\
sp
beqz
\
at
,
\
success
.
endm
/*
* user_ok determines whether the access to user-space memory is allowed.
* See the equivalent C-macro version below for clarity.
*
* On error, user_ok branches to a label indicated by parameter
* <error>. This implies that the macro falls through to the next
* instruction on success.
*
* Note that while this macro can be used independently, we designed
* in for optimal use in the access_ok macro below (i.e., we fall
* through on success).
*
* On Entry:
* <aa> register containing memory address
* <as> register containing memory size
* <at> temp register
* <error> label to branch to on error; implies fall-through
* macro on success
* On Exit:
* <aa> preserved
* <as> preserved
* <at> destroyed (actually, (TASK_SIZE + 1 - size))
*/
.
macro
user_ok
aa
,
as
,
at
,
error
movi
\
at
,
__XTENSA_UL_CONST
(
TASK_SIZE
)
bgeu
\
as
,
\
at
,
\
error
sub
\
at
,
\
at
,
\
as
bgeu
\
aa
,
\
at
,
\
error
.
endm
/*
* access_ok determines whether a memory access is allowed. See the
* equivalent C-macro version below for clarity.
*
* On error, access_ok branches to a label indicated by parameter
* <error>. This implies that the macro falls through to the next
* instruction on success.
*
* Note that we assume success is the common case, and we optimize the
* branch fall-through case on success.
*
* On Entry:
* <aa> register containing memory address
* <as> register containing memory size
* <at> temp register
* <sp>
* <error> label to branch to on error; implies fall-through
* macro on success
* On Exit:
* <aa> preserved
* <as> preserved
* <at> destroyed
*/
.
macro
access_ok
aa
,
as
,
at
,
sp
,
error
kernel_ok
\
at
,
\
sp
,
.
Laccess_ok_
\@
user_ok
\
aa
,
\
as
,
\
at
,
\
error
.
Laccess_ok_
\@
:
.
endm
#endif
/* _XTENSA_ASM_UACCESS_H */
arch/xtensa/include/asm/uaccess.h
浏览文件 @
76580237
...
...
@@ -17,153 +17,12 @@
#define _XTENSA_UACCESS_H
#include <linux/errno.h>
#ifndef __ASSEMBLY__
#include <linux/prefetch.h>
#endif
#include <asm/types.h>
#define VERIFY_READ 0
#define VERIFY_WRITE 1
#ifdef __ASSEMBLY__
#include <asm/current.h>
#include <asm/asm-offsets.h>
#include <asm/processor.h>
/*
* These assembly macros mirror the C macros that follow below. They
* should always have identical functionality. See
* arch/xtensa/kernel/sys.S for usage.
*/
#define KERNEL_DS 0
#define USER_DS 1
#define get_ds (KERNEL_DS)
/*
* get_fs reads current->thread.current_ds into a register.
* On Entry:
* <ad> anything
* <sp> stack
* On Exit:
* <ad> contains current->thread.current_ds
*/
.
macro
get_fs
ad
,
sp
GET_CURRENT
(
\
ad
,
\
sp
)
#if THREAD_CURRENT_DS > 1020
addi
\
ad
,
\
ad
,
TASK_THREAD
l32i
\
ad
,
\
ad
,
THREAD_CURRENT_DS
-
TASK_THREAD
#else
l32i
\
ad
,
\
ad
,
THREAD_CURRENT_DS
#endif
.
endm
/*
* set_fs sets current->thread.current_ds to some value.
* On Entry:
* <at> anything (temp register)
* <av> value to write
* <sp> stack
* On Exit:
* <at> destroyed (actually, current)
* <av> preserved, value to write
*/
.
macro
set_fs
at
,
av
,
sp
GET_CURRENT
(
\
at
,
\
sp
)
s32i
\
av
,
\
at
,
THREAD_CURRENT_DS
.
endm
/*
* kernel_ok determines whether we should bypass addr/size checking.
* See the equivalent C-macro version below for clarity.
* On success, kernel_ok branches to a label indicated by parameter
* <success>. This implies that the macro falls through to the next
* insruction on an error.
*
* Note that while this macro can be used independently, we designed
* in for optimal use in the access_ok macro below (i.e., we fall
* through on error).
*
* On Entry:
* <at> anything (temp register)
* <success> label to branch to on success; implies
* fall-through macro on error
* <sp> stack pointer
* On Exit:
* <at> destroyed (actually, current->thread.current_ds)
*/
#if ((KERNEL_DS != 0) || (USER_DS == 0))
# error Assembly macro kernel_ok fails
#endif
.
macro
kernel_ok
at
,
sp
,
success
get_fs
\
at
,
\
sp
beqz
\
at
,
\
success
.
endm
/*
* user_ok determines whether the access to user-space memory is allowed.
* See the equivalent C-macro version below for clarity.
*
* On error, user_ok branches to a label indicated by parameter
* <error>. This implies that the macro falls through to the next
* instruction on success.
*
* Note that while this macro can be used independently, we designed
* in for optimal use in the access_ok macro below (i.e., we fall
* through on success).
*
* On Entry:
* <aa> register containing memory address
* <as> register containing memory size
* <at> temp register
* <error> label to branch to on error; implies fall-through
* macro on success
* On Exit:
* <aa> preserved
* <as> preserved
* <at> destroyed (actually, (TASK_SIZE + 1 - size))
*/
.
macro
user_ok
aa
,
as
,
at
,
error
movi
\
at
,
__XTENSA_UL_CONST
(
TASK_SIZE
)
bgeu
\
as
,
\
at
,
\
error
sub
\
at
,
\
at
,
\
as
bgeu
\
aa
,
\
at
,
\
error
.
endm
/*
* access_ok determines whether a memory access is allowed. See the
* equivalent C-macro version below for clarity.
*
* On error, access_ok branches to a label indicated by parameter
* <error>. This implies that the macro falls through to the next
* instruction on success.
*
* Note that we assume success is the common case, and we optimize the
* branch fall-through case on success.
*
* On Entry:
* <aa> register containing memory address
* <as> register containing memory size
* <at> temp register
* <sp>
* <error> label to branch to on error; implies fall-through
* macro on success
* On Exit:
* <aa> preserved
* <as> preserved
* <at> destroyed
*/
.
macro
access_ok
aa
,
as
,
at
,
sp
,
error
kernel_ok
\
at
,
\
sp
,
.
Laccess_ok_
\@
user_ok
\
aa
,
\
as
,
\
at
,
\
error
.
Laccess_ok_
\@
:
.
endm
#else
/* __ASSEMBLY__ not defined */
#include <linux/sched.h>
/*
...
...
@@ -495,5 +354,4 @@ struct exception_table_entry
unsigned
long
insn
,
fixup
;
};
#endif
/* __ASSEMBLY__ */
#endif
/* _XTENSA_UACCESS_H */
arch/xtensa/kernel/coprocessor.S
浏览文件 @
76580237
...
...
@@ -17,7 +17,7 @@
#include <asm/processor.h>
#include <asm/coprocessor.h>
#include <asm/thread_info.h>
#include <asm/uaccess.h>
#include <asm/
asm-
uaccess.h>
#include <asm/unistd.h>
#include <asm/ptrace.h>
#include <asm/current.h>
...
...
arch/xtensa/kernel/entry.S
浏览文件 @
76580237
...
...
@@ -17,7 +17,7 @@
#include <asm/processor.h>
#include <asm/coprocessor.h>
#include <asm/thread_info.h>
#include <asm/uaccess.h>
#include <asm/
asm-
uaccess.h>
#include <asm/unistd.h>
#include <asm/ptrace.h>
#include <asm/current.h>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录