diff options
author | Francis Rowe <info@gluglug.org.uk> | 2014-12-22 20:06:08 +0000 |
---|---|---|
committer | Francis Rowe <info@gluglug.org.uk> | 2014-12-22 20:06:08 +0000 |
commit | 982d724f3fc21c78e33f65e2fe3d2cce6482a4f9 (patch) | |
tree | 807a14cbe44a331f0ec1bc9ac52cd5e42359d28f /resources/utilities/ich9deblob/ich9deblob.c | |
parent | 5ff75cb1f5135e7f04328e82418f8e3519ecf526 (diff) | |
download | librebootfr-982d724f3fc21c78e33f65e2fe3d2cce6482a4f9.tar.gz librebootfr-982d724f3fc21c78e33f65e2fe3d2cce6482a4f9.zip |
ich9deblob: reduce compatibility checks to a single function call
Diffstat (limited to 'resources/utilities/ich9deblob/ich9deblob.c')
-rw-r--r-- | resources/utilities/ich9deblob/ich9deblob.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/resources/utilities/ich9deblob/ich9deblob.c b/resources/utilities/ich9deblob/ich9deblob.c index 32c2f1fd..ad4960cb 100644 --- a/resources/utilities/ich9deblob/ich9deblob.c +++ b/resources/utilities/ich9deblob/ich9deblob.c @@ -65,6 +65,7 @@ int systemIsBigEndian(); int structBitfieldWrongOrder(); int structMembersWrongOrder(); struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8K factoryGbeStruct8k); +int systemOrCompilerIncompatible(struct DESCRIPTORREGIONRECORD descriptorStruct, struct GBEREGIONRECORD_8K gbeStruct8k); int main(int argc, char *argv[]) { @@ -101,10 +102,7 @@ int main(int argc, char *argv[]) // ----------------------------------------------------------------------------------------------- // Compatibility checks. This version of ich9deblob is not yet porable. - if (structSizesIncorrect(factoryDescriptorStruct, factoryGbeStruct8k)) return 1; - if (systemIsBigEndian()) return 1; - if (structBitfieldWrongOrder()) return 1; - if (structMembersWrongOrder()) return 1; + if (systemOrCompilerIncompatible(factoryDescriptorStruct, factoryGbeStruct8k)) return 1; // ----------------------------------------------------------------------------------------------- @@ -390,6 +388,16 @@ int structBitfieldWrongOrder() { return 0; } +// Compatibility checks. This version of ich9deblob is not yet porable. +int systemOrCompilerIncompatible(struct DESCRIPTORREGIONRECORD descriptorStruct, struct GBEREGIONRECORD_8K gbeStruct8k) +{ + if (structSizesIncorrect(descriptorStruct, gbeStruct8k)) return 1; + if (systemIsBigEndian()) return 1; + if (structBitfieldWrongOrder()) return 1; + if (structMembersWrongOrder()) return 1; + return 0; +} + struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8K factoryGbeStruct8k) { // Correct the main gbe region. By default, the X200 (as shipped from Lenovo) comes |