From befabb2bab2736667d681c192bf4cb51b3aca032 Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Tue, 3 May 2011 17:17:23 +0000 Subject: AMSv2 USB: Write usb_delay() in assembly Ensure no changes when we use different versions of gcc (USB used to panic with gcc 4.6.0) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29818 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/as3525/usb-drv-as3525v2.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c index 24548f30c5..35b50d21cf 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.c +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c @@ -101,12 +101,14 @@ void usb_attach(void) static inline void usb_delay(void) { - int i = 0; - while(i < 0x300) - { - asm volatile("nop"); - i++; - } + register int i = 0; + asm volatile( + "1: nop \n" + " add %0, %0, #1 \n" + " cmp %0, #0x300 \n" + " bne 1b \n" + : "+r"(i) + ); } static void as3525v2_connect(void) -- cgit v1.2.3