Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
00e065ea
Commit
00e065ea
authored
May 02, 2007
by
Jan Beulich
Committed by
Andi Kleen
May 02, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] i386: Add dwarf2 annotations to *_user and checksum functions
Signed-off-by:
Andi Kleen
<
ak@suse.de
>
parent
37550907
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
102 additions
and
32 deletions
+102
-32
arch/i386/lib/checksum.S
arch/i386/lib/checksum.S
+60
-9
arch/i386/lib/getuser.S
arch/i386/lib/getuser.S
+17
-9
arch/i386/lib/putuser.S
arch/i386/lib/putuser.S
+25
-14
No files found.
arch/i386/lib/checksum.S
View file @
00e065ea
...
...
@@ -25,6 +25,8 @@
*
2
of
the
License
,
or
(
at
your
option
)
any
later
version
.
*/
#include <linux/linkage.h>
#include <asm/dwarf2.h>
#include <asm/errno.h>
/*
...
...
@@ -36,8 +38,6 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum)
*/
.
text
.
align
4
.
globl
csum_partial
#ifndef CONFIG_X86_USE_PPRO_CHECKSUM
...
...
@@ -48,9 +48,14 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum)
*
Fortunately
,
it
is
easy
to
convert
2
-
byte
alignment
to
4
-
byte
*
alignment
for
the
unrolled
loop
.
*/
csum_partial
:
ENTRY
(
csum_partial
)
CFI_STARTPROC
pushl
%
esi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
esi
,
0
pushl
%
ebx
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
ebx
,
0
movl
20
(%
esp
),%
eax
#
Function
arg
:
unsigned
int
sum
movl
16
(%
esp
),%
ecx
#
Function
arg
:
int
len
movl
12
(%
esp
),%
esi
#
Function
arg
:
unsigned
char
*
buff
...
...
@@ -128,16 +133,27 @@ csum_partial:
roll
$
8
,
%
eax
8
:
popl
%
ebx
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
ebx
popl
%
esi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
esi
ret
CFI_ENDPROC
ENDPROC
(
csum_partial
)
#else
/*
Version
for
PentiumII
/
PPro
*/
csum_partial
:
ENTRY
(
csum_partial
)
CFI_STARTPROC
pushl
%
esi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
esi
,
0
pushl
%
ebx
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
ebx
,
0
movl
20
(%
esp
),%
eax
#
Function
arg
:
unsigned
int
sum
movl
16
(%
esp
),%
ecx
#
Function
arg
:
int
len
movl
12
(%
esp
),%
esi
#
Function
arg
:
const
unsigned
char
*
buf
...
...
@@ -245,8 +261,14 @@ csum_partial:
roll
$
8
,
%
eax
90
:
popl
%
ebx
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
ebx
popl
%
esi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
esi
ret
CFI_ENDPROC
ENDPROC
(
csum_partial
)
#endif
...
...
@@ -278,19 +300,24 @@ unsigned int csum_partial_copy_generic (const char *src, char *dst,
.
long
9999
b
,
6002
f
; \
.
previous
.
align
4
.
globl
csum_partial_copy_generic
#ifndef CONFIG_X86_USE_PPRO_CHECKSUM
#define ARGBASE 16
#define FP 12
csum_partial_copy_generic
:
ENTRY
(
csum_partial_copy_generic
)
CFI_STARTPROC
subl
$
4
,%
esp
CFI_ADJUST_CFA_OFFSET
4
pushl
%
edi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
edi
,
0
pushl
%
esi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
esi
,
0
pushl
%
ebx
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
ebx
,
0
movl
ARGBASE
+
16
(%
esp
),%
eax
#
sum
movl
ARGBASE
+
12
(%
esp
),%
ecx
#
len
movl
ARGBASE
+
4
(%
esp
),%
esi
#
src
...
...
@@ -400,10 +427,19 @@ DST( movb %cl, (%edi) )
.
previous
popl
%
ebx
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
ebx
popl
%
esi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
esi
popl
%
edi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
edi
popl
%
ecx
#
equivalent
to
addl
$
4
,%
esp
CFI_ADJUST_CFA_OFFSET
-
4
ret
CFI_ENDPROC
ENDPROC
(
csum_partial_copy_generic
)
#else
...
...
@@ -421,10 +457,17 @@ DST( movb %cl, (%edi) )
#define ARGBASE 12
csum_partial_copy_generic
:
ENTRY
(
csum_partial_copy_generic
)
CFI_STARTPROC
pushl
%
ebx
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
ebx
,
0
pushl
%
edi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
edi
,
0
pushl
%
esi
CFI_ADJUST_CFA_OFFSET
4
CFI_REL_OFFSET
esi
,
0
movl
ARGBASE
+
4
(%
esp
),%
esi
#
src
movl
ARGBASE
+
8
(%
esp
),%
edi
#
dst
movl
ARGBASE
+
12
(%
esp
),%
ecx
#
len
...
...
@@ -485,9 +528,17 @@ DST( movb %dl, (%edi) )
.
previous
popl
%
esi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
esi
popl
%
edi
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
edi
popl
%
ebx
CFI_ADJUST_CFA_OFFSET
-
4
CFI_RESTORE
ebx
ret
CFI_ENDPROC
ENDPROC
(
csum_partial_copy_generic
)
#undef ROUND
#undef ROUND1
...
...
arch/i386/lib/getuser.S
View file @
00e065ea
...
...
@@ -8,6 +8,8 @@
*
return
an
error
value
in
addition
to
the
"real"
*
return
value
.
*/
#include <linux/linkage.h>
#include <asm/dwarf2.h>
#include <asm/thread_info.h>
...
...
@@ -24,19 +26,19 @@
*/
.
text
.
align
4
.
globl
__get_user_1
__get_user_1
:
ENTRY
(
__get_user_1
)
CFI_STARTPROC
GET_THREAD_INFO
(%
edx
)
cmpl
TI_addr_limit
(%
edx
),%
eax
jae
bad_get_user
1
:
movzbl
(%
eax
),%
edx
xorl
%
eax
,%
eax
ret
CFI_ENDPROC
ENDPROC
(
__get_user_1
)
.
align
4
.
globl
__get_user_2
__get_user_2
:
ENTRY
(
__get_user_2
)
CFI_STARTPROC
addl
$
1
,%
eax
jc
bad_get_user
GET_THREAD_INFO
(%
edx
)
...
...
@@ -45,10 +47,11 @@ __get_user_2:
2
:
movzwl
-
1
(%
eax
),%
edx
xorl
%
eax
,%
eax
ret
CFI_ENDPROC
ENDPROC
(
__get_user_2
)
.
align
4
.
globl
__get_user_4
__get_user_4
:
ENTRY
(
__get_user_4
)
CFI_STARTPROC
addl
$
3
,%
eax
jc
bad_get_user
GET_THREAD_INFO
(%
edx
)
...
...
@@ -57,11 +60,16 @@ __get_user_4:
3
:
movl
-
3
(%
eax
),%
edx
xorl
%
eax
,%
eax
ret
CFI_ENDPROC
ENDPROC
(
__get_user_4
)
bad_get_user
:
CFI_STARTPROC
xorl
%
edx
,%
edx
movl
$
-
14
,%
eax
ret
CFI_ENDPROC
END
(
bad_get_user
)
.
section
__ex_table
,"
a
"
.
long
1
b
,
bad_get_user
...
...
arch/i386/lib/putuser.S
View file @
00e065ea
...
...
@@ -8,6 +8,8 @@
*
return
an
error
value
in
addition
to
the
"real"
*
return
value
.
*/
#include <linux/linkage.h>
#include <asm/dwarf2.h>
#include <asm/thread_info.h>
...
...
@@ -23,23 +25,28 @@
*
as
they
get
called
from
within
inline
assembly
.
*/
#define ENTER pushl %ebx ; GET_THREAD_INFO(%ebx)
#define EXIT popl %ebx ; ret
#define ENTER CFI_STARTPROC ; \
pushl
%
ebx
; \
CFI_ADJUST_CFA_OFFSET
4
; \
CFI_REL_OFFSET
ebx
,
0
; \
GET_THREAD_INFO
(%
ebx
)
#define EXIT popl %ebx ; \
CFI_ADJUST_CFA_OFFSET
-
4
; \
CFI_RESTORE
ebx
; \
ret
; \
CFI_ENDPROC
.
text
.
align
4
.
globl
__put_user_1
__put_user_1
:
ENTRY
(
__put_user_1
)
ENTER
cmpl
TI_addr_limit
(%
ebx
),%
ecx
jae
bad_put_user
1
:
movb
%
al
,(%
ecx
)
xorl
%
eax
,%
eax
EXIT
ENDPROC
(
__put_user_1
)
.
align
4
.
globl
__put_user_2
__put_user_2
:
ENTRY
(
__put_user_2
)
ENTER
movl
TI_addr_limit
(%
ebx
),%
ebx
subl
$
1
,%
ebx
...
...
@@ -48,10 +55,9 @@ __put_user_2:
2
:
movw
%
ax
,(%
ecx
)
xorl
%
eax
,%
eax
EXIT
ENDPROC
(
__put_user_2
)
.
align
4
.
globl
__put_user_4
__put_user_4
:
ENTRY
(
__put_user_4
)
ENTER
movl
TI_addr_limit
(%
ebx
),%
ebx
subl
$
3
,%
ebx
...
...
@@ -60,10 +66,9 @@ __put_user_4:
3
:
movl
%
eax
,(%
ecx
)
xorl
%
eax
,%
eax
EXIT
ENDPROC
(
__put_user_4
)
.
align
4
.
globl
__put_user_8
__put_user_8
:
ENTRY
(
__put_user_8
)
ENTER
movl
TI_addr_limit
(%
ebx
),%
ebx
subl
$
7
,%
ebx
...
...
@@ -73,10 +78,16 @@ __put_user_8:
5
:
movl
%
edx
,
4
(%
ecx
)
xorl
%
eax
,%
eax
EXIT
ENDPROC
(
__put_user_8
)
bad_put_user
:
CFI_STARTPROC
simple
CFI_DEF_CFA
esp
,
2
*
4
CFI_OFFSET
eip
,
-
1
*
4
CFI_OFFSET
ebx
,
-
2
*
4
movl
$
-
14
,%
eax
EXIT
END
(
bad_put_user
)
.
section
__ex_table
,"
a
"
.
long
1
b
,
bad_put_user
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment