From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Landley Subject: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh Date: Fri, 2 Jan 2009 02:13:30 -0600 Message-ID: <200901020213.30658.rob@landley.net> References: <200901020207.30359.rob@landley.net> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <200901020207.30359.rob@landley.net> Content-Disposition: inline Sender: linux-embedded-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Embedded Linux mailing list Cc: linux-kernel@vger.kernel.org, Andrew Morton , "H. Peter Anvin" , Sam Ravnborg RnJvbTogUm9iIExhbmRsZXkgPHJvYkBsYW5kbGV5Lm5ldD4KClJlcGxhY2Uga2VybmVsL3RpbWVj b25zdC5wbCB3aXRoIGtlcm5lbC90aW1lY29uc3Quc2guICBUaGUgbmV3IHNoZWxsIHNjcmlwdApp cyBtdWNoIHNpbXBsZXIsIGFib3V0IDEvNCB0aGUgc2l6ZSwgYW5kIHJ1bnMgb24gUmVkIEhhdCA5 IGZyb20gMjAwMy4KClBldGVyIEFudmluIGFkZGVkIHRoaXMgcGVybCB0byAyLjYuMjUuICBCZWZv cmUgdGhhdCwgdGhlIGtlcm5lbCBoYWQgbmV2ZXIKcmVxdWlyZWQgcGVybCB0byBidWlsZC4KClNp Z25lZC1vZmYtYnk6IFJvYiBMYW5kbGV5IDxyb2JAbGFuZGxleS5uZXQ+Ci0tLQoKIGtlcm5lbC9N YWtlZmlsZSAgICAgfCAgICA0IAoga2VybmVsL3RpbWVjb25zdC5wbCB8ICAzNzggLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBrZXJuZWwvdGltZWNvbnN0LnNoIHwg ICA5MSArKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDM4MCBk ZWxldGlvbnMoLSkKCmRpZmYgLXIgZDBjNzYxMWRjZmQ2IGtlcm5lbC9NYWtlZmlsZQotLS0gYS9r ZXJuZWwvTWFrZWZpbGUJVHVlIERlYyAzMCAxNzo0ODoyNSAyMDA4IC0wODAwCisrKyBiL2tlcm5l bC9NYWtlZmlsZQlGcmkgSmFuIDAyIDAwOjEwOjQ0IDIwMDkgLTA2MDAKQEAgLTExNSw3ICsxMTUs NyBAQAogJChvYmopL3RpbWUubzogJChvYmopL3RpbWVjb25zdC5oCiAKIHF1aWV0X2NtZF90aW1l Y29uc3QgID0gVElNRUMgICAkQAotICAgICAgY21kX3RpbWVjb25zdCAgPSAkKFBFUkwpICQ8ICQo Q09ORklHX0haKSA+ICRACisgICAgICBjbWRfdGltZWNvbnN0ICA9ICQoQ09ORklHX1NIRUxMKSAk PCAkKENPTkZJR19IWikgPiAkQAogdGFyZ2V0cyArPSB0aW1lY29uc3QuaAotJChvYmopL3RpbWVj b25zdC5oOiAkKHNyYykvdGltZWNvbnN0LnBsIEZPUkNFCiskKG9iaikvdGltZWNvbnN0Lmg6ICQo c3JjKS90aW1lY29uc3Quc2ggRk9SQ0UKIAkkKGNhbGwgaWZfY2hhbmdlZCx0aW1lY29uc3QpCi0t LSAvZGV2L251bGwJMTk2OS0xMi0zMSAwMDowMDowMC4wMDAwMDAwMDAgLTA2MDAKKysrIGhnL2tl cm5lbC90aW1lY29uc3Quc2gJMjAwOS0wMS0wMSAyMzo1MzoxNy4wMDAwMDAwMDAgLTA2MDAKQEAg LTAsMCArMSw5MSBAQAorIyEvYmluL2Jhc2gKKworaWYgWyAkIyAtbmUgMSBdCit0aGVuCisJZWNo byAiVXNhZ2U6IHRpbWVjb25zdC5zaCBIWiIKKwlleGl0IDEKK2ZpCisKK0haPSQxCisKKyMgU2Fu aXR5IHRlc3Q6IGV2ZW4gdGhlIHNoZWxsIGluIFJlZCBIYXQgOSAoY2lyY2EgMjAwMykgc3VwcG9y dGVkIDY0IGJpdCBtYXRoLgorCitbICQoKDE8PDMyKSkgLWx0IDAgXSAmJiBleGl0IDEKKworIyBP dXRwdXQgc3RhcnQgb2YgaGVhZGVyIGZpbGUKKworY2F0IDw8IEVPRgorLyogQXV0b21hdGljYWxs eSBnZW5lcmF0ZWQgYnkga2VybmVsL3RpbWVjb25zdC5zaCAqLworLyogQ29udmVyc2lvbiBjb25z dGFudHMgZm9yIEhaID09ICRIWiAqLworCisjaWZuZGVmIEtFUk5FTF9USU1FQ09OU1RfSAorI2Rl ZmluZSBLRVJORUxfVElNRUNPTlNUX0gKKworI2luY2x1ZGUgPGxpbnV4L3BhcmFtLmg+CisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKworI2lmIEhaICE9ICRIWgorI2Vycm9yICJrZXJuZWwvdGlt ZWNvbnN0LmggaGFzIHRoZSB3cm9uZyBIWiB2YWx1ZSEiCisjZW5kaWYKKworRU9GCisKKyMgRm9y IGJvdGggTWlsaXNlY29uZHMgYW5kIE1pY3Jvc2Vjb25kcworCitmb3IgaSBpbiAiTVNFQyAxMDAw IiAiVVNFQyAxMDAwMDAwIgorZG8KKwlOQU1FPSQoZWNobyAkaSB8IGF3ayAne3ByaW50ICQxfScp CisJUEVSSU9EPSQoZWNobyAkaSB8IGF3ayAne3ByaW50ICQyfScpCisKKwkjIEZpbmQgZ3JlYXRl c3QgY29tbW9uIGRlbm9taW5hdG9yICh1c2luZyBFdWNsaWQncyBhbGdvcml0aG0pCisKKwlBPSRI WgorCUI9JFBFUklPRAorCisJd2hpbGUgWyAkQiAtbmUgMCBdCisJZG8KKwkJQz0kKCgkQSUkQikp CisJCUE9JEIKKwkJQj0kQworCWRvbmUKKworCUdDRD0kQQorCisJIyBEbyB0aGlzIGZvciBlYWNo IGRpcmVjdGlvbiAoSFpfVE9fUEVSSU9EIGFuZCBQRVJJT0RfVE9fSFopCisKKwlmb3IgRElSRUNU SU9OIGluIDAgMQorCWRvCisJCWlmIFsgJERJUkVDVElPTiAtZXEgMCBdCisJCXRoZW4KKwkJCUNP TlZFUlQ9IkhaX1RPXyR7TkFNRX0iCisJCQlGUk9NPSRIWgorCQkJVE89JFBFUklPRAorCQllbHNl CisJCQlDT05WRVJUPSIke05BTUV9X1RPX0haIgorCQkJRlJPTT0kUEVSSU9ECisJCQlUTz0kSFoK KwkJZmkKKworCQkjIEhvdyBtYW55IHNoaWZ0IGJpdHMgZ2l2ZSAzMiBiaXRzIG9mIHNpZ25pZmlj YW50IGRhdGE/CisKKwkJU0hJRlQ9MAorCQl3aGlsZSBbICQoKCAoKCRUTzw8JFNISUZUKSskRlJP TS0xKS8kRlJPTSApKSAtbHQgJCgoMTw8MzEpKSBdCisJCWRvCisJCQlTSElGVD0kKCggJFNISUZU KzEgKSkKKwkJZG9uZQorCisJCU1VTDMyPSQoKCAoKCRUTzw8JFNISUZUKSskRlJPTS0xKS8kRlJP TSApKQorCQlNVUwzMj0kKHByaW50ZiAleCAkTVVMMzIpCisJCWVjaG8gIiNkZWZpbmUgJHtDT05W RVJUfV9NVUwzMglVNjRfQygweCRNVUwzMikiCisJCUFESjMyPSQoKCRGUk9NLyRHQ0QpKQorCQlB REozMj0kKCggKCgkQURKMzItMSk8PCRTSElGVCkvJEFESjMyICkpCisJCUFESjMyPSQocHJpbnRm ICV4ICRBREozMikKKwkJZWNobyAiI2RlZmluZSAke0NPTlZFUlR9X0FESjMyCVU2NF9DKDB4JEFE SjMyKSIKKwkJZWNobyAiI2RlZmluZSAke0NPTlZFUlR9X1NIUjMyCSRTSElGVCIKKwkJZWNobyAi I2RlZmluZSAke0NPTlZFUlR9X05VTQkJVTY0X0MoJCgoJFRPLyRHQ0QpKSkiCisJCWVjaG8gIiNk ZWZpbmUgJHtDT05WRVJUfV9ERU4JCVU2NF9DKCQoKCRGUk9NLyRHQ0QpKSkiCisJZG9uZQorZG9u ZQorCitlY2hvCitlY2hvICIjZW5kaWYgLyogS0VSTkVMX1RJTUVDSE9OU1RfSCAqLyIKLS0tIGhn L2tlcm5lbC90aW1lY29uc3QucGwJMjAwOC0xMS0yMiAxOTowOToxMy4wMDAwMDAwMDAgLTA2MDAK KysrIC9kZXYvbnVsbAkxOTY5LTEyLTMxIDAwOjAwOjAwLjAwMDAwMDAwMCAtMDYwMApAQCAtMSwz NzggKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jICAgQ29w eXJpZ2h0IDIwMDctMjAwOCByUGF0aCwgSW5jLiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLSMKLSMg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGludXgga2VybmVsLCBhbmQgaXMgbWFkZSBhdmFp bGFibGUgdW5kZXIKLSMgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBvciAoYXQgeW91cgotIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb247 IGluY29ycG9yYXRlZCBoZXJlaW4gYnkgcmVmZXJlbmNlLgotIwotIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot IwotCi0jCi0jIFVzYWdlOiB0aW1lY29uc3QucGwgSFogPiB0aW1lY29uc3QuaAotIwotCi0jIFBy ZWNvbXB1dGVkIHZhbHVlcyBmb3Igc3lzdGVtcyB3aXRob3V0IE1hdGg6OkJpZ0ludAotIyBHZW5l cmF0ZWQgYnk6Ci0jIHRpbWVjb25zdC5wbCAtLWNhbiAyNCAzMiA0OCA2NCAxMDAgMTIyIDEyOCAy MDAgMjUwIDI1NiAzMDAgNTEyIDEwMDAgMTAyNCAxMjAwCi0lY2FubmVkX3ZhbHVlcyA9ICgKLQky NCA9PiBbCi0JCScweGE2YWFhYWFiJywnMHgyYWFhYWFhJywyNiwKLQkJMTI1LDMsCi0JCScweGM0 OWJhNWU0JywnMHgxZmJlNzZjOGI0JywzNywKLQkJMywxMjUsCi0JCScweGEyYzJhYWFiJywnMHhh YWFhJywxNiwKLQkJMTI1MDAwLDMsCi0JCScweGM5NTM5Yjg5JywnMHg3ZmZmYmNlNDIxN2QnLDQ3 LAotCQkzLDEyNTAwMCwKLQldLCAzMiA9PiBbCi0JCScweGZhMDAwMDAwJywnMHg2MDAwMDAwJywy NywKLQkJMTI1LDQsCi0JCScweDgzMTI2ZTk4JywnMHhmZGYzYjY0NWEnLDM2LAotCQk0LDEyNSwK LQkJJzB4ZjQyNDAwMDAnLCcweDAnLDE3LAotCQkzMTI1MCwxLAotCQknMHg4NjM3YmQwNicsJzB4 M2ZmZjc5Yzg0MmZhJyw0NiwKLQkJMSwzMTI1MCwKLQldLCA0OCA9PiBbCi0JCScweGE2YWFhYWFi JywnMHg2YWFhYWFhJywyNywKLQkJMTI1LDYsCi0JCScweGM0OWJhNWU0JywnMHhmZGYzYjY0NWEn LDM2LAotCQk2LDEyNSwKLQkJJzB4YTJjMmFhYWInLCcweDE1NTU1JywxNywKLQkJNjI1MDAsMywK LQkJJzB4Yzk1MzliODknLCcweDNmZmZiY2U0MjE3ZCcsNDYsCi0JCTMsNjI1MDAsCi0JXSwgNjQg PT4gWwotCQknMHhmYTAwMDAwMCcsJzB4ZTAwMDAwMCcsMjgsCi0JCTEyNSw4LAotCQknMHg4MzEy NmU5OCcsJzB4N2VmOWRiMjJkJywzNSwKLQkJOCwxMjUsCi0JCScweGY0MjQwMDAwJywnMHgwJywx OCwKLQkJMTU2MjUsMSwKLQkJJzB4ODYzN2JkMDYnLCcweDFmZmY3OWM4NDJmYScsNDUsCi0JCTEs MTU2MjUsCi0JXSwgMTAwID0+IFsKLQkJJzB4YTAwMDAwMDAnLCcweDAnLDI4LAotCQkxMCwxLAot CQknMHhjY2NjY2NjZCcsJzB4NzMzMzMzMzMzJywzNSwKLQkJMSwxMCwKLQkJJzB4OWM0MDAwMDAn LCcweDAnLDE4LAotCQkxMDAwMCwxLAotCQknMHhkMWI3MTc1OScsJzB4MWZmZjJlNDhlOGE3Jyw0 NSwKLQkJMSwxMDAwMCwKLQldLCAxMjIgPT4gWwotCQknMHg4MzI1YzUzZicsJzB4ZmJjZGEzYScs MjgsCi0JCTUwMCw2MSwKLQkJJzB4ZjlkYjIyZDEnLCcweDdmYmU3NmM4YicsMzUsCi0JCTYxLDUw MCwKLQkJJzB4ODAxMmUyYTAnLCcweDNlZjM2JywxOCwKLQkJNTAwMDAwLDYxLAotCQknMHhmZmRh NDA1MycsJzB4MWZmZmZiY2U0MjE3Jyw0NSwKLQkJNjEsNTAwMDAwLAotCV0sIDEyOCA9PiBbCi0J CScweGZhMDAwMDAwJywnMHgxZTAwMDAwMCcsMjksCi0JCTEyNSwxNiwKLQkJJzB4ODMxMjZlOTgn LCcweDNmN2NlZDkxNicsMzQsCi0JCTE2LDEyNSwKLQkJJzB4ZjQyNDAwMDAnLCcweDQwMDAwJywx OSwKLQkJMTU2MjUsMiwKLQkJJzB4ODYzN2JkMDYnLCcweGZmZmJjZTQyMTdkJyw0NCwKLQkJMiwx NTYyNSwKLQldLCAyMDAgPT4gWwotCQknMHhhMDAwMDAwMCcsJzB4MCcsMjksCi0JCTUsMSwKLQkJ JzB4Y2NjY2NjY2QnLCcweDMzMzMzMzMzMycsMzQsCi0JCTEsNSwKLQkJJzB4OWM0MDAwMDAnLCcw eDAnLDE5LAotCQk1MDAwLDEsCi0JCScweGQxYjcxNzU5JywnMHhmZmYyZTQ4ZThhNycsNDQsCi0J CTEsNTAwMCwKLQldLCAyNTAgPT4gWwotCQknMHg4MDAwMDAwMCcsJzB4MCcsMjksCi0JCTQsMSwK LQkJJzB4ODAwMDAwMDAnLCcweDE4MDAwMDAwMCcsMzMsCi0JCTEsNCwKLQkJJzB4ZmEwMDAwMDAn LCcweDAnLDIwLAotCQk0MDAwLDEsCi0JCScweDgzMTI2ZTk4JywnMHg3ZmY3Y2VkOTE2OCcsNDMs Ci0JCTEsNDAwMCwKLQldLCAyNTYgPT4gWwotCQknMHhmYTAwMDAwMCcsJzB4M2UwMDAwMDAnLDMw LAotCQkxMjUsMzIsCi0JCScweDgzMTI2ZTk4JywnMHgxZmJlNzZjOGInLDMzLAotCQkzMiwxMjUs Ci0JCScweGY0MjQwMDAwJywnMHhjMDAwMCcsMjAsCi0JCTE1NjI1LDQsCi0JCScweDg2MzdiZDA2 JywnMHg3ZmZkZTcyMTBiZScsNDMsCi0JCTQsMTU2MjUsCi0JXSwgMzAwID0+IFsKLQkJJzB4ZDU1 NTU1NTYnLCcweDJhYWFhYWFhJywzMCwKLQkJMTAsMywKLQkJJzB4OTk5OTk5OWEnLCcweDFjY2Nj Y2NjYycsMzMsCi0JCTMsMTAsCi0JCScweGQwNTU1NTU2JywnMHhhYWFhYScsMjAsCi0JCTEwMDAw LDMsCi0JCScweDlkNDk1MTgzJywnMHg3ZmZjYjkyM2EyOScsNDMsCi0JCTMsMTAwMDAsCi0JXSwg NTEyID0+IFsKLQkJJzB4ZmEwMDAwMDAnLCcweDdlMDAwMDAwJywzMSwKLQkJMTI1LDY0LAotCQkn MHg4MzEyNmU5OCcsJzB4ZmRmM2I2NDUnLDMyLAotCQk2NCwxMjUsCi0JCScweGY0MjQwMDAwJywn MHgxYzAwMDAnLDIxLAotCQkxNTYyNSw4LAotCQknMHg4NjM3YmQwNicsJzB4M2ZmZWYzOTA4NWYn LDQyLAotCQk4LDE1NjI1LAotCV0sIDEwMDAgPT4gWwotCQknMHg4MDAwMDAwMCcsJzB4MCcsMzEs Ci0JCTEsMSwKLQkJJzB4ODAwMDAwMDAnLCcweDAnLDMxLAotCQkxLDEsCi0JCScweGZhMDAwMDAw JywnMHgwJywyMiwKLQkJMTAwMCwxLAotCQknMHg4MzEyNmU5OCcsJzB4MWZmN2NlZDkxNjgnLDQx LAotCQkxLDEwMDAsCi0JXSwgMTAyNCA9PiBbCi0JCScweGZhMDAwMDAwJywnMHhmZTAwMDAwMCcs MzIsCi0JCTEyNSwxMjgsCi0JCScweDgzMTI2ZTk4JywnMHg3ZWY5ZGIyMicsMzEsCi0JCTEyOCwx MjUsCi0JCScweGY0MjQwMDAwJywnMHgzYzAwMDAnLDIyLAotCQkxNTYyNSwxNiwKLQkJJzB4ODYz N2JkMDYnLCcweDFmZmY3OWM4NDJmJyw0MSwKLQkJMTYsMTU2MjUsCi0JXSwgMTIwMCA9PiBbCi0J CScweGQ1NTU1NTU2JywnMHhkNTU1NTU1NScsMzIsCi0JCTUsNiwKLQkJJzB4OTk5OTk5OWEnLCcw eDY2NjY2NjY2JywzMSwKLQkJNiw1LAotCQknMHhkMDU1NTU1NicsJzB4MmFhYWFhJywyMiwKLQkJ MjUwMCwzLAotCQknMHg5ZDQ5NTE4MycsJzB4MWZmY2I5MjNhMjknLDQxLAotCQkzLDI1MDAsCi0J XQotKTsKLQotJGhhc19iaWdpbnQgPSBldmFsICd1c2UgTWF0aDo6QmlnSW50IHF3KGJnY2QpOyAx Oyc7Ci0KLXN1YiBiaW50KCQpCi17Ci0JbXkoJHgpID0gQF87Ci0JcmV0dXJuIE1hdGg6OkJpZ0lu dC0+bmV3KCR4KTsKLX0KLQotIwotIyBDb25zdGFudHMgZm9yIGRpdmlzaW9uIGJ5IHJlY2lwcm9j YWwgbXVsdGlwbGljYXRpb24uCi0jIChiaXRzLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKQotIwot c3ViIGZtdWwoJCQkKQotewotCW15ICgkYiwkbiwkZCkgPSBAXzsKLQotCSRuID0gYmludCgkbik7 Ci0JJGQgPSBiaW50KCRkKTsKLQotCXJldHVybiBzY2FsYXIgKCgkbiA8PCAkYikrJGQtYmludCgx KSkvJGQ7Ci19Ci0KLXN1YiBmYWRqKCQkJCkKLXsKLQlteSgkYiwkbiwkZCkgPSBAXzsKLQotCSRu ID0gYmludCgkbik7Ci0JJGQgPSBiaW50KCRkKTsKLQotCSRkID0gJGQvYmdjZCgkbiwgJGQpOwot CXJldHVybiBzY2FsYXIgKCgkZC1iaW50KDEpKSA8PCAkYikvJGQ7Ci19Ci0KLXN1YiBmbXVscygk JCQpIHsKLQlteSgkYiwkbiwkZCkgPSBAXzsKLQlteSgkcywkbSk7Ci0JbXkoJHRocmVzKSA9IGJp bnQoMSkgPDwgKCRiLTEpOwotCi0JJG4gPSBiaW50KCRuKTsKLQkkZCA9IGJpbnQoJGQpOwotCi0J Zm9yICgkcyA9IDA7IDE7ICRzKyspIHsKLQkJJG0gPSBmbXVsKCRzLCRuLCRkKTsKLQkJcmV0dXJu ICRzIGlmICgkbSA+PSAkdGhyZXMpOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotIyBHZW5lcmF0ZSBh IGhleCB2YWx1ZSBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gNjQgYml0czsKLSMgb3RoZXJ3aXNlIHNr aXAuCi1zdWIgYmlnbnVtX2hleCgkKSB7Ci0JbXkoJHgpID0gQF87Ci0JbXkgJHMgPSAkeC0+YXNf aGV4KCk7Ci0KLQlyZXR1cm4gKGxlbmd0aCgkcykgPiAxOCkgPyB1bmRlZiA6ICRzOwotfQotCi0j IFByb3ZpZGVzIG11bCwgYWRqLCBhbmQgc2hyIGZhY3RvcnMgZm9yIGEgc3BlY2lmaWMKLSMgKGJp dCwgdGltZSwgaHopIGNvbWJpbmF0aW9uCi1zdWIgbXVsYWRqKCQkJCkgewotCW15KCRiLCAkdCwg JGh6KSA9IEBfOwotCW15ICRzID0gZm11bHMoJGIsICR0LCAkaHopOwotCW15ICRtID0gZm11bCgk cywgJHQsICRoeik7Ci0JbXkgJGEgPSBmYWRqKCRzLCAkdCwgJGh6KTsKLQlyZXR1cm4gKGJpZ251 bV9oZXgoJG0pLCBiaWdudW1faGV4KCRhKSwgJHMpOwotfQotCi0jIFByb3ZpZGVzIG51bWVyYXRv ciwgZGVub21pbmF0b3IgdmFsdWVzCi1zdWIgbnVtZGVuKCQkKSB7Ci0JbXkoJG4sICRkKSA9IEBf OwotCW15ICRnID0gYmdjZCgkbiwgJGQpOwotCXJldHVybiAoJG4vJGcsICRkLyRnKTsKLX0KLQot IyBBbGwgdmFsdWVzIGZvciBhIHNwZWNpZmljICh0aW1lLCBoeikgY29tYm8KLXN1YiBjb252ZXJz aW9ucygkJCkgewotCW15ICgkdCwgJGh6KSA9IEBfOwotCW15IEB2YWwgPSAoKTsKLQotCSMgSFpf VE9feHgKLQlwdXNoKEB2YWwsIG11bGFkaigzMiwgJHQsICRoeikpOwotCXB1c2goQHZhbCwgbnVt ZGVuKCR0LCAkaHopKTsKLQotCSMgeHhfVE9fSFoKLQlwdXNoKEB2YWwsIG11bGFkaigzMiwgJGh6 LCAkdCkpOwotCXB1c2goQHZhbCwgbnVtZGVuKCRoeiwgJHQpKTsKLQotCXJldHVybiBAdmFsOwot fQotCi1zdWIgY29tcHV0ZV92YWx1ZXMoJCkgewotCW15KCRoeikgPSBAXzsKLQlteSBAdmFsID0g KCk7Ci0JbXkgJHMsICRtLCAkYSwgJGc7Ci0KLQlpZiAoISRoYXNfYmlnaW50KSB7Ci0JCWRpZSAi JDA6IEhaID09ICRoeiBub3QgY2FubmVkIGFuZCAiLgotCQkgICAgIk1hdGg6OkJpZ0ludCBub3Qg YXZhaWxhYmxlXG4iOwotCX0KLQotCSMgTVNFQyBjb252ZXJzaW9ucwotCXB1c2goQHZhbCwgY29u dmVyc2lvbnMoMTAwMCwgJGh6KSk7Ci0KLQkjIFVTRUMgY29udmVyc2lvbnMKLQlwdXNoKEB2YWws IGNvbnZlcnNpb25zKDEwMDAwMDAsICRoeikpOwotCi0JcmV0dXJuIEB2YWw7Ci19Ci0KLXN1YiBv dXRwdXR2YWwoJCQpCi17Ci0JbXkoJG5hbWUsICR2YWwpID0gQF87Ci0JbXkgJGNzdWY7Ci0KLQlp ZiAoZGVmaW5lZCgkdmFsKSkgewotCSAgICBpZiAoJG5hbWUgIX4gL1NIUi8pIHsKLQkJJHZhbCA9 ICJVNjRfQygkdmFsKSI7Ci0JICAgIH0KLQkgICAgcHJpbnRmICIjZGVmaW5lICUtMjNzICVzXG4i LCAkbmFtZS4kY3N1ZiwgJHZhbC4kY3N1ZjsKLQl9Ci19Ci0KLXN1YiBvdXRwdXQoJEApCi17Ci0J bXkoJGh6LCBAdmFsKSA9IEBfOwotCW15ICRwZngsICRiaXQsICRzdWYsICRzLCAkbSwgJGE7Ci0K LQlwcmludCAiLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkga2VybmVsL3RpbWVjb25zdC5w bCAqL1xuIjsKLQlwcmludCAiLyogQ29udmVyc2lvbiBjb25zdGFudHMgZm9yIEhaID09ICRoeiAq L1xuIjsKLQlwcmludCAiXG4iOwotCXByaW50ICIjaWZuZGVmIEtFUk5FTF9USU1FQ09OU1RfSFxu IjsKLQlwcmludCAiI2RlZmluZSBLRVJORUxfVElNRUNPTlNUX0hcbiI7Ci0JcHJpbnQgIlxuIjsK LQotCXByaW50ICIjaW5jbHVkZSA8bGludXgvcGFyYW0uaD5cbiI7Ci0JcHJpbnQgIiNpbmNsdWRl IDxsaW51eC90eXBlcy5oPlxuIjsKLQotCXByaW50ICJcbiI7Ci0JcHJpbnQgIiNpZiBIWiAhPSAk aHpcbiI7Ci0JcHJpbnQgIiNlcnJvciBcImtlcm5lbC90aW1lY29uc3QuaCBoYXMgdGhlIHdyb25n IEhaIHZhbHVlIVwiXG4iOwotCXByaW50ICIjZW5kaWZcbiI7Ci0JcHJpbnQgIlxuIjsKLQotCWZv cmVhY2ggJHBmeCAoJ0haX1RPX01TRUMnLCdNU0VDX1RPX0haJywKLQkJICAgICAgJ0haX1RPX1VT RUMnLCdVU0VDX1RPX0haJykgewotCQlmb3JlYWNoICRiaXQgKDMyKSB7Ci0JCQlmb3JlYWNoICRz dWYgKCdNVUwnLCAnQURKJywgJ1NIUicpIHsKLQkJCQlvdXRwdXR2YWwoIiR7cGZ4fV8kc3VmJGJp dCIsIHNoaWZ0KEB2YWwpKTsKLQkJCX0KLQkJfQotCQlmb3JlYWNoICRzdWYgKCdOVU0nLCAnREVO JykgewotCQkJb3V0cHV0dmFsKCIke3BmeH1fJHN1ZiIsIHNoaWZ0KEB2YWwpKTsKLQkJfQotCX0K LQotCXByaW50ICJcbiI7Ci0JcHJpbnQgIiNlbmRpZiAvKiBLRVJORUxfVElNRUNPTlNUX0ggKi9c biI7Ci19Ci0KLSMgUHJldHR5LXByaW50IFBlcmwgdmFsdWVzCi1zdWIgcGVybHZhbHMoQCkgewot CW15ICR2OwotCW15IEBsID0gKCk7Ci0KLQlmb3JlYWNoICR2IChAXykgewotCQlpZiAoIWRlZmlu ZWQoJHYpKSB7Ci0JCQlwdXNoKEBsLCAndW5kZWYnKTsKLQkJfSBlbHNpZiAoJHYgPX4gL14weC8p IHsKLQkJCXB1c2goQGwsICJcJyIuJHYuIlwnIik7Ci0JCX0gZWxzZSB7Ci0JCQlwdXNoKEBsLCAk di4nJyk7Ci0JCX0KLQl9Ci0JcmV0dXJuIGpvaW4oJywnLCBAbCk7Ci19Ci0KLSgkaHopID0gQEFS R1Y7Ci0KLSMgVXNlIHRoaXMgdG8gZ2VuZXJhdGUgdGhlICVjYW5uZWRfdmFsdWVzIHN0cnVjdHVy ZQotaWYgKCRoeiBlcSAnLS1jYW4nKSB7Ci0Jc2hpZnQoQEFSR1YpOwotCUBoemxpc3QgPSBzb3J0 IHskYSA8PT4gJGJ9IChAQVJHVik7Ci0KLQlwcmludCAiIyBQcmVjb21wdXRlZCB2YWx1ZXMgZm9y IHN5c3RlbXMgd2l0aG91dCBNYXRoOjpCaWdJbnRcbiI7Ci0JcHJpbnQgIiMgR2VuZXJhdGVkIGJ5 OlxuIjsKLQlwcmludCAiIyB0aW1lY29uc3QucGwgLS1jYW4gIiwgam9pbignICcsIEBoemxpc3Qp LCAiXG4iOwotCXByaW50ICJcJWNhbm5lZF92YWx1ZXMgPSAoXG4iOwotCW15ICRwZiA9ICJcdCI7 Ci0JZm9yZWFjaCAkaHogKEBoemxpc3QpIHsKLQkJbXkgQHZhbHVlcyA9IGNvbXB1dGVfdmFsdWVz KCRoeik7Ci0JCXByaW50ICIkcGYkaHogPT4gW1xuIjsKLQkJd2hpbGUgKHNjYWxhcihAdmFsdWVz KSkgewotCQkJbXkgJGJpdDsKLQkJCWZvcmVhY2ggJGJpdCAoMzIpIHsKLQkJCQlteSAkbSA9IHNo aWZ0KEB2YWx1ZXMpOwotCQkJCW15ICRhID0gc2hpZnQoQHZhbHVlcyk7Ci0JCQkJbXkgJHMgPSBz aGlmdChAdmFsdWVzKTsKLQkJCQlwcmludCAiXHRcdCIsIHBlcmx2YWxzKCRtLCRhLCRzKSwgIixc biI7Ci0JCQl9Ci0JCQlteSAkbiA9IHNoaWZ0KEB2YWx1ZXMpOwotCQkJbXkgJGQgPSBzaGlmdChA dmFsdWVzKTsKLQkJCXByaW50ICJcdFx0IiwgcGVybHZhbHMoJG4sJGQpLCAiLFxuIjsKLQkJfQot CQlwcmludCAiXHRdIjsKLQkJJHBmID0gJywgJzsKLQl9Ci0JcHJpbnQgIlxuKTtcbiI7Ci19IGVs c2UgewotCSRoeiArPSAwOwkJCSMgRm9yY2UgdG8gbnVtYmVyCi0JaWYgKCRoeiA8IDEpIHsKLQkJ ZGllICJVc2FnZTogJDAgSFpcbiI7Ci0JfQotCi0JQHZhbCA9IEB7JGNhbm5lZF92YWx1ZXN7JGh6 fX07Ci0JaWYgKCFkZWZpbmVkKEB2YWwpKSB7Ci0JCUB2YWwgPSBjb21wdXRlX3ZhbHVlcygkaHop OwotCX0KLQlvdXRwdXQoJGh6LCBAdmFsKTsKLX0KLWV4aXQgMDsKAAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757287AbZABINr (ORCPT ); Fri, 2 Jan 2009 03:13:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752053AbZABINh (ORCPT ); Fri, 2 Jan 2009 03:13:37 -0500 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:41918 "EHLO grelber.thyrsus.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750988AbZABINf (ORCPT ); Fri, 2 Jan 2009 03:13:35 -0500 X-Greylist: delayed 349 seconds by postgrey-1.27 at vger.kernel.org; Fri, 02 Jan 2009 03:13:35 EST From: Rob Landley Organization: Boundaries Unlimited To: Embedded Linux mailing list Subject: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh Date: Fri, 2 Jan 2009 02:13:30 -0600 User-Agent: KMail/1.10.1 (Linux/2.6.27-7-generic; KDE/4.1.2; x86_64; ; ) Cc: linux-kernel@vger.kernel.org, Andrew Morton , "H. Peter Anvin" , Sam Ravnborg References: <200901020207.30359.rob@landley.net> In-Reply-To: <200901020207.30359.rob@landley.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Message-Id: <200901020213.30658.rob@landley.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by alpha id n028EiwM012151 From: Rob Landley Replace kernel/timeconst.pl with kernel/timeconst.sh. The new shell scriptis much simpler, about 1/4 the size, and runs on Red Hat 9 from 2003. Peter Anvin added this perl to 2.6.25. Before that, the kernel had neverrequired perl to build. Signed-off-by: Rob Landley --- kernel/Makefile | 4 kernel/timeconst.pl | 378 ------------------------------------------ kernel/timeconst.sh | 91 ++++++++++ 3 files changed, 93 insertions(+), 380 deletions(-) diff -r d0c7611dcfd6 kernel/Makefile--- a/kernel/Makefile Tue Dec 30 17:48:25 2008 -0800+++ b/kernel/Makefile Fri Jan 02 00:10:44 2009 -0600@@ -115,7 +115,7 @@ $(obj)/time.o: $(obj)/timeconst.h quiet_cmd_timeconst = TIMEC $@- cmd_timeconst = $(PERL) $< $(CONFIG_HZ) > $@+ cmd_timeconst = $(CONFIG_SHELL) $< $(CONFIG_HZ) > $@ targets += timeconst.h-$(obj)/timeconst.h: $(src)/timeconst.pl FORCE+$(obj)/timeconst.h: $(src)/timeconst.sh FORCE $(call if_changed,timeconst)--- /dev/null 1969-12-31 00:00:00.000000000 -0600+++ hg/kernel/timeconst.sh 2009-01-01 23:53:17.000000000 -0600@@ -0,0 +1,91 @@+#!/bin/bash++if [ $# -ne 1 ]+then+ echo "Usage: timeconst.sh HZ"+ exit 1+fi++HZ=$1++# Sanity test: even the shell in Red Hat 9 (circa 2003) supported 64 bit math.++[ $((1<<32)) -lt 0 ] && exit 1++# Output start of header file++cat << EOF+/* Automatically generated by kernel/timeconst.sh */+/* Conversion constants for HZ == $HZ */++#ifndef KERNEL_TIMECONST_H+#define KERNEL_TIMECONST_H++#include +#include ++#if HZ != $HZ+#error "kernel/timeconst.h has the wrong HZ value!"+#endif++EOF++# For both Miliseconds and Microseconds++for i in "MSEC 1000" "USEC 1000000"+do+ NAME=$(echo $i | awk '{print $1}')+ PERIOD=$(echo $i | awk '{print $2}')++ # Find greatest common denominator (using Euclid's algorithm)++ A=$HZ+ B=$PERIOD++ while [ $B -ne 0 ]+ do+ C=$(($A%$B))+ A=$B+ B=$C+ done++ GCD=$A++ # Do this for each direction (HZ_TO_PERIOD and PERIOD_TO_HZ)++ for DIRECTION in 0 1+ do+ if [ $DIRECTION -eq 0 ]+ then+ CONVERT="HZ_TO_${NAME}"+ FROM=$HZ+ TO=$PERIOD+ else+ CONVERT="${NAME}_TO_HZ"+ FROM=$PERIOD+ TO=$HZ+ fi++ # How many shift bits give 32 bits of significant data?++ SHIFT=0+ while [ $(( (($TO<<$SHIFT)+$FROM-1)/$FROM )) -lt $((1<<31)) ]+ do+ SHIFT=$(( $SHIFT+1 ))+ done++ MUL32=$(( (($TO<<$SHIFT)+$FROM-1)/$FROM ))+ MUL32=$(printf %x $MUL32)+ echo "#define ${CONVERT}_MUL32 U64_C(0x$MUL32)"+ ADJ32=$(($FROM/$GCD))+ ADJ32=$(( (($ADJ32-1)<<$SHIFT)/$ADJ32 ))+ ADJ32=$(printf %x $ADJ32)+ echo "#define ${CONVERT}_ADJ32 U64_C(0x$ADJ32)"+ echo "#define ${CONVERT}_SHR32 $SHIFT"+ echo "#define ${CONVERT}_NUM U64_C($(($TO/$GCD)))"+ echo "#define ${CONVERT}_DEN U64_C($(($FROM/$GCD)))"+ done+done++echo+echo "#endif /* KERNEL_TIMECHONST_H */"--- hg/kernel/timeconst.pl 2008-11-22 19:09:13.000000000 -0600+++ /dev/null 1969-12-31 00:00:00.000000000 -0600@@ -1,378 +0,0 @@-#!/usr/bin/perl-# ------------------------------------------------------------------------#-# Copyright 2007-2008 rPath, Inc. - All Rights Reserved-#-# This file is part of the Linux kernel, and is made available under-# the terms of the GNU General Public License version 2 or (at your-# option) any later version; incorporated herein by reference.-#-# ------------------------------------------------------------------------#--#-# Usage: timeconst.pl HZ > timeconst.h-#--# Precomputed values for systems without Math::BigInt-# Generated by:-# timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200-%canned_values = (- 24 => [- '0xa6aaaaab','0x2aaaaaa',26,- 125,3,- '0xc49ba5e4','0x1fbe76c8b4',37,- 3,125,- '0xa2c2aaab','0xaaaa',16,- 125000,3,- '0xc9539b89','0x7fffbce4217d',47,- 3,125000,- ], 32 => [- '0xfa000000','0x6000000',27,- 125,4,- '0x83126e98','0xfdf3b645a',36,- 4,125,- '0xf4240000','0x0',17,- 31250,1,- '0x8637bd06','0x3fff79c842fa',46,- 1,31250,- ], 48 => [- '0xa6aaaaab','0x6aaaaaa',27,- 125,6,- '0xc49ba5e4','0xfdf3b645a',36,- 6,125,- '0xa2c2aaab','0x15555',17,- 62500,3,- '0xc9539b89','0x3fffbce4217d',46,- 3,62500,- ], 64 => [- '0xfa000000','0xe000000',28,- 125,8,- '0x83126e98','0x7ef9db22d',35,- 8,125,- '0xf4240000','0x0',18,- 15625,1,- '0x8637bd06','0x1fff79c842fa',45,- 1,15625,- ], 100 => [- '0xa0000000','0x0',28,- 10,1,- '0xcccccccd','0x733333333',35,- 1,10,- '0x9c400000','0x0',18,- 10000,1,- '0xd1b71759','0x1fff2e48e8a7',45,- 1,10000,- ], 122 => [- '0x8325c53f','0xfbcda3a',28,- 500,61,- '0xf9db22d1','0x7fbe76c8b',35,- 61,500,- '0x8012e2a0','0x3ef36',18,- 500000,61,- '0xffda4053','0x1ffffbce4217',45,- 61,500000,- ], 128 => [- '0xfa000000','0x1e000000',29,- 125,16,- '0x83126e98','0x3f7ced916',34,- 16,125,- '0xf4240000','0x40000',19,- 15625,2,- '0x8637bd06','0xfffbce4217d',44,- 2,15625,- ], 200 => [- '0xa0000000','0x0',29,- 5,1,- '0xcccccccd','0x333333333',34,- 1,5,- '0x9c400000','0x0',19,- 5000,1,- '0xd1b71759','0xfff2e48e8a7',44,- 1,5000,- ], 250 => [- '0x80000000','0x0',29,- 4,1,- '0x80000000','0x180000000',33,- 1,4,- '0xfa000000','0x0',20,- 4000,1,- '0x83126e98','0x7ff7ced9168',43,- 1,4000,- ], 256 => [- '0xfa000000','0x3e000000',30,- 125,32,- '0x83126e98','0x1fbe76c8b',33,- 32,125,- '0xf4240000','0xc0000',20,- 15625,4,- '0x8637bd06','0x7ffde7210be',43,- 4,15625,- ], 300 => [- '0xd5555556','0x2aaaaaaa',30,- 10,3,- '0x9999999a','0x1cccccccc',33,- 3,10,- '0xd0555556','0xaaaaa',20,- 10000,3,- '0x9d495183','0x7ffcb923a29',43,- 3,10000,- ], 512 => [- '0xfa000000','0x7e000000',31,- 125,64,- '0x83126e98','0xfdf3b645',32,- 64,125,- '0xf4240000','0x1c0000',21,- 15625,8,- '0x8637bd06','0x3ffef39085f',42,- 8,15625,- ], 1000 => [- '0x80000000','0x0',31,- 1,1,- '0x80000000','0x0',31,- 1,1,- '0xfa000000','0x0',22,- 1000,1,- '0x83126e98','0x1ff7ced9168',41,- 1,1000,- ], 1024 => [- '0xfa000000','0xfe000000',32,- 125,128,- '0x83126e98','0x7ef9db22',31,- 128,125,- '0xf4240000','0x3c0000',22,- 15625,16,- '0x8637bd06','0x1fff79c842f',41,- 16,15625,- ], 1200 => [- '0xd5555556','0xd5555555',32,- 5,6,- '0x9999999a','0x66666666',31,- 6,5,- '0xd0555556','0x2aaaaa',22,- 2500,3,- '0x9d495183','0x1ffcb923a29',41,- 3,2500,- ]-);--$has_bigint = eval 'use Math::BigInt qw(bgcd); 1;';--sub bint($)-{- my($x) = @_;- return Math::BigInt->new($x);-}--#-# Constants for division by reciprocal multiplication.-# (bits, numerator, denominator)-#-sub fmul($$$)-{- my ($b,$n,$d) = @_;-- $n = bint($n);- $d = bint($d);-- return scalar (($n << $b)+$d-bint(1))/$d;-}--sub fadj($$$)-{- my($b,$n,$d) = @_;-- $n = bint($n);- $d = bint($d);-- $d = $d/bgcd($n, $d);- return scalar (($d-bint(1)) << $b)/$d;-}--sub fmuls($$$) {- my($b,$n,$d) = @_;- my($s,$m);- my($thres) = bint(1) << ($b-1);-- $n = bint($n);- $d = bint($d);-- for ($s = 0; 1; $s++) {- $m = fmul($s,$n,$d);- return $s if ($m >= $thres);- }- return 0;-}--# Generate a hex value if the result fits in 64 bits;-# otherwise skip.-sub bignum_hex($) {- my($x) = @_;- my $s = $x->as_hex();-- return (length($s) > 18) ? undef : $s;-}--# Provides mul, adj, and shr factors for a specific-# (bit, time, hz) combination-sub muladj($$$) {- my($b, $t, $hz) = @_;- my $s = fmuls($b, $t, $hz);- my $m = fmul($s, $t, $hz);- my $a = fadj($s, $t, $hz);- return (bignum_hex($m), bignum_hex($a), $s);-}--# Provides numerator, denominator values-sub numden($$) {- my($n, $d) = @_;- my $g = bgcd($n, $d);- return ($n/$g, $d/$g);-}--# All values for a specific (time, hz) combo-sub conversions($$) {- my ($t, $hz) = @_;- my @val = ();-- # HZ_TO_xx- push(@val, muladj(32, $t, $hz));- push(@val, numden($t, $hz));-- # xx_TO_HZ- push(@val, muladj(32, $hz, $t));- push(@val, numden($hz, $t));-- return @val;-}--sub compute_values($) {- my($hz) = @_;- my @val = ();- my $s, $m, $a, $g;-- if (!$has_bigint) {- die "$0: HZ == $hz not canned and ".- "Math::BigInt not available\n";- }-- # MSEC conversions- push(@val, conversions(1000, $hz));-- # USEC conversions- push(@val, conversions(1000000, $hz));-- return @val;-}--sub outputval($$)-{- my($name, $val) = @_;- my $csuf;-- if (defined($val)) {- if ($name !~ /SHR/) {- $val = "U64_C($val)";- }- printf "#define %-23s %s\n", $name.$csuf, $val.$csuf;- }-}--sub output($@)-{- my($hz, @val) = @_;- my $pfx, $bit, $suf, $s, $m, $a;-- print "/* Automatically generated by kernel/timeconst.pl */\n";- print "/* Conversion constants for HZ == $hz */\n";- print "\n";- print "#ifndef KERNEL_TIMECONST_H\n";- print "#define KERNEL_TIMECONST_H\n";- print "\n";-- print "#include \n";- print "#include \n";-- print "\n";- print "#if HZ != $hz\n";- print "#error \"kernel/timeconst.h has the wrong HZ value!\"\n";- print "#endif\n";- print "\n";-- foreach $pfx ('HZ_TO_MSEC','MSEC_TO_HZ',- 'HZ_TO_USEC','USEC_TO_HZ') {- foreach $bit (32) {- foreach $suf ('MUL', 'ADJ', 'SHR') {- outputval("${pfx}_$suf$bit", shift(@val));- }- }- foreach $suf ('NUM', 'DEN') {- outputval("${pfx}_$suf", shift(@val));- }- }-- print "\n";- print "#endif /* KERNEL_TIMECONST_H */\n";-}--# Pretty-print Perl values-sub perlvals(@) {- my $v;- my @l = ();-- foreach $v (@_) {- if (!defined($v)) {- push(@l, 'undef');- } elsif ($v =~ /^0x/) {- push(@l, "\'".$v."\'");- } else {- push(@l, $v.'');- }- }- return join(',', @l);-}--($hz) = @ARGV;--# Use this to generate the %canned_values structure-if ($hz eq '--can') {- shift(@ARGV);- @hzlist = sort {$a <=> $b} (@ARGV);-- print "# Precomputed values for systems without Math::BigInt\n";- print "# Generated by:\n";- print "# timeconst.pl --can ", join(' ', @hzlist), "\n";- print "\%canned_values = (\n";- my $pf = "\t";- foreach $hz (@hzlist) {- my @values = compute_values($hz);- print "$pf$hz => [\n";- while (scalar(@values)) {- my $bit;- foreach $bit (32) {- my $m = shift(@values);- my $a = shift(@values);- my $s = shift(@values);- print "\t\t", perlvals($m,$a,$s), ",\n";- }- my $n = shift(@values);- my $d = shift(@values);- print "\t\t", perlvals($n,$d), ",\n";- }- print "\t]";- $pf = ', ';- }- print "\n);\n";-} else {- $hz += 0; # Force to number- if ($hz < 1) {- die "Usage: $0 HZ\n";- }-- @val = @{$canned_values{$hz}};- if (!defined(@val)) {- @val = compute_values($hz);- }- output($hz, @val);-}-exit 0;ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayºʇڙë,j­¢f£¢·hšïêÿ‘êçz_è®(­éšŽŠÝ¢j"ú¶m§ÿÿ¾«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^¶m§ÿÿà ÿ¶ìÿ¢¸?–I¥