Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
go
Commits
6ac08ba6
Commit
6ac08ba6
authored
14 years ago
by
Russ Cox
Browse files
Options
Download
Email Patches
Plain Diff
runtime: update arm softfloat - no more R12
R=ken2 CC=golang-dev
https://golang.org/cl/2555041
parent
18ccbda5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
11 deletions
+11
-11
src/pkg/runtime/arm/softfloat.c
src/pkg/runtime/arm/softfloat.c
+11
-11
No files found.
src/pkg/runtime/arm/softfloat.c
View file @
6ac08ba6
...
...
@@ -370,7 +370,8 @@ ret:
// cmf, compare floating point
static
void
compare
(
uint32
*
pc
,
uint32
*
regs
)
{
compare
(
uint32
*
pc
,
uint32
*
regs
)
{
uint32
i
,
flags
,
lhs
,
rhs
,
sign0
,
sign1
;
uint64
f0
,
f1
,
mant0
,
mant1
;
int32
exp0
,
exp1
;
...
...
@@ -502,16 +503,14 @@ loadconst(uint32 *pc, uint32 *regs)
uint32
offset
;
uint32
*
addr
;
if
(
*
pc
&
0xfffff000
!=
0xe59fb838
||
*
(
pc
+
1
)
!=
0xe08bb00c
||
*
(
pc
+
2
)
&
0xffff8fff
!=
0xed9b0100
)
if
((
*
pc
&
0xfffff000
)
!=
0xe59fb000
||
(
*
(
pc
+
1
)
&
0xffff8fff
)
!=
0xed9b0100
)
goto
undef
;
offset
=
*
pc
&
0xfff
;
addr
=
(
uint32
*
)((
uint8
*
)
pc
+
offset
+
8
);
//printf("DEBUG: addr %p *addr %x final %p\n", addr, *addr, *addr + regs[12]);
regs
[
11
]
=
*
addr
+
regs
[
12
]
;
loadstore
(
pc
+
2
,
regs
);
regs
[
11
]
=
*
addr
;
loadstore
(
pc
+
1
,
regs
);
goto
ret
;
undef:
...
...
@@ -587,6 +586,8 @@ stepflt(uint32 *pc, uint32 *regs)
{
uint32
i
,
c
;
//printf("stepflt %p %p\n", pc, *pc);
i
=
*
pc
;
// unconditional forward branches.
...
...
@@ -622,12 +623,11 @@ stepflt(uint32 *pc, uint32 *regs)
}
// lookahead for virtual instructions that span multiple arm instructions
c
=
((
*
pc
&
0x0f000000
)
>>
16
)
|
((
*
(
pc
+
1
)
&
0x0f000000
)
>>
20
)
|
((
*
(
pc
+
2
)
&
0x0f000000
)
>>
24
);
if
(
c
==
0x50d
)
{
// 0101 0000 1101
c
=
((
*
pc
&
0x0f000000
)
>>
20
)
|
((
*
(
pc
+
1
)
&
0x0f000000
)
>>
24
);
if
(
c
==
0x5d
)
{
// 0101 1101
loadconst
(
pc
,
regs
);
return
3
;
return
2
;
}
return
0
;
...
...
This diff is collapsed.
Click to expand it.
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