Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
7960a1d0
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 3 年多
通知
13
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7960a1d0
编写于
11月 09, 2007
作者:
P
Paul Mundt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sh: Split out asm/string.h for sh32 and sh64.
Signed-off-by:
N
Paul Mundt
<
lethal@linux-sh.org
>
上级
da06b8d0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
136 addition
and
131 deletion
+136
-131
include/asm-sh/string.h
include/asm-sh/string.h
+5
-131
include/asm-sh/string_32.h
include/asm-sh/string_32.h
+131
-0
include/asm-sh/string_64.h
include/asm-sh/string_64.h
+0
-0
未找到文件。
include/asm-sh/string.h
浏览文件 @
7960a1d0
#ifndef __ASM_SH_STRING_H
#define __ASM_SH_STRING_H
#ifdef __KERNEL__
/*
* Copyright (C) 1999 Niibe Yutaka
* But consider these trivial functions to be public domain.
*/
#define __HAVE_ARCH_STRCPY
static
inline
char
*
strcpy
(
char
*
__dest
,
const
char
*
__src
)
{
register
char
*
__xdest
=
__dest
;
unsigned
long
__dummy
;
__asm__
__volatile__
(
"1:
\n\t
"
"mov.b @%1+, %2
\n\t
"
"mov.b %2, @%0
\n\t
"
"cmp/eq #0, %2
\n\t
"
"bf/s 1b
\n\t
"
" add #1, %0
\n\t
"
:
"=r"
(
__dest
),
"=r"
(
__src
),
"=&z"
(
__dummy
)
:
"0"
(
__dest
),
"1"
(
__src
)
:
"memory"
,
"t"
);
return
__xdest
;
}
#define __HAVE_ARCH_STRNCPY
static
inline
char
*
strncpy
(
char
*
__dest
,
const
char
*
__src
,
size_t
__n
)
{
register
char
*
__xdest
=
__dest
;
unsigned
long
__dummy
;
if
(
__n
==
0
)
return
__xdest
;
__asm__
__volatile__
(
"1:
\n
"
"mov.b @%1+, %2
\n\t
"
"mov.b %2, @%0
\n\t
"
"cmp/eq #0, %2
\n\t
"
"bt/s 2f
\n\t
"
" cmp/eq %5,%1
\n\t
"
"bf/s 1b
\n\t
"
" add #1, %0
\n
"
"2:"
:
"=r"
(
__dest
),
"=r"
(
__src
),
"=&z"
(
__dummy
)
:
"0"
(
__dest
),
"1"
(
__src
),
"r"
(
__src
+
__n
)
:
"memory"
,
"t"
);
return
__xdest
;
}
#define __HAVE_ARCH_STRCMP
static
inline
int
strcmp
(
const
char
*
__cs
,
const
char
*
__ct
)
{
register
int
__res
;
unsigned
long
__dummy
;
__asm__
__volatile__
(
"mov.b @%1+, %3
\n
"
"1:
\n\t
"
"mov.b @%0+, %2
\n\t
"
"cmp/eq #0, %3
\n\t
"
"bt 2f
\n\t
"
"cmp/eq %2, %3
\n\t
"
"bt/s 1b
\n\t
"
" mov.b @%1+, %3
\n\t
"
"add #-2, %1
\n\t
"
"mov.b @%1, %3
\n\t
"
"sub %3, %2
\n
"
"2:"
:
"=r"
(
__cs
),
"=r"
(
__ct
),
"=&r"
(
__res
),
"=&z"
(
__dummy
)
:
"0"
(
__cs
),
"1"
(
__ct
)
:
"t"
);
return
__res
;
}
#define __HAVE_ARCH_STRNCMP
static
inline
int
strncmp
(
const
char
*
__cs
,
const
char
*
__ct
,
size_t
__n
)
{
register
int
__res
;
unsigned
long
__dummy
;
if
(
__n
==
0
)
return
0
;
__asm__
__volatile__
(
"mov.b @%1+, %3
\n
"
"1:
\n\t
"
"mov.b @%0+, %2
\n\t
"
"cmp/eq %6, %0
\n\t
"
"bt/s 2f
\n\t
"
" cmp/eq #0, %3
\n\t
"
"bt/s 3f
\n\t
"
" cmp/eq %3, %2
\n\t
"
"bt/s 1b
\n\t
"
" mov.b @%1+, %3
\n\t
"
"add #-2, %1
\n\t
"
"mov.b @%1, %3
\n
"
"2:
\n\t
"
"sub %3, %2
\n
"
"3:"
:
"=r"
(
__cs
),
"=r"
(
__ct
),
"=&r"
(
__res
),
"=&z"
(
__dummy
)
:
"0"
(
__cs
),
"1"
(
__ct
),
"r"
(
__cs
+
__n
)
:
"t"
);
return
__res
;
}
#define __HAVE_ARCH_MEMSET
extern
void
*
memset
(
void
*
__s
,
int
__c
,
size_t
__count
);
#define __HAVE_ARCH_MEMCPY
extern
void
*
memcpy
(
void
*
__to
,
__const__
void
*
__from
,
size_t
__n
);
#define __HAVE_ARCH_MEMMOVE
extern
void
*
memmove
(
void
*
__dest
,
__const__
void
*
__src
,
size_t
__n
);
#define __HAVE_ARCH_MEMCHR
extern
void
*
memchr
(
const
void
*
__s
,
int
__c
,
size_t
__n
);
#define __HAVE_ARCH_STRLEN
extern
size_t
strlen
(
const
char
*
);
#endif
/* __KERNEL__ */
#endif
/* __ASM_SH_STRING_H */
#ifdef CONFIG_SUPERH32
# include "string_32.h"
#else
# include "string_64.h"
#endif
include/asm-sh/string_32.h
0 → 100644
浏览文件 @
7960a1d0
#ifndef __ASM_SH_STRING_H
#define __ASM_SH_STRING_H
#ifdef __KERNEL__
/*
* Copyright (C) 1999 Niibe Yutaka
* But consider these trivial functions to be public domain.
*/
#define __HAVE_ARCH_STRCPY
static
inline
char
*
strcpy
(
char
*
__dest
,
const
char
*
__src
)
{
register
char
*
__xdest
=
__dest
;
unsigned
long
__dummy
;
__asm__
__volatile__
(
"1:
\n\t
"
"mov.b @%1+, %2
\n\t
"
"mov.b %2, @%0
\n\t
"
"cmp/eq #0, %2
\n\t
"
"bf/s 1b
\n\t
"
" add #1, %0
\n\t
"
:
"=r"
(
__dest
),
"=r"
(
__src
),
"=&z"
(
__dummy
)
:
"0"
(
__dest
),
"1"
(
__src
)
:
"memory"
,
"t"
);
return
__xdest
;
}
#define __HAVE_ARCH_STRNCPY
static
inline
char
*
strncpy
(
char
*
__dest
,
const
char
*
__src
,
size_t
__n
)
{
register
char
*
__xdest
=
__dest
;
unsigned
long
__dummy
;
if
(
__n
==
0
)
return
__xdest
;
__asm__
__volatile__
(
"1:
\n
"
"mov.b @%1+, %2
\n\t
"
"mov.b %2, @%0
\n\t
"
"cmp/eq #0, %2
\n\t
"
"bt/s 2f
\n\t
"
" cmp/eq %5,%1
\n\t
"
"bf/s 1b
\n\t
"
" add #1, %0
\n
"
"2:"
:
"=r"
(
__dest
),
"=r"
(
__src
),
"=&z"
(
__dummy
)
:
"0"
(
__dest
),
"1"
(
__src
),
"r"
(
__src
+
__n
)
:
"memory"
,
"t"
);
return
__xdest
;
}
#define __HAVE_ARCH_STRCMP
static
inline
int
strcmp
(
const
char
*
__cs
,
const
char
*
__ct
)
{
register
int
__res
;
unsigned
long
__dummy
;
__asm__
__volatile__
(
"mov.b @%1+, %3
\n
"
"1:
\n\t
"
"mov.b @%0+, %2
\n\t
"
"cmp/eq #0, %3
\n\t
"
"bt 2f
\n\t
"
"cmp/eq %2, %3
\n\t
"
"bt/s 1b
\n\t
"
" mov.b @%1+, %3
\n\t
"
"add #-2, %1
\n\t
"
"mov.b @%1, %3
\n\t
"
"sub %3, %2
\n
"
"2:"
:
"=r"
(
__cs
),
"=r"
(
__ct
),
"=&r"
(
__res
),
"=&z"
(
__dummy
)
:
"0"
(
__cs
),
"1"
(
__ct
)
:
"t"
);
return
__res
;
}
#define __HAVE_ARCH_STRNCMP
static
inline
int
strncmp
(
const
char
*
__cs
,
const
char
*
__ct
,
size_t
__n
)
{
register
int
__res
;
unsigned
long
__dummy
;
if
(
__n
==
0
)
return
0
;
__asm__
__volatile__
(
"mov.b @%1+, %3
\n
"
"1:
\n\t
"
"mov.b @%0+, %2
\n\t
"
"cmp/eq %6, %0
\n\t
"
"bt/s 2f
\n\t
"
" cmp/eq #0, %3
\n\t
"
"bt/s 3f
\n\t
"
" cmp/eq %3, %2
\n\t
"
"bt/s 1b
\n\t
"
" mov.b @%1+, %3
\n\t
"
"add #-2, %1
\n\t
"
"mov.b @%1, %3
\n
"
"2:
\n\t
"
"sub %3, %2
\n
"
"3:"
:
"=r"
(
__cs
),
"=r"
(
__ct
),
"=&r"
(
__res
),
"=&z"
(
__dummy
)
:
"0"
(
__cs
),
"1"
(
__ct
),
"r"
(
__cs
+
__n
)
:
"t"
);
return
__res
;
}
#define __HAVE_ARCH_MEMSET
extern
void
*
memset
(
void
*
__s
,
int
__c
,
size_t
__count
);
#define __HAVE_ARCH_MEMCPY
extern
void
*
memcpy
(
void
*
__to
,
__const__
void
*
__from
,
size_t
__n
);
#define __HAVE_ARCH_MEMMOVE
extern
void
*
memmove
(
void
*
__dest
,
__const__
void
*
__src
,
size_t
__n
);
#define __HAVE_ARCH_MEMCHR
extern
void
*
memchr
(
const
void
*
__s
,
int
__c
,
size_t
__n
);
#define __HAVE_ARCH_STRLEN
extern
size_t
strlen
(
const
char
*
);
#endif
/* __KERNEL__ */
#endif
/* __ASM_SH_STRING_H */
include/asm-sh
64/string
.h
→
include/asm-sh
/string_64
.h
浏览文件 @
7960a1d0
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录