Chameleon

Chameleon Svn Source Tree

Root/branches/cparm/i386/libsaio/pci_root.c

1/*
2 * Copyright 2009 netkas
3 */
4
5#include "pci_root.h"
6#include "bootstruct.h"
7#include "Platform.h"
8
9#ifndef DEBUG_PCIROOT
10#define DEBUG_PCIROOT 0
11#endif
12
13#if DEBUG_PCIROOT
14#define DBG(x...) printf(x)
15#else
16#define DBG(x...)
17#endif
18
19static int rootuid = 10; //value means function wasnt ran yet
20
21int getPciRootUID(void)
22{
23const char *val;
24int len;
25
26if (rootuid < 10) return rootuid;
27rootuid = 0;/* default uid = 0 */
28
29if (getValueForKey(kPCIRootUID, &val, &len, DEFAULT_BOOT_CONFIG))
30{
31if (isdigit(val[0])) rootuid = val[0] - '0';
32
33if ( (rootuid >= 0) && (rootuid < 10) )
34goto out;
35else
36rootuid = 0;
37}
38
39/* PCEFI compatibility */
40if (getValueForKey("-pci0", &val, &len, DEFAULT_BOOT_CONFIG))
41{
42rootuid = 0;
43}
44else if (getValueForKey("-pci1", &val, &len, DEFAULT_BOOT_CONFIG))
45{
46rootuid = 1;
47}
48out:
49verbose("Using PCI-Root-UID value: %d\n", rootuid);
50return rootuid;
51}
52

Archive Download this file

Revision: 1984