OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [pr33669.c] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
extern void abort (void);
2
 
3
typedef struct foo_t
4
{
5
  unsigned int blksz;
6
  unsigned int bf_cnt;
7
} foo_t;
8
 
9
#define _RNDUP(x, unit)  ((((x) + (unit) - 1) / (unit)) * (unit))
10
#define _RNDDOWN(x, unit)  ((x) - ((x)%(unit)))
11
 
12
long long
13
foo (foo_t *const pxp,  long long offset, unsigned int extent)
14
{
15
  long long blkoffset = _RNDDOWN(offset, (long long )pxp->blksz);
16
  unsigned int diff = (unsigned int)(offset - blkoffset);
17
  unsigned int blkextent = _RNDUP(diff + extent, pxp->blksz);
18
 
19
  if (pxp->blksz < blkextent)
20
    return -1LL;
21
 
22
  if (pxp->bf_cnt > pxp->blksz)
23
    pxp->bf_cnt = pxp->blksz;
24
 
25
  return blkoffset;
26
}
27
 
28
int
29
main ()
30
{
31
  foo_t x;
32
  long long xx;
33
 
34
  x.blksz = 8192;
35
  x.bf_cnt = 0;
36
  xx = foo (&x, 0, 4096);
37
  if (xx != 0LL)
38
    abort ();
39
  return 0;
40
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.