Allow options in mainboard configuration file

Moved payload into romimage
More flexible romimage declaration


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@983 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Greg Watson 2003-07-18 17:05:10 +00:00
parent ce72e7ee21
commit 6ae46145e6
1 changed files with 34 additions and 24 deletions

View File

@ -291,8 +291,7 @@ class romimage:
# A buildrom statement
class buildrom:
def __init__ (self, payload, size, roms):
self.payload = payload
def __init__ (self, size, roms):
self.size = size
self.roms = roms
@ -661,7 +660,9 @@ def getoption(name, image):
return v.contents()
def setoption(name, value):
global loc, global_options, global_option_values, curimage
global loc, global_options, global_option_values, curimage, curpart
if (curpart and curpart.type != 'mainboard'):
fatal("Options may only be set in top-level and mainboard configuration files")
o = getdict(global_options, name)
if (o == 0):
fatal("Error: attempt to set nonexistent option %s" % name)
@ -840,8 +841,8 @@ def addldscript(path):
curimage.addldscript(fullpath)
def payload(path):
global main_payload
main_payload = path
global curimage
curimage.setpayload(path)
# adduserdefine("PAYLOAD:=%s"%path)
# addrule('payload')
# adddep('payload', path)
@ -866,10 +867,10 @@ def endromimage():
curimage = 0
curpart = 0
def addbuildrom(payload, size, roms):
def addbuildrom(size, roms):
global buildroms
print "Build ROM payload %s size %d" % (payload, size)
b = buildrom(payload, size, roms)
print "Build ROM size %d" % size
b = buildrom(size, roms)
buildroms.append(b)
def addinitobject(object_name):
@ -1033,6 +1034,11 @@ def topify(path):
return path
%%
# to make if work without 2 passses, we use an old hack from SIMD, the
# context bit. If the bit is 1, then ops get done, otherwise
# ops don't get done. From the top level, context is always
# 1. In an if, context depends on eval of the if condition
parser Config:
ignore: r'\s+'
ignore: "#.*?\r?\n"
@ -1162,11 +1168,6 @@ parser Config:
rule ldscript<<C>>: LDSCRIPT DIRPATH {{ if (C): addldscript(DIRPATH) }}
rule payload<<C>>: PAYLOAD DIRPATH {{ if (C): payload(DIRPATH) }}
# if is a bad id ....
# needs to be C and ID, but nested if's are, we hope, not going to
# happen. IF so, possibly ID && C could be used.
rule iif<<C>>: IF ID {{ c = lookup(ID) }}
(stmt<<C and c>>)*
[ ELSE (stmt<<C and not c>>)* ]
@ -1202,12 +1203,8 @@ parser Config:
[ "," prtlist {{ val = val + prtlist }}
] {{ if (C): print eval(val) }}
# to make if work without 2 passses, we use an old hack from SIMD, the
# context bit. If the bit is 1, then ops get done, otherwise
# ops don't get done. From the top level, context is always
# 1. In an if, context depends on eval of the if condition
rule stmt<<C>>: addaction<<C>> {{ return addaction }}
| arch<<C>> {{ return arch}}
rule stmt<<C>>: arch<<C>> {{ return arch}}
| addaction<<C>> {{ return addaction }}
| cpu<<C>> {{ return cpu}}
| dir<<C>> {{ return dir}}
| driver<<C>> {{ return driver }}
@ -1221,7 +1218,7 @@ parser Config:
| makerule<<C>> {{ return makerule }}
| northbridge<<C>> {{ return northbridge }}
| object<<C>> {{ return object }}
| payload<<C>> {{ return payload}}
| option<<C>> {{ return option }}
| pmc<<C>> {{ return pmc}}
| prtstmt<<C>> {{ return prtstmt}}
| register<<C>> {{ return register}}
@ -1252,17 +1249,30 @@ parser Config:
| opif<<C>>
| prtstmt<<C>>
rule payload<<C>>: PAYLOAD DIRPATH {{ if (C): payload(DIRPATH) }}
rule mainboard<<C>>:
MAINBOARD PATH {{ if (C): mainboard(PATH) }}
rule romif<<C>>: IF ID {{ c = lookup(ID) }}
(romstmt<<C and c>>)*
[ ELSE (romstmt<<C and not c>>)* ]
END
rule romstmt<<C>>: romif<<C>>
| option<<C>>
| mainboard<<C>>
| payload<<C>>
rule romimage: ROMIMAGE STR {{ startromimage(dequote(STR)) }}
(opstmt<<1>>)*
MAINBOARD PATH {{ mainboard(PATH) }}
(romstmt<<1>>)*
END {{ endromimage() }}
rule roms: STR {{ s = '(' + STR }}
( STR {{ s = s + "," + STR }}
)* {{ return eval(s + ')') }}
rule buildrom: BUILDROM PATH expr roms {{ addbuildrom(PATH, expr, roms) }}
rule buildrom: BUILDROM expr roms {{ addbuildrom(expr, roms) }}
rule romstmts: romimage
| buildrom