summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2004-06-21 00:58:30 -0400
committerAli Saidi <saidi@eecs.umich.edu>2004-06-21 00:58:30 -0400
commitc27139c701e8e61056ebc2cf002c5aa129779c13 (patch)
treeddf8997bbfb5805db6d2c81efc5974b0a800a120 /base
parentf5c7b1358cf0b27c27c10eae42e09949613e24a9 (diff)
downloadgem5-c27139c701e8e61056ebc2cf002c5aa129779c13.tar.xz
start towards getting m5 endian compliant
base/inifile.cc: Added mac os support and fixed a bug, on error we need to exit the child process not return base/intmath.hh: gcc on macos wanted a seperate function for the size_t type base/loader/elf_object.cc: I'm not sure why this works under linux because it seems to return the wrong value. base/stats/text.cc: added define/include for mac os x cpu/exec_context.hh: cpu/simple_cpu/simple_cpu.cc: added endian conversion code dev/alpha_console.cc: rather than accessing a charecter array of varying size depending on the access, lets actually do this properly. dev/alpha_console.hh: get rid of now nolonger used consoleData dev/disk_image.cc: We have to byte swap the data is some cases, added function to do that dev/ethertap.cc: added preproc directive for mac os --HG-- extra : convert_revision : 2b5685765cfa2844926d7397f363d2788e3d640a
Diffstat (limited to 'base')
-rw-r--r--base/inifile.cc6
-rw-r--r--base/intmath.hh14
-rw-r--r--base/loader/elf_object.cc5
-rw-r--r--base/stats/text.cc4
4 files changed, 24 insertions, 5 deletions
diff --git a/base/inifile.cc b/base/inifile.cc
index 74d47204e..001e0a6f8 100644
--- a/base/inifile.cc
+++ b/base/inifile.cc
@@ -35,7 +35,7 @@
#include <sys/types.h>
#include <sys/wait.h>
-#if defined(__OpenBSD__)
+#if defined(__OpenBSD__) || defined(__APPLE__)
#include <libgen.h>
#endif
#include <stdio.h>
@@ -142,11 +142,11 @@ IniFile::loadCPP(const string &file, vector<char *> &cppArgs)
close(STDOUT_FILENO);
if (dup2(fd[1], STDOUT_FILENO) == -1)
- return 1;
+ exit(1);
execvp("g++", args);
- exit(1);
+ exit(0);
}
int retval;
diff --git a/base/intmath.hh b/base/intmath.hh
index 77f63fe8d..28e9d5c68 100644
--- a/base/intmath.hh
+++ b/base/intmath.hh
@@ -119,6 +119,20 @@ FloorLog2(int64_t x)
return FloorLog2((uint64_t)x);
}
+inline int
+FloorLog2(size_t x)
+{
+ assert(x > 0);
+ assert(sizeof(size_t) == 4 || sizeof(size_t) == 8);
+
+ // It's my hope that this is optimized away?
+ if (sizeof(size_t) == 4)
+ return FloorLog2((uint32_t)x);
+ else if (sizeof(size_t) == 8)
+ return FloorLog2((uint64_t)x);
+
+}
+
template <class T>
inline int
CeilLog2(T n)
diff --git a/base/loader/elf_object.cc b/base/loader/elf_object.cc
index a0c0c0551..5a8f937cc 100644
--- a/base/loader/elf_object.cc
+++ b/base/loader/elf_object.cc
@@ -74,8 +74,9 @@ ElfObject::tryFile(const string &fname, int fd, size_t len, uint8_t *data)
else {
if (ehdr.e_ident[EI_CLASS] == ELFCLASS32)
panic("32 bit ELF Binary, Not Supported");
- if (ehdr.e_machine != EM_ALPHA)
- panic("Non Alpha Binary, Not Supported");
+ printf("emachine = %x\n", ehdr.e_machine);
+// if (ehdr.e_machine != EM_ALPHA)
+// panic("Non Alpha Binary, Not Supported");
elf_end(elf);
diff --git a/base/stats/text.cc b/base/stats/text.cc
index 79a91e661..ddd428646 100644
--- a/base/stats/text.cc
+++ b/base/stats/text.cc
@@ -26,6 +26,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#if defined(__APPLE__)
+#define _GLIBCPP_USE_C99 1
+#endif
+
#include <iostream>
#include <fstream>
#include <string>