URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
extern void abort (void);
|
extern void abort (void);
|
|
|
typedef unsigned long my_uintptr_t;
|
typedef unsigned long my_uintptr_t;
|
|
|
int check_a(my_uintptr_t tagged_ptr);
|
int check_a(my_uintptr_t tagged_ptr);
|
|
|
int __attribute__((noinline)) try_a(my_uintptr_t x)
|
int __attribute__((noinline)) try_a(my_uintptr_t x)
|
{
|
{
|
my_uintptr_t heap[2];
|
my_uintptr_t heap[2];
|
my_uintptr_t *hp = heap;
|
my_uintptr_t *hp = heap;
|
|
|
hp[0] = x;
|
hp[0] = x;
|
hp[1] = 0;
|
hp[1] = 0;
|
return check_a((my_uintptr_t)(void*)((char*)hp + 1));
|
return check_a((my_uintptr_t)(void*)((char*)hp + 1));
|
}
|
}
|
|
|
int __attribute__((noinline)) check_a(my_uintptr_t tagged_ptr)
|
int __attribute__((noinline)) check_a(my_uintptr_t tagged_ptr)
|
{
|
{
|
my_uintptr_t *hp = (my_uintptr_t*)(void*)((char*)tagged_ptr - 1);
|
my_uintptr_t *hp = (my_uintptr_t*)(void*)((char*)tagged_ptr - 1);
|
|
|
if (hp[0] == 42 && hp[1] == 0)
|
if (hp[0] == 42 && hp[1] == 0)
|
return 0;
|
return 0;
|
return -1;
|
return -1;
|
}
|
}
|
|
|
int main(void)
|
int main(void)
|
{
|
{
|
if (try_a(42) < 0)
|
if (try_a(42) < 0)
|
abort ();
|
abort ();
|
return 0;
|
return 0;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.