Mercurial > hg > toybox
changeset 1218:fba5d8d3905c draft
Add "volatile" annotation to peek/poke to stop potential optimizer overreach.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 11 Mar 2014 18:11:12 -0500 |
parents | c6c5565cc859 |
children | 468444e5c7c5 |
files | lib/lib.c |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/lib.c Tue Mar 11 17:50:17 2014 -0500 +++ b/lib/lib.c Tue Mar 11 18:11:12 2014 -0500 @@ -314,16 +314,16 @@ int64_t peek(void *ptr, int size) { if (size & 8) { - int64_t *p = (int64_t *)ptr; + volatile int64_t *p = (int64_t *)ptr; return *p; } else if (size & 4) { - int *p = (int *)ptr; + volatile int *p = (int *)ptr; return *p; } else if (size & 2) { - short *p = (short *)ptr; + volatile short *p = (short *)ptr; return *p; } else { - char *p = (char *)ptr; + volatile char *p = (char *)ptr; return *p; } } @@ -331,16 +331,16 @@ void poke(void *ptr, uint64_t val, int size) { if (size & 8) { - uint64_t *p = (uint64_t *)ptr; + volatile uint64_t *p = (uint64_t *)ptr; *p = val; } else if (size & 4) { - int *p = (int *)ptr; + volatile int *p = (int *)ptr; *p = val; } else if (size & 2) { - short *p = (short *)ptr; + volatile short *p = (short *)ptr; *p = val; } else { - char *p = (char *)ptr; + volatile char *p = (char *)ptr; *p = val; } }