Kay-Uwe Kasemir wrote:
Hi:
Do I understand correctly that the most likely impact for EPICS might
be this type of code:
struct xyz_regs
{
Word control;
Word status;
...
}
void xyz_operate(char *vme_base)
{
struct xyz_regs *xyz = (struct xyz_regs *) vme_base;
xyz->control = 0x1234;
if (xyz->status & 0x8000)
....
}
The mapping of C structures to hardware registers?
volatile should be used for all access to hardware registers.
volatile prevents compiler optimization.
In that case, the compiler optimization of aliased pointers
isn't the only problem. There's also the structure padding,
memory alignment, and byte order that causes portability issues.
Isn't that best handled by performing register access
via routines like the vxWorks sysInByte(), sysInWord(), sysInLong(),
sysPciInLong(), ... ?
-Kay
- Replies:
- Re: C strict aliasing rules Eric Norum
- References:
- C strict aliasing rules Eric Norum
- Re: C strict aliasing rules Benjamin Franksen
- Re: C strict aliasing rules Eric Norum
- Re: C strict aliasing rules Benjamin Franksen
- Re: C strict aliasing rules Kay-Uwe Kasemir
- Navigate by Date:
- Prev:
Re: C strict aliasing rules Kay-Uwe Kasemir
- Next:
Re: C strict aliasing rules Eric Norum
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: C strict aliasing rules Kay-Uwe Kasemir
- Next:
Re: C strict aliasing rules Eric Norum
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|