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

Re: [Xen-devel] [PATCH, updated] i386 linux: eliminate hard coded items from __xen_guest section



Hmm, I would assume your assembler then only does 32-bit calculations. In that 
case (if such assemblers still exist),
I'd rather want to use the same macro as on 64-bits, where a similar problem 
needed to be worked around. Jan

>>> christian.limpach@xxxxxxxxx 20.02.06 17:04:35 >>>
On 2/17/06, Jan Beulich <JBeulich@xxxxxxxxxx> wrote:
> To allow the new VMSPLIT_* Kconfig options to work, and to avoid problems 
> when the position of the hypercall page
> changes, this patch eliminates the hard-coded entries in the __xen_guest 
> section in head.S.
> Unfortunately the original version didn't work with gas newer than beginning 
> of August 2005, where in an attempt to
fix
> another problem a regression was introduced.

The calculation doesn't seem to work on 32-bit for PAGE_OFFSET >=
2^31, at least not with:
cl349@firebug:~/ls/xen-unstable-clean.hg$ as --version
GNU assembler 2.15.92.0.2 20040927

I'll checkin the following:
.macro bigutoa value
    utoa (\value) >> 12
    .ascii "000"
.endm
.macro utoa value
 .if (\value) >= 16
        utoa (\value) >> 4
 .endif
 .if (\value) % 16 < 10
  .byte '0' + (\value) % 16
 .else
  .byte 'A' + (\value) % 16 - 10
 .endif
.endm

.section __xen_guest
        .ascii  "GUEST_OS=linux,GUEST_VER=2.6"
        .ascii  ",XEN_VER=xen-3.0"
        .ascii  ",VIRT_BASE=0x"; bigutoa __PAGE_OFFSET
        .ascii  ",HYPERCALL_PAGE=0x"; utoa
((__PHYSICAL_START+HYPERCALL_PAGE_OFFSET)>>PAGE_SHIFT)

It's a bit gross, maybe there's a neater solution.

     christian

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.