Illegal Instruction

Hi,

I was building the Linux Kernel Source Code for 2.6.35, using the following steps:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

However, due to mkimage not installed, it could’nt generate the uImage. Now, i had
to download the u-boot source code and build it using the following steps to get mkimage binary:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

Now mkimage binary got generated in /u-boot/tools/
and using the vmlinux generated after building the kernel, and following the steps, i generated the uImage

convert the kernel into a raw binary image:

arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin

compress the binary image:

gzip -9 linux.bin

package compressed binary image for U-Boot:

./mkimage -A arm -O linux -T kernel -C gzip -a 0x80008000 -e 80008000 -n “ARM Linux Kernel Image” -d linux.bin.gz uImage

and hence the uImage was generated.

The Kernel successfully boots up, however while executing an application having ARM Neon Intrinsics
in the source files, i am getting “Illegal Instruction” as error.
But, any previous kernel images of 2.6.35 which i havent built, works perfectly fine and executes the program
having ARM Neon Intrinsics without throwing any “Illegal Instruction” Error.
Wht is the cause of the issue…?

Thanks,
Rajiv.

Rajiv Biswas <youther.biswas8@gmail.com> writes:

Hi,

I was building the Linux Kernel Source Code for 2.6.35, using the following
steps:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

[...]

and hence the uImage was generated.

The Kernel successfully boots up, however while executing an application
having ARM Neon Intrinsics
in the source files, i am getting "Illegal Instruction" as error.
But, any previous kernel images of 2.6.35 which i havent built, works
perfectly fine and executes the program
having ARM Neon Intrinsics without throwing any "Illegal Instruction" Error.
Wht is the cause of the issue...?

Did you enable CONFIG_NEON in the kernel build?

2011/10/12 Måns Rullgård <mans@mansr.com>

Rajiv Biswas <youther.biswas8@gmail.com> writes:

Hi,

I was building the Linux Kernel Source Code for 2.6.35, using the following
steps:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

[…]

and hence the uImage was generated.

The Kernel successfully boots up, however while executing an application
having ARM Neon Intrinsics
in the source files, i am getting “Illegal Instruction” as error.
But, any previous kernel images of 2.6.35 which i havent built, works
perfectly fine and executes the program
having ARM Neon Intrinsics without throwing any “Illegal Instruction” Error.
Wht is the cause of the issue…?

Did you enable CONFIG_NEON in the kernel build?


Måns Rullgård
mans@mansr.com

In the config file omap3_beagle_defconfig, we dont have CONFIG_NEON flag. However, on
looking in the config file omap3_defconfig found the two flags CONFIG_NEON and
CONFIG_VFP. Hence, i copied these two flags in the omap3_beagle_defconfig config
file after which when i built the kernel following the above steps, i was able to execute
my application having ARM NEON Intrinsics. It WORKED…!!

Hence, thanks a lot Mans for helpin me in this regard. U did it…:))

Regards,
Rajiv.