Nigel Stephens wrote:
>
>
> Franck Bui-Huu wrote:
>> Thiemo Seufer wrote:
>>
>>> Could you check what "-march=mips32r2 -smartmips -mtune=4ksd" does?
>>> I expect it to have the same result than "-march=4ksd".
>>>
>>>
>>
>> OK, I give it a try and here are some figures:
>>
>> $ mipsel-linux-size mipssde-6.05.00-20061023/vmlinux~*
>> text data bss dec hex filename
>> 1446130 58456 93056 1597642 1860ca
>> mipssde-6.05.00-20061023/vmlinux~4ksd
>> 1472034 58456 93056 1623546 18c5fa
>> mipssde-6.05.00-20061023/vmlinux~mips32r2-smartmips
>> 1446130 58456 93056 1597642 1860ca
>> mipssde-6.05.00-20061023/vmlinux~mips32r2-smartmips-mtune4ksd
>>
>> So you're right "-march=mips32r2 -smartmips -mtune=4ksd" gives the
>> same result as "-march=4ksd"
>>
>>
>
> IIRC that should be -msmartmips, not -smartmips.
yes '-msmartmips' is used.
>
>> And the extra space given by "-march=mips32r2 -smartmips" is coming
>> from some additional nop instructions:
>>
>> $ mipsel-linux-objdump -D vmlinux~mips32r2-smartmips >
>> vmlinux~mips32r2-smartmips.S
>> $ mipsel-linux-objdump -D vmlinux~4ksd > vmlinux~4ksd.S
>> $ grep -c nop *.S
>> vmlinux~4ksd.S:18708
>> vmlinux~mips32r2-smartmips.S:27895
>>
>> It seems that these extra nops are used for load delays. For example:
>>
>> vmlinux~4ksd.S:
>> --------------
>> <snip>
>> c00008b4: 8fa40040 lw a0,64(sp)
>> c00008b8: 27a40018 addiu a0,sp,24
>> c00008bc: 0c000148 jal c0000520 <try_name>
>> <snip>
>>
>> vmlinux~mips32r2-smartmips.S:
>> ---------------------------
>> c00008b8: 8fa40040 lw a0,64(sp)
>> c00008bc: 00000000 nop
>> c00008c0: 27a40018 addiu a0,sp,24
>> c00008c4: 0c000148 jal c0000520 <try_name>
>>
>>
>
> That's weird: load delay slots should only be required by -march=mips1
> (or no -march)
>
> Are you sure that the -march=mips32r2 option is really getting passed to
> the compiler and assembler?
>
Yes I'm pretty sure:
$ mispel-linux-readelf -h vmlinux~mips32r2-smartmips
File: vmlinux~mips32r2-smartmips
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0xc015e000
Start of program headers: 52 (bytes into file)
Start of section headers: 12097028 (bytes into file)
Flags: 0x70001001, noreorder, o32, mips32r2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 1
Size of section headers: 40 (bytes)
Number of section headers: 42
Section header string table index: 39
$ head kernel/.user.o.cmd
cmd_kernel/user.o := mipsel-linux-gcc -Wp,-MD,kernel/.user.o.d -nostdinc
-isystem /usr/lib/gcc/mipsel-linux/3.4.4/include -D__KERNEL__ -Iinclude
-include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes
-Wno-trigraphs -fno-strict-aliasing -fno-common
-Werror-implicit-function-declaration -O2 -mabi=32 -G 0 -mno-abicalls -fno-pic
-pipe -msoft-float -ffreestanding -march=mips32r2 -Wa,-mips32r2 -Wa,--trap
-msmartmips -Iinclude/asm-mips/mach-usip -Iinclude/asm-mips/mach-generic
-D"VMLINUX_LOAD_ADDRESS=0xffffffffc0000000" -fomit-frame-pointer -g
-Wdeclaration-after-statement -D"KBUILD_STR(s)=\#s"
-D"KBUILD_BASENAME=KBUILD_STR(user)" -D"KBUILD_MODNAME=KBUILD_STR(user)" -c -o
kernel/user.o kernel/user.c
deps_kernel/user.o := \
kernel/user.c \
$(wildcard include/config/keys.h) \
$(wildcard include/config/inotify/user.h) \
include/linux/init.h \
$(wildcard include/config/modules.h) \
$(wildcard include/config/hotplug.h) \
$(wildcard include/config/hotplug/cpu.h) \
Franck
|