On 20.08.2008 16:37, Stefan Reinauer wrote: > Carl-Daniel Hailfinger wrote: > >> v3 can't use global variables in stage1 or initram. Same applies to >> static local variables. See the bug below. >> >> Ideas for fixes? The generic variable infrastructure would be one option. >> > > Just call smbus_init() prior to calling smbus_read_byte() the first > time. The variable infrastructure might be a nice idea for some things, > but I think in cases as simple as this, we should not rely on it. >
Agreed. By the way, the new section checker has better output: CHECK initram (non-empty .data sections) /sources/tmptrees/corebootv3-check_illegal_global_vars/build/coreboot.initram_partiallylinked.o: first_time.3526 make: *** [/sources/tmptrees/corebootv3-check_illegal_global_vars/build/coreboot.initram] Error 1 > Is there a method to change variables in your "variable infrastructure" > across cpus? If so, it could be useful for semaphores / locking. But I > don't think that's possible since the stuff is in cache, right? > It strongly depends on the processor. Some processors share their CAR area contents, some don't. If CAR is shared, locking and updating is possible. If CAR is not shared, we need a global register for locking and a sort of syscall mechanism which allows APs to tell the BSP about memory writes/reads. Regards, Carl-Daniel -- http://www.hailfinger.org/ -- coreboot mailing list [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

