Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
df06c27e
Commit
df06c27e
authored
Jul 14, 2020
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sparc32: switch __bzero() away from range exception table entries
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
5f99d338
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
40 deletions
+32
-40
arch/sparc/lib/memset.S
arch/sparc/lib/memset.S
+32
-40
No files found.
arch/sparc/lib/memset.S
View file @
df06c27e
...
@@ -27,35 +27,44 @@
...
@@ -27,35 +27,44 @@
.
text
; \
.
text
; \
.
align
4
.
align
4
#define EXT(start,end,handler) \
#define STORE(source, base, offset, n) \
98
:
std
source
,
[
base
+
offset
+
n
]
; \
.
section
.
fixup
,
ALLOC
,
EXECINSTR
; \
.
align
4
; \
99
:
ba
30
f
; \
sub
%
o3
,
n
-
offset
,
%
o3
; \
.
section
__ex_table
,
ALLOC
; \
.
section
__ex_table
,
ALLOC
; \
.
align
4
; \
.
align
4
; \
.
word
start
,
0
,
end
,
handler
;
\
.
word
98
b
,
99
b
;
\
.
text
; \
.
text
; \
.
align
4
.
align
4
;
#define STORE_LAST(source, base, offset, n) \
EX
(
std
source
,
[
base
-
offset
-
n
],
\
add
%
o1
,
offset
+
n
)
;
/*
Please
don
't change these macros, unless you change the logic
/*
Please
don
't change these macros, unless you change the logic
*
in
the
.
fixup
section
below
as
well
.
*
in
the
.
fixup
section
below
as
well
.
*
Store
64
bytes
at
(
BASE
+
OFFSET
)
using
value
SOURCE
.
*/
*
Store
64
bytes
at
(
BASE
+
OFFSET
)
using
value
SOURCE
.
*/
#define ZERO_BIG_BLOCK(base, offset, source)
\
#define ZERO_BIG_BLOCK(base, offset, source)
\
std
source
,
[
base
+
offset
+
0x00
]
;
\
STORE
(
source
,
base
,
offset
,
0x00
)
;
\
std
source
,
[
base
+
offset
+
0x08
]
;
\
STORE
(
source
,
base
,
offset
,
0x08
)
;
\
std
source
,
[
base
+
offset
+
0x10
]
;
\
STORE
(
source
,
base
,
offset
,
0x10
)
;
\
std
source
,
[
base
+
offset
+
0x18
]
;
\
STORE
(
source
,
base
,
offset
,
0x18
)
;
\
std
source
,
[
base
+
offset
+
0x20
]
;
\
STORE
(
source
,
base
,
offset
,
0x20
)
;
\
std
source
,
[
base
+
offset
+
0x28
]
;
\
STORE
(
source
,
base
,
offset
,
0x28
)
;
\
std
source
,
[
base
+
offset
+
0x30
]
;
\
STORE
(
source
,
base
,
offset
,
0x30
)
;
\
std
source
,
[
base
+
offset
+
0x38
]
;
STORE
(
source
,
base
,
offset
,
0x38
)
;
#define ZERO_LAST_BLOCKS(base, offset, source) \
#define ZERO_LAST_BLOCKS(base, offset, source) \
std
source
,
[
base
-
offset
-
0x38
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x38
)
;
\
std
source
,
[
base
-
offset
-
0x30
]
; \
STORE_LAST
(
source
,
base
,
offset
,
0x30
)
; \
std
source
,
[
base
-
offset
-
0x28
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x28
)
;
\
std
source
,
[
base
-
offset
-
0x20
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x20
)
;
\
std
source
,
[
base
-
offset
-
0x18
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x18
)
;
\
std
source
,
[
base
-
offset
-
0x10
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x10
)
;
\
std
source
,
[
base
-
offset
-
0x08
]
;
\
STORE_LAST
(
source
,
base
,
offset
,
0x08
)
;
\
std
source
,
[
base
-
offset
-
0x00
]
;
STORE_LAST
(
source
,
base
,
offset
,
0x00
)
;
.
text
.
text
.
align
4
.
align
4
...
@@ -120,8 +129,6 @@ __bzero:
...
@@ -120,8 +129,6 @@ __bzero:
ZERO_BIG_BLOCK
(%
o0
,
0x00
,
%
g2
)
ZERO_BIG_BLOCK
(%
o0
,
0x00
,
%
g2
)
subcc
%
o3
,
128
,
%
o3
subcc
%
o3
,
128
,
%
o3
ZERO_BIG_BLOCK
(%
o0
,
0x40
,
%
g2
)
ZERO_BIG_BLOCK
(%
o0
,
0x40
,
%
g2
)
11
:
EXT
(10
b
,
11
b
,
20
f
)
bne
10
b
bne
10
b
add
%
o0
,
128
,
%
o0
add
%
o0
,
128
,
%
o0
...
@@ -136,7 +143,6 @@ __bzero:
...
@@ -136,7 +143,6 @@ __bzero:
jmp
%
o4
jmp
%
o4
add
%
o0
,
%
o2
,
%
o0
add
%
o0
,
%
o2
,
%
o0
12
:
ZERO_LAST_BLOCKS
(%
o0
,
0x48
,
%
g2
)
ZERO_LAST_BLOCKS
(%
o0
,
0x48
,
%
g2
)
ZERO_LAST_BLOCKS
(%
o0
,
0x08
,
%
g2
)
ZERO_LAST_BLOCKS
(%
o0
,
0x08
,
%
g2
)
13
:
13
:
...
@@ -182,24 +188,10 @@ __bzero:
...
@@ -182,24 +188,10 @@ __bzero:
.
section
.
fixup
,#
alloc
,#
execinstr
.
section
.
fixup
,#
alloc
,#
execinstr
.
align
4
.
align
4
20
:
30
:
cmp
%
g2
,
8
and
%
o1
,
0x7f
,
%
o1
bleu
1
f
and
%
o1
,
0x7f
,
%
o1
sub
%
g2
,
9
,
%
g2
add
%
o3
,
64
,
%
o3
1
:
sll
%
g2
,
3
,
%
g2
add
%
o3
,
%
o1
,
%
o0
retl
sub
%
o0
,
%
g2
,
%
o0
21
:
mov
8
,
%
o0
and
%
o1
,
7
,
%
o1
sub
%
o0
,
%
g2
,
%
o0
sll
%
o0
,
3
,
%
o0
retl
retl
add
%
o
0
,
%
o1
,
%
o0
add
%
o
3
,
%
o1
,
%
o0
.
globl
__bzero_end
.
globl
__bzero_end
__bzero_end
:
__bzero_end
:
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