Ejemplo n.º 1
0
// native sampleMethod
void sampleMethod(JXValue *results, int argc) {
  for (int i = 0; i < argc; i++) {
    std::string str;
    ConvertResult(&results[i], str);
    if (compare_base[i] != str.c_str()[0]) {
      flush_console("FAIL! Item(%d) : %s \n", i, str.c_str());
      exit(-1);
    }
  }

  JXValue out;

  // fnc represents the JS side function
  fnc = &results[9];
  param1 = results + 3;
  param2 = results + 4;

  // call JS side fnc with 2 parameters and get
  // the result to 'out'
  JX_CallFunction(fnc, (results + 3), 2, &out);

  // make fnc persistent so we can call it later again
  // see 'int main' for second call
  JX_MakePersistent(fnc);
  JX_MakePersistent(param1);
  JX_MakePersistent(param2);

  assert(JX_GetDataLength(&out) == 11 &&
         "Expected return value was 'test{\"a\":3}");
  JX_Free(&out);
  assert(out.data_ == NULL && out.size_ == 0 && "JX_FreeResultData leaks?");
}
Ejemplo n.º 2
0
static void smdkc110_pm_restart(char mode, const char *cmd)
{
	flush_console();

	/* On a normal reboot, INFORM6 will contain a small integer
	 * reason code from the notifier hook.  On a panic, it will
	 * contain the 0xee we set at boot.  Write 0xbb to differentiate
	 * a watchdog-timeout-and-reboot (0xee) from a controlled reboot
	 * (0xbb)
	 */
	if (__raw_readl(S5P_INFORM6) == 0xee)
		__raw_writel(0xbb, S5P_INFORM6);

	arm_machine_restart(mode, cmd);
}
Ejemplo n.º 3
0
void sampleMethod(JXValue *results, int argc) {
  for (int i = 0; i < argc; i++) {
    std::string str;
    ConvertResult(&results[i], str);
    if (compare_base[i] != str.c_str()[0]) {
      flush_console("FAIL! Item(%d) : %s \n", i, str.c_str());
      exit(-1);
    }
  }

  JXValue out;
  JX_CallFunction(&results[9], (results + 3), 2, &out);

  assert(JX_GetDataLength(&out) == 11 &&
         "Expected return value was 'test{\"a\":3}");
  JX_Free(&out);
  assert(out.data_ == NULL && out.size_ == 0 && "JX_FreeResultData leaks?");
}
Ejemplo n.º 4
0
void crashdump(u32 exception,u64 * context)
{
	console_set_colors(0x000080ff, 0xffffffff);
	console_init();
	console_clrscr();
        
        switch(exception)
        {
            case 0x200:
                strcpy(text,"\nMachine Check!\n\n");
                break;
            case 0x380:
                strcpy(text,"\nData SegFault!\n\n");
                break;
            case 0x480:
                strcpy(text,"\nInstruction SegFault!\n\n");
                break;
            case 0x500:
                strcpy(text,"\nExternal Interrupt!\n\n");
                break;
            case 0x600:
                strcpy(text,"\nAlignment!\n\n");
                break;
            case 0x700:
                strcpy(text,"\nProgram Interrupt!\n\n");
                break;
            case 0x800:
                strcpy(text,"\nFPU Unavailable!\n\n");
                break;
            case 0x900:
                strcpy(text,"\nDecrementer!\n\n");
                break;
            case 0x980:
                strcpy(text,"\nHV Decrementer!\n\n");
                break;
            case 0xC00:
                strcpy(text,"\nSystem Call!\n\n");
                break;
            case 0xD00:
                strcpy(text,"\nTrace!\n\n");
                break;
            case 0xE00:
                strcpy(text,"\nFPU Assist!\n\n");
                break;
            case 0xF20:
                strcpy(text,"\nVPU Unavailable!\n\n");
                break;
            case 0x1600:
                strcpy(text,"\nMaintenance!\n\n");
                break;
            case 0x1700:
                strcpy(text,"\nVMX Assist!\n\n");
                break;
            case 0x1800:
                strcpy(text,"\nThermal Managment!\n\n");
                break;
            case 0:
                strcpy(text,"\nSegmentation Fault!\n\n");
                break;
            default:
                sprintf(text,"\nException Vector! (%p)\n\n",exception);
                break;
        }
		
	flush_console();
	
	sprintf(text,"%spir=%016llx dar=%016llx\nIar=%016llx Msr=%016llx lr=%016llx\n\n",
			text,context[39],context[38],context[36],context[37],context[32]);
	
	flush_console();
	
	int i;
	for(i=0;i<8;++i)
		sprintf(text,"%s%02d=%016llx %02d=%016llx %02d=%016llx %02d=%016llx\n",
				text,i,context[i],i+8,context[i+8],i+16,context[i+16],i+24,context[i+24]);
	
	flush_console();
	
	_cpu_print_stack((void*)(u32)context[36],(void*)(u32)context[32],(void*)(u32)context[1]);
	
	strcat(text,"\n\nOn uart: 'x'=Xell, 'h'=Halt, 'r'=Reboot\n\n");

	flush_console();

	for(;;){
		switch(getch()){
			case 'x':
				exit(0);
				break;
			case 'h':
				xenon_smc_power_shutdown();
				for(;;);
				break;
			case 'r':
				xenon_smc_power_reboot();
				for(;;);
				break;
		}
	}
}
Ejemplo n.º 5
0
void set_console(struct con_ops *driver)
{
	con_driver = driver;
	if (driver)
		flush_console();
}
static void mid_pm_restart(char mode, const char *cmd) {
	flush_console();
	arm_machine_restart(mode, cmd);
}