diff options
| author | Frank Gevaerts <frank@gevaerts.be> | 2008-04-20 18:43:47 +0000 |
|---|---|---|
| committer | Frank Gevaerts <frank@gevaerts.be> | 2008-04-20 18:43:47 +0000 |
| commit | 7a2d9ddb08edb65b39bb3276dd60aec4ce7e8d87 (patch) | |
| tree | 599cff1325bca86d777b65eb183245bd5717cac4 | |
| parent | 850a11250a8c5b6825b080ff843f30fd68cb71f6 (diff) | |
| download | rockbox-7a2d9ddb08edb65b39bb3276dd60aec4ce7e8d87.zip rockbox-7a2d9ddb08edb65b39bb3276dd60aec4ce7e8d87.tar.gz rockbox-7a2d9ddb08edb65b39bb3276dd60aec4ce7e8d87.tar.bz2 rockbox-7a2d9ddb08edb65b39bb3276dd60aec4ce7e8d87.tar.xz | |
move some data around to place qh_array at the start of iram. This saves up to about 2k iram on PP
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17194 a1c6a512-1295-4272-9138-f99709370657
| -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 9544603..aea4b9e 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 1635119..52acb2f 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 7a7bd55..3725dac 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 bf5eae0..ccd23eb 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 bf5eae0..ccd23eb 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 bf5eae0..ccd23eb 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 bf5eae0..ccd23eb 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 a2f8819..92955e1 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; |