[PATCH] avr32 architecture
This adds support for the Atmel AVR32 architecture as well as the AT32AP7000
CPU and the AT32STK1000 development board.
AVR32 is a new high-performance 32-bit RISC microprocessor core, designed for
cost-sensitive embedded applications, with particular emphasis on low power
consumption and high code density. The AVR32 architecture is not binary
compatible with earlier 8-bit AVR architectures.
The AVR32 architecture, including the instruction set, is described by the
AVR32 Architecture Manual, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf
The Atmel AT32AP7000 is the first CPU implementing the AVR32 architecture. It
features a 7-stage pipeline, 16KB instruction and data caches and a full
Memory Management Unit. It also comes with a large set of integrated
peripherals, many of which are shared with the AT91 ARM-based controllers from
Atmel.
Full data sheet is available from
http://www.atmel.com/dyn/resources/prod_documents/doc32003.pdf
while the CPU core implementation including caches and MMU is documented by
the AVR32 AP Technical Reference, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32001.pdf
Information about the AT32STK1000 development board can be found at
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918
including a BSP CD image with an earlier version of this patch, development
tools (binaries and source/patches) and a root filesystem image suitable for
booting from SD card.
Alternatively, there's a preliminary "getting started" guide available at
http://avr32linux.org/twiki/bin/view/Main/GettingStarted which provides links
to the sources and patches you will need in order to set up a cross-compiling
environment for avr32-linux.
This patch, as well as the other patches included with the BSP and the
toolchain patches, is actively supported by Atmel Corporation.
[dmccr@us.ibm.com: Fix more pxx_page macro locations]
[bunk@stusta.de: fix `make defconfig']
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Dave McCracken <dmccr@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 10:32:13 +04:00
/ *
* Copyright ( C ) 2 0 0 6 A t m e l C o r p o r a t i o n
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or modify
* it u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n 2 a s
* published b y t h e F r e e S o f t w a r e F o u n d a t i o n .
* /
# include < l i n u x / l i n k a g e . h >
.text
/ *
* unsigned l o n g f i n d _ f i r s t _ z e r o _ b i t ( c o n s t u n s i g n e d l o n g * a d d r ,
* unsigned l o n g s i z e )
* /
ENTRY( f i n d _ f i r s t _ z e r o _ b i t )
cp. w r11 , 0
reteq r11
mov r9 , r11
1 : ld. w r8 , r12 [ 0 ]
com r8
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11
/ *
* unsigned l o n g f i n d _ n e x t _ z e r o _ b i t ( c o n s t u n s i g n e d l o n g * a d d r ,
* unsigned l o n g s i z e ,
* unsigned l o n g o f f s e t )
* /
ENTRY( f i n d _ n e x t _ z e r o _ b i t )
lsr r8 , r10 , 5
sub r9 , r11 , r10
retle r11
lsl r8 , 2
add r12 , r8
andl r10 , 3 1 , C O H
breq 1 f
/* offset is not word-aligned. Handle the first (32 - r10) bits */
ld. w r8 , r12 [ 0 ]
com r8
sub r12 , - 4
lsr r8 , r8 , r10
brne . L _ f o u n d
/* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
add r9 , r10
sub r9 , 3 2
retle r11
/* Main loop. offset must be word-aligned */
1 : ld. w r8 , r12 [ 0 ]
com r8
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11
/* Common return path for when a bit is actually found. */
.L_found :
brev r8
clz r10 , r8
rsub r9 , r11
add r10 , r9
/ * XXX : If w e d o n ' t h a v e t o r e t u r n e x a c t l y " s i z e " w h e n t h e b i t
is n o t f o u n d , w e m a y d r o p t h i s " m i n " t h i n g * /
min r12 , r11 , r10
retal r12
/ *
* unsigned l o n g f i n d _ f i r s t _ b i t ( c o n s t u n s i g n e d l o n g * a d d r ,
* unsigned l o n g s i z e )
* /
ENTRY( f i n d _ f i r s t _ b i t )
cp. w r11 , 0
reteq r11
mov r9 , r11
1 : ld. w r8 , r12 [ 0 ]
cp. w r8 , 0
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11
/ *
* unsigned l o n g f i n d _ n e x t _ b i t ( c o n s t u n s i g n e d l o n g * a d d r ,
* unsigned l o n g s i z e ,
* unsigned l o n g o f f s e t )
* /
ENTRY( f i n d _ n e x t _ b i t )
lsr r8 , r10 , 5
sub r9 , r11 , r10
retle r11
lsl r8 , 2
add r12 , r8
andl r10 , 3 1 , C O H
breq 1 f
/* offset is not word-aligned. Handle the first (32 - r10) bits */
ld. w r8 , r12 [ 0 ]
sub r12 , - 4
lsr r8 , r8 , r10
brne . L _ f o u n d
/* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
add r9 , r10
sub r9 , 3 2
retle r11
/* Main loop. offset must be word-aligned */
1 : ld. w r8 , r12 [ 0 ]
cp. w r8 , 0
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11
2011-03-24 02:41:47 +03:00
ENTRY( f i n d _ n e x t _ b i t _ l e )
2008-09-10 17:52:04 +04:00
lsr r8 , r10 , 5
sub r9 , r11 , r10
retle r11
lsl r8 , 2
add r12 , r8
andl r10 , 3 1 , C O H
breq 1 f
/* offset is not word-aligned. Handle the first (32 - r10) bits */
ldswp. w r8 , r12 [ 0 ]
sub r12 , - 4
lsr r8 , r8 , r10
brne . L _ f o u n d
/* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
add r9 , r10
sub r9 , 3 2
retle r11
/* Main loop. offset must be word-aligned */
1 : ldswp. w r8 , r12 [ 0 ]
cp. w r8 , 0
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11
2011-03-24 02:41:47 +03:00
ENTRY( f i n d _ n e x t _ z e r o _ b i t _ l e )
[PATCH] avr32 architecture
This adds support for the Atmel AVR32 architecture as well as the AT32AP7000
CPU and the AT32STK1000 development board.
AVR32 is a new high-performance 32-bit RISC microprocessor core, designed for
cost-sensitive embedded applications, with particular emphasis on low power
consumption and high code density. The AVR32 architecture is not binary
compatible with earlier 8-bit AVR architectures.
The AVR32 architecture, including the instruction set, is described by the
AVR32 Architecture Manual, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf
The Atmel AT32AP7000 is the first CPU implementing the AVR32 architecture. It
features a 7-stage pipeline, 16KB instruction and data caches and a full
Memory Management Unit. It also comes with a large set of integrated
peripherals, many of which are shared with the AT91 ARM-based controllers from
Atmel.
Full data sheet is available from
http://www.atmel.com/dyn/resources/prod_documents/doc32003.pdf
while the CPU core implementation including caches and MMU is documented by
the AVR32 AP Technical Reference, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32001.pdf
Information about the AT32STK1000 development board can be found at
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918
including a BSP CD image with an earlier version of this patch, development
tools (binaries and source/patches) and a root filesystem image suitable for
booting from SD card.
Alternatively, there's a preliminary "getting started" guide available at
http://avr32linux.org/twiki/bin/view/Main/GettingStarted which provides links
to the sources and patches you will need in order to set up a cross-compiling
environment for avr32-linux.
This patch, as well as the other patches included with the BSP and the
toolchain patches, is actively supported by Atmel Corporation.
[dmccr@us.ibm.com: Fix more pxx_page macro locations]
[bunk@stusta.de: fix `make defconfig']
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Dave McCracken <dmccr@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 10:32:13 +04:00
lsr r8 , r10 , 5
sub r9 , r11 , r10
retle r11
lsl r8 , 2
add r12 , r8
andl r10 , 3 1 , C O H
breq 1 f
/* offset is not word-aligned. Handle the first (32 - r10) bits */
ldswp. w r8 , r12 [ 0 ]
sub r12 , - 4
2006-10-31 22:01:11 +03:00
com r8
[PATCH] avr32 architecture
This adds support for the Atmel AVR32 architecture as well as the AT32AP7000
CPU and the AT32STK1000 development board.
AVR32 is a new high-performance 32-bit RISC microprocessor core, designed for
cost-sensitive embedded applications, with particular emphasis on low power
consumption and high code density. The AVR32 architecture is not binary
compatible with earlier 8-bit AVR architectures.
The AVR32 architecture, including the instruction set, is described by the
AVR32 Architecture Manual, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf
The Atmel AT32AP7000 is the first CPU implementing the AVR32 architecture. It
features a 7-stage pipeline, 16KB instruction and data caches and a full
Memory Management Unit. It also comes with a large set of integrated
peripherals, many of which are shared with the AT91 ARM-based controllers from
Atmel.
Full data sheet is available from
http://www.atmel.com/dyn/resources/prod_documents/doc32003.pdf
while the CPU core implementation including caches and MMU is documented by
the AVR32 AP Technical Reference, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32001.pdf
Information about the AT32STK1000 development board can be found at
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918
including a BSP CD image with an earlier version of this patch, development
tools (binaries and source/patches) and a root filesystem image suitable for
booting from SD card.
Alternatively, there's a preliminary "getting started" guide available at
http://avr32linux.org/twiki/bin/view/Main/GettingStarted which provides links
to the sources and patches you will need in order to set up a cross-compiling
environment for avr32-linux.
This patch, as well as the other patches included with the BSP and the
toolchain patches, is actively supported by Atmel Corporation.
[dmccr@us.ibm.com: Fix more pxx_page macro locations]
[bunk@stusta.de: fix `make defconfig']
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Dave McCracken <dmccr@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 10:32:13 +04:00
lsr r8 , r8 , r10
brne . L _ f o u n d
/* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
add r9 , r10
sub r9 , 3 2
retle r11
/* Main loop. offset must be word-aligned */
1 : ldswp. w r8 , r12 [ 0 ]
2006-10-31 22:01:11 +03:00
com r8
[PATCH] avr32 architecture
This adds support for the Atmel AVR32 architecture as well as the AT32AP7000
CPU and the AT32STK1000 development board.
AVR32 is a new high-performance 32-bit RISC microprocessor core, designed for
cost-sensitive embedded applications, with particular emphasis on low power
consumption and high code density. The AVR32 architecture is not binary
compatible with earlier 8-bit AVR architectures.
The AVR32 architecture, including the instruction set, is described by the
AVR32 Architecture Manual, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf
The Atmel AT32AP7000 is the first CPU implementing the AVR32 architecture. It
features a 7-stage pipeline, 16KB instruction and data caches and a full
Memory Management Unit. It also comes with a large set of integrated
peripherals, many of which are shared with the AT91 ARM-based controllers from
Atmel.
Full data sheet is available from
http://www.atmel.com/dyn/resources/prod_documents/doc32003.pdf
while the CPU core implementation including caches and MMU is documented by
the AVR32 AP Technical Reference, available from
http://www.atmel.com/dyn/resources/prod_documents/doc32001.pdf
Information about the AT32STK1000 development board can be found at
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918
including a BSP CD image with an earlier version of this patch, development
tools (binaries and source/patches) and a root filesystem image suitable for
booting from SD card.
Alternatively, there's a preliminary "getting started" guide available at
http://avr32linux.org/twiki/bin/view/Main/GettingStarted which provides links
to the sources and patches you will need in order to set up a cross-compiling
environment for avr32-linux.
This patch, as well as the other patches included with the BSP and the
toolchain patches, is actively supported by Atmel Corporation.
[dmccr@us.ibm.com: Fix more pxx_page macro locations]
[bunk@stusta.de: fix `make defconfig']
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Dave McCracken <dmccr@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 10:32:13 +04:00
brne . L _ f o u n d
sub r12 , - 4
sub r9 , 3 2
brgt 1 b
retal r11