Dan Hickox, le Sun 22 Mar 2009 11:39:40 -0700, a écrit :
> I couldn't find any information on this one and thought it might be of use
> to you...
>
> kernel.c: In function `pcifront_thread':
> kernel.c:456: warning: generating trampoline in object (requires executable
> stack)
I guess the problem is the nested function. We got rid of that in the
unstable tree. It'd probably be good to backport it to the 3.3 tree.
Samuel
Backport part of unstable changeset 18928:b33b745cd5ec to avoid nested
functions.
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
--- extras/mini-os/kernel.c 2008-08-22 11:49:07.000000000 +0200
+++ /usr/src/xen-unstable.hg/extras/mini-os/kernel.c 2009-03-18
09:48:46.000000000 +0100
@@ -434,25 +434,25 @@
static struct pcifront_dev *pci_dev;
-static void pcifront_thread(void *p)
+static void print_pcidev(unsigned int domain, unsigned int bus, unsigned int
slot, unsigned int fun)
{
- void print(unsigned int domain, unsigned int bus, unsigned int slot,
unsigned int fun)
- {
- unsigned int vendor, device, rev, class;
+ unsigned int vendor, device, rev, class;
- pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x00, 2, &vendor);
- pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x02, 2, &device);
- pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x08, 1, &rev);
- pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x0a, 2, &class);
+ pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x00, 2, &vendor);
+ pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x02, 2, &device);
+ pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x08, 1, &rev);
+ pcifront_conf_read(pci_dev, domain, bus, slot, fun, 0x0a, 2, &class);
- printk("%04x:%02x:%02x.%02x %04x: %04x:%04x (rev %02x)\n", domain,
bus, slot, fun, class, vendor, device, rev);
- }
+ printk("%04x:%02x:%02x.%02x %04x: %04x:%04x (rev %02x)\n", domain, bus,
slot, fun, class, vendor, device, rev);
+}
+static void pcifront_thread(void *p)
+{
pci_dev = init_pcifront(NULL);
if (!pci_dev)
return;
printk("PCI devices:\n");
- pcifront_scan(pci_dev, print);
+ pcifront_scan(pci_dev, print_pcidev);
}
static void fs_thread(void *p)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|