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;
   }
 }