Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Merging few files from i386/amd64 into x86



On Monday 30 March 2009 11:14:32 Mindaugas Rasiukevicius wrote:
> David Young <dyoung%pobox.com@localhost> wrote:
> > Can you avoid using new #ifdefs, or else confine them to the top of the
> > file?  They make even straightforward code hard to read. :-/
>
> More about this:
>
> http://www.netbsd.org/~rmind/x86_cpu.diff
>
>       if (stack != NULL) {
> #ifdef __x86_64__
>               tf->tf_rsp = (uint64_t)stack + stacksize;
> #else
>               tf->tf_esp = (u_int)stack + stacksize;
> #endif
>       }
>
> With these macros, such code would become:
>
>       if (stack != NULL)
>               X86_TF_RSP(tf) = (uintptr_t)stack + stacksize;
>
> This would make merge of trap.c and syscall.c into x86 quite nice.
>
> Concerns:
>
> - Any reason why we would want to keep the type size in MD (instead of
>   abstracting it out, eg. with uintptr_t)?

Ok with me, but take care about storage of physical addresses: uintptr_t
is not large enough in respect to 32bit PAE.

>   By the way: 
>   http://nxr.netbsd.org/source/xref/sys/arch/i386/include/frame.h#trapframe
>   Why these and others are not unsigned, eg. uint32_t?

IMO, this is a bug because this reduces the effective register size to 31bits.

> - Naming of macros could be better. Suggestions?
>
> Thanks.




Home | Main Index | Thread Index | Old Index