David Daney a écrit :
> On 11/04/2010 05:18 AM, Robert Millan wrote:
>> Please consider this patch, it enables AT_PLATFORM for Loongson 2F CPU.
>>
>>
> [...]
>> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
>> index 71620e1..504f3b1 100644
>> --- a/arch/mips/kernel/cpu-probe.c
>> +++ b/arch/mips/kernel/cpu-probe.c
>> @@ -614,6 +614,8 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips
>> *c, unsigned int cpu)
>> case PRID_IMP_LOONGSON2:
>> c->cputype = CPU_LOONGSON2;
>> __cpu_name[cpu] = "ICT Loongson-2";
>> + if (cpu == 0)
>> + __elf_platform = "loongson-2f";
>> c->isa_level = MIPS_CPU_ISA_III;
>> c->options = R4K_OPTS |
>> MIPS_CPU_FPU | MIPS_CPU_LLSC |
>
> This doesn't look right to me.
>
> You are claiming that all loongson2 are loongson-2f. Is that really
> true? Or are there other types of loongson2 that are not loongson-2f?
>
> You need to be very careful here. This is part of the userspace ABI, so
> if you get it wrong, you are stuck with it forever.
>
> One question you didn't address is why userspace would care that it is
> running on exactly "loongson-2f" instead of just mips4.
>
> The __elf_platform gets converted to a directory name by ld.so, so you
> may want to choose a value without '-' in it.
>
> My suggestion would be to set "loongson2" for the generic CPU_LOONGSON2,
> and if there is a good reason for it, "loongson2f" for the 'f' variant.
>
You should definitely define here loongson-2e and loongson-2f
separately. They have the same instruction set, but different opcodes
for the loongson specific instructions, hence they are not compatible.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
|