Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
182c2078
Commit
182c2078
authored
Feb 22, 2003
by
Hans-Peter Nilsson
Committed by
Hans-Peter Nilsson
Feb 22, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* gcc.dg/asmreg-1.c: New test.
From-SVN: r63271
parent
51928907
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
0 deletions
+77
-0
gcc/testsuite/ChangeLog
+4
-0
gcc/testsuite/gcc.dg/asmreg-1.c
+73
-0
No files found.
gcc/testsuite/ChangeLog
View file @
182c2078
2003-02-22 Hans-Peter Nilsson <hp@axis.com>
* gcc.dg/asmreg-1.c: New test.
2003-02-21 Mark Mitchell <mark@codesourcery.com>
2003-02-21 Mark Mitchell <mark@codesourcery.com>
PR c++/9749
PR c++/9749
...
...
gcc/testsuite/gcc.dg/asmreg-1.c
0 → 100644
View file @
182c2078
/* { dg-do compile { target cris-*-* } } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler "\\\.ifnc \\\$r9-\\\$r10-\\\$r11-\\\$r12" } } */
/* Sanity check for asm register operands in syscall failed for
cris-axis-linux-gnu due to regmove bug.
Hans-Peter Nilsson <hp@axis.com>. */
extern
void
lseek64
(
int
,
long
long
,
int
);
extern
int
*
__errno_location
(
void
);
struct
dirent64
{
long
long
d_off
;
unsigned
short
int
d_reclen
;
char
d_name
[
256
];
};
struct
kernel_dirent64
{
long
long
d_off
;
unsigned
short
d_reclen
;
char
d_name
[
256
];
};
static
inline
int
__attribute__
((
__always_inline__
))
__syscall_getdents64
(
int
fd
,
unsigned
char
*
dirp
,
unsigned
count
)
{
register
unsigned
long
__sys_res
asm
(
"r10"
);
register
unsigned
long
__r10
__asm__
(
"r10"
)
=
(
unsigned
long
)
fd
;
register
unsigned
long
__r11
__asm__
(
"r11"
)
=
(
unsigned
long
)
dirp
;
register
unsigned
long
__r12
__asm__
(
"r12"
)
=
(
unsigned
long
)
count
;
register
unsigned
long
__callno
asm
(
"r9"
)
=
(
220
);
asm
volatile
(
".ifnc %1-%0-%3-%4,$r9-$r10-$r11-$r12
\n\t
"
".err
\n\t
"
".endif
\n\t
"
"break 13"
:
"=r"
(
__sys_res
)
:
"r"
(
__callno
),
"0"
(
__r10
),
"r"
(
__r11
),
"r"
(
__r12
)
:
"memory"
);
if
(
__sys_res
>=
(
unsigned
long
)
-
4096
)
{
(
*
__errno_location
())
=
-
__sys_res
;
__sys_res
=
-
1
;
}
return
__sys_res
;
}
int
__getdents64
(
int
fd
,
char
*
buf
,
unsigned
nbytes
)
{
struct
dirent64
*
dp
;
long
long
last_offset
=
-
1
;
int
retval
;
struct
kernel_dirent64
*
skdp
,
*
kdp
;
dp
=
(
struct
dirent64
*
)
buf
;
skdp
=
kdp
=
__builtin_alloca
(
nbytes
);
retval
=
__syscall_getdents64
(
fd
,
(
char
*
)
kdp
,
nbytes
);
if
(
retval
==
-
1
)
return
-
1
;
while
((
char
*
)
kdp
<
(
char
*
)
skdp
+
retval
)
{
if
((
char
*
)
dp
>
buf
+
nbytes
)
{
lseek64
(
fd
,
last_offset
,
0
);
break
;
}
last_offset
=
kdp
->
d_off
;
__builtin_memcpy
(
dp
->
d_name
,
kdp
->
d_name
,
kdp
->
d_reclen
-
10
);
dp
=
(
struct
dirent64
*
)
((
char
*
)
dp
+
sizeof
(
*
dp
));
kdp
=
(
struct
kernel_dirent64
*
)
(((
char
*
)
kdp
)
+
kdp
->
d_reclen
);
}
return
(
char
*
)
dp
-
buf
;
}
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