diff options
author | Stewart Smith <stewart@linux.ibm.com> | 2019-03-29 11:58:49 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2019-03-29 13:23:48 +1100 |
commit | 3e0eef2e9a922acb853f38c7fe42198bf7fb177d (patch) | |
tree | b136b81193283d2c45d18235a3cdcfa56faec93d | |
parent | 11374f20e8f1c179571077292dd2b3011dea4ae2 (diff) | |
download | skiboot-3e0eef2e9a922acb853f38c7fe42198bf7fb177d.zip skiboot-3e0eef2e9a922acb853f38c7fe42198bf7fb177d.tar.gz skiboot-3e0eef2e9a922acb853f38c7fe42198bf7fb177d.tar.bz2 |
Force noinline for pci_add_(one_)device_node(s)()
We call all of these things recursively, so don't use excess stack.
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
-rw-r--r-- | core/pci.c | 20 | ||||
-rw-r--r-- | include/compiler.h | 1 |
2 files changed, 11 insertions, 10 deletions
@@ -1524,11 +1524,11 @@ static void pci_print_summary_line(struct phb *phb, struct pci_device *pd, rev_class & 0xff, rev_class >> 8, cname, slotstr); } -static void pci_add_one_device_node(struct phb *phb, - struct pci_device *pd, - struct dt_node *parent_node, - struct pci_lsi_state *lstate, - uint8_t swizzle) +static void __noinline pci_add_one_device_node(struct phb *phb, + struct pci_device *pd, + struct dt_node *parent_node, + struct pci_lsi_state *lstate, + uint8_t swizzle) { struct dt_node *np; const char *cname; @@ -1653,11 +1653,11 @@ static void pci_add_one_device_node(struct phb *phb, dt_add_property(np, "ranges", ranges_direct, sizeof(ranges_direct)); } -void pci_add_device_nodes(struct phb *phb, - struct list_head *list, - struct dt_node *parent_node, - struct pci_lsi_state *lstate, - uint8_t swizzle) +void __noinline pci_add_device_nodes(struct phb *phb, + struct list_head *list, + struct dt_node *parent_node, + struct pci_lsi_state *lstate, + uint8_t swizzle) { struct pci_device *pd; diff --git a/include/compiler.h b/include/compiler.h index 35bf165..9a4602e 100644 --- a/include/compiler.h +++ b/include/compiler.h @@ -31,6 +31,7 @@ /* not __const as this has a different meaning (const) */ #define __attrconst __attribute__((const)) #define __warn_unused_result __attribute__((warn_unused_result)) +#define __noinline __attribute__((noinline)) #if 0 /* Provided by gcc stddef.h */ #define offsetof(type,m) __builtin_offsetof(type,m) |