From 30f610d185606bd17061581debb6693369fcbb05 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Fri, 31 Oct 2014 15:16:07 +0000 Subject: [PATCH] Inline ASM for I2C port inputs now marked volatile to avoid compiler touching them --- module_usb_audio/audio.xc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module_usb_audio/audio.xc b/module_usb_audio/audio.xc index 7b1d0891..434daeba 100755 --- a/module_usb_audio/audio.xc +++ b/module_usb_audio/audio.xc @@ -603,7 +603,7 @@ chanend ?c_adc) { // p_i2s_adc[index++] :> sample; // Manual IN instruction since compiler generates an extra setc per IN (bug #15256) - asm("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); + asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); #if NUM_USB_CHAN_IN > 0 samplesIn[i] = bitrev(sample); @@ -666,7 +666,7 @@ chanend ?c_adc) { // p_i2s_adc[index++] :> sample; // Manual IN instruction since compiler generates an extra setc per IN (bug #15256) - asm("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); + asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); #if NUM_USB_CHAN_IN > 0 samplesInPrev[i] = bitrev(sample); @@ -679,7 +679,7 @@ chanend ?c_adc) x = inuint(c_adc); inct(c_adc); - asm("stw %0, dp[g_adcVal]"::"r"(x)); + asm volatile("stw %0, dp[g_adcVal]"::"r"(x)); } #endif #endif