diff kernel/convert @ 0:42f240cc4bc6

From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Sep 2009 13:44:18 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/convert	Tue Sep 08 13:44:18 2009 +0900
@@ -0,0 +1,44 @@
+#!/usr/bin/php
+<?php
+$import_file_name = $argv[1];
+$export_file_name = $argv[2];
+$export_file_base = basename($export_file_name);
+
+
+// raw バイナリを読み込んで 4 バイトごとに unsigned int 化
+$content  = file_get_contents($import_file_name);
+$unpacked = unpack('N*', $content);
+foreach ($unpacked as $key => $val)
+{
+    $unpacked[$key] = sprintf('0x%08X', $val);
+}
+
+// 各データ準備
+$kernel_size  = strlen($content);
+$kernel_uints = $kernel_size / 4;
+$kernel_items = implode(', ', $unpacked);
+
+// C 言語のヘッダファイルを書き出す
+$fp = fopen($export_file_name, 'wb') or die("Can't open {$export_file_base}.");
+
+$content = <<<EOH
+/* [{$export_file_base}] This file has automatically generated by kernel/convert. So don't edit me. */
+
+#ifndef  KERNEL_H
+#define  KERNEL_H
+
+
+#define  SPE_KERNEL_SIZE                 {$kernel_size}
+#define  SPE_KERNEL_INITIAL_PC           0x10
+#define  SPE_KERNEL_PROC_CONTEXT_OFFSET  0x70
+//#define  SPE_KERNEL_PROGRAM_OFFSET       0x30
+
+uint32_t spe_kernel_raw[{$kernel_uints}] = { {$kernel_items} };
+
+
+#endif /*KERNEL_H*/
+
+EOH;
+
+fwrite($fp, $content);
+fclose($fp);