// Copyright 2011 Google Inc. All Rights Reserved.

#include "context_x86.h"

#include "object.h"

namespace art {
namespace x86 {

X86Context::X86Context() {
#ifndef NDEBUG
  // Initialize registers with easy to spot debug values
  for (int i=0; i < 8; i++) {
    gprs_[i] = 0xEBAD6070+i;
  }
  eip_ = 0xEBAD601F;
#endif
}

void X86Context::FillCalleeSaves(const Frame& fr) {
  Method* method = fr.GetMethod();
  uint32_t core_spills = method->GetCoreSpillMask();
  size_t spill_count = __builtin_popcount(core_spills);
  CHECK_EQ(method->GetFpSpillMask(), 0u);
  if (spill_count > 0) {
    // Lowest number spill is furthest away, walk registers and fill into context
    int j = 1;
    for(int i = 0; i < 8; i++) {
      if (((core_spills >> i) & 1) != 0) {
        gprs_[i] = fr.LoadCalleeSave(spill_count - j);
        j++;
      }
    }
  }
}

void X86Context::DoLongJump() {
#if defined(__i386__)
  // Load ESP and EIP
  gprs_[ESP] -= 4;  // push EIP for return
  *((uintptr_t*)(gprs_[ESP])) = eip_;
  asm volatile (
      "pushl %4\n\t"
      "pushl %0\n\t"
      "pushl %1\n\t"
      "pushl %2\n\t"
      "pushl %3\n\t"
      "pushl %4\n\t"
      "pushl %5\n\t"
      "pushl %6\n\t"
      "pushl %7\n\t"
      "popal\n\t"
      "popl %%esp\n\t"
      "ret\n\t"
      :  //output
      : "g"(gprs_[EAX]), "g"(gprs_[ECX]), "g"(gprs_[EDX]), "g"(gprs_[EBX]),
        "g"(gprs_[ESP]), "g"(gprs_[EBP]), "g"(gprs_[ESI]), "g"(gprs_[EDI])
      :);  // clobber
#else
    UNIMPLEMENTED(FATAL);
#endif
}

}  // namespace x86
}  // namespace art
