diff options
-rwxr-xr-x | firmware/export/imx31l.h | 1 | ||||
-rw-r--r-- | firmware/export/pp5020.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/imx31/app.lds | 1 | ||||
-rw-r--r-- | firmware/target/arm/ipod/app.lds | 19 | ||||
-rw-r--r-- | firmware/target/arm/iriver/app.lds | 19 | ||||
-rw-r--r-- | firmware/target/arm/olympus/app.lds | 19 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/app.lds | 19 | ||||
-rw-r--r-- | firmware/target/arm/usb-drv-arc.c | 9 |
8 files changed, 52 insertions, 37 deletions
diff --git a/firmware/export/imx31l.h b/firmware/export/imx31l.h index 9544603412..aea4b9e151 100755 --- a/firmware/export/imx31l.h +++ b/firmware/export/imx31l.h @@ -34,6 +34,7 @@ #define FRAME_SIZE (240*320*2) #define DEVBSS_ATTR __attribute__((section(".devbss"),nocommon)) +#define QHARRAY_ATTR __attribute__((section(".qharray"),nocommon)) /* * AIPS 1 diff --git a/firmware/export/pp5020.h b/firmware/export/pp5020.h index 163511928d..52acb2f21b 100644 --- a/firmware/export/pp5020.h +++ b/firmware/export/pp5020.h @@ -21,6 +21,8 @@ /* All info gleaned and/or copied from the iPodLinux project. */ +#define QHARRAY_ATTR __attribute__((section(".qharray"),nocommon)) + /* DRAM starts at 0x10000000, but in Rockbox we remap it to 0x00000000 */ #define DRAM_START 0x10000000 diff --git a/firmware/target/arm/imx31/app.lds b/firmware/target/arm/imx31/app.lds index 7a7bd550d1..3725daca04 100644 --- a/firmware/target/arm/imx31/app.lds +++ b/firmware/target/arm/imx31/app.lds @@ -152,6 +152,7 @@ SECTIONS .devbss (NOLOAD) : { _devbssdata = .; + *(.qharray) *(.devbss*) _devbssend = .; } > DEVBSS diff --git a/firmware/target/arm/ipod/app.lds b/firmware/target/arm/ipod/app.lds index bf5eae0515..ccd23eb31b 100644 --- a/firmware/target/arm/ipod/app.lds +++ b/firmware/target/arm/ipod/app.lds @@ -104,7 +104,16 @@ SECTIONS _vectorscopy = LOADADDR(.vectors); - .iram IRAMORIG : + .ibss IRAMORIG (NOLOAD) : + { + _iedata = .; + *(.qharray) + *(.ibss) + . = ALIGN(0x4); + _iend = .; + } > IRAM + + .iram _iend : { _iramstart = .; *(.icode) @@ -116,14 +125,6 @@ SECTIONS _iramcopy = LOADADDR(.iram); - .ibss (NOLOAD) : - { - _iedata = .; - *(.ibss) - . = ALIGN(0x4); - _iend = .; - } > IRAM - .idle_stacks (NOLOAD) : { *(.idle_stacks) diff --git a/firmware/target/arm/iriver/app.lds b/firmware/target/arm/iriver/app.lds index bf5eae0515..ccd23eb31b 100644 --- a/firmware/target/arm/iriver/app.lds +++ b/firmware/target/arm/iriver/app.lds @@ -104,7 +104,16 @@ SECTIONS _vectorscopy = LOADADDR(.vectors); - .iram IRAMORIG : + .ibss IRAMORIG (NOLOAD) : + { + _iedata = .; + *(.qharray) + *(.ibss) + . = ALIGN(0x4); + _iend = .; + } > IRAM + + .iram _iend : { _iramstart = .; *(.icode) @@ -116,14 +125,6 @@ SECTIONS _iramcopy = LOADADDR(.iram); - .ibss (NOLOAD) : - { - _iedata = .; - *(.ibss) - . = ALIGN(0x4); - _iend = .; - } > IRAM - .idle_stacks (NOLOAD) : { *(.idle_stacks) diff --git a/firmware/target/arm/olympus/app.lds b/firmware/target/arm/olympus/app.lds index bf5eae0515..ccd23eb31b 100644 --- a/firmware/target/arm/olympus/app.lds +++ b/firmware/target/arm/olympus/app.lds @@ -104,7 +104,16 @@ SECTIONS _vectorscopy = LOADADDR(.vectors); - .iram IRAMORIG : + .ibss IRAMORIG (NOLOAD) : + { + _iedata = .; + *(.qharray) + *(.ibss) + . = ALIGN(0x4); + _iend = .; + } > IRAM + + .iram _iend : { _iramstart = .; *(.icode) @@ -116,14 +125,6 @@ SECTIONS _iramcopy = LOADADDR(.iram); - .ibss (NOLOAD) : - { - _iedata = .; - *(.ibss) - . = ALIGN(0x4); - _iend = .; - } > IRAM - .idle_stacks (NOLOAD) : { *(.idle_stacks) diff --git a/firmware/target/arm/sandisk/app.lds b/firmware/target/arm/sandisk/app.lds index bf5eae0515..ccd23eb31b 100644 --- a/firmware/target/arm/sandisk/app.lds +++ b/firmware/target/arm/sandisk/app.lds @@ -104,7 +104,16 @@ SECTIONS _vectorscopy = LOADADDR(.vectors); - .iram IRAMORIG : + .ibss IRAMORIG (NOLOAD) : + { + _iedata = .; + *(.qharray) + *(.ibss) + . = ALIGN(0x4); + _iend = .; + } > IRAM + + .iram _iend : { _iramstart = .; *(.icode) @@ -116,14 +125,6 @@ SECTIONS _iramcopy = LOADADDR(.iram); - .ibss (NOLOAD) : - { - _iedata = .; - *(.ibss) - . = ALIGN(0x4); - _iend = .; - } > IRAM - .idle_stacks (NOLOAD) : { *(.idle_stacks) diff --git a/firmware/target/arm/usb-drv-arc.c b/firmware/target/arm/usb-drv-arc.c index a2f8819962..92955e1ac2 100644 --- a/firmware/target/arm/usb-drv-arc.c +++ b/firmware/target/arm/usb-drv-arc.c @@ -338,8 +338,15 @@ struct queue_head { unsigned int wait; /* for softwate use, indicates if the transfer is blocking */ } __attribute__((packed)); +#if CONFIG_CPU == IMX31L +static struct queue_head qh_array[NUM_ENDPOINTS*2] + QHARRAY_ATTR __attribute__((aligned (2048))); +#else +/* This still needs to be 2048 byte aligned, but QHARRAY_ATTR should take + care of that */ static struct queue_head qh_array[NUM_ENDPOINTS*2] - USBDEVBSS_ATTR __attribute__((aligned (2048))); + QHARRAY_ATTR __attribute__((aligned (4))); +#endif static struct wakeup transfer_completion_signal[NUM_ENDPOINTS*2] SHAREDBSS_ATTR; |