Ejemplo n.º 1
0
/**
 * Execute El Torito image
 *
 * @v image		El Torito image
 * @ret rc		Return status code
 */
static int eltorito_exec ( struct image *image ) {
	struct ramdisk ramdisk;
	struct int13_drive int13_drive;
	unsigned int load_segment = image->priv.ul;
	unsigned int load_offset = ( load_segment ? 0 : 0x7c00 );
	int rc;

	memset ( &ramdisk, 0, sizeof ( ramdisk ) );
	init_ramdisk ( &ramdisk, image->data, image->len, ISO9660_BLKSIZE );
	
	memset ( &int13_drive, 0, sizeof ( int13_drive ) );
	int13_drive.blockdev = &ramdisk.blockdev;
	register_int13_drive ( &int13_drive );

	if ( ( rc = call_bootsector ( load_segment, load_offset, 
				      int13_drive.drive ) ) != 0 ) {
		DBGC ( image, "ElTorito %p boot failed: %s\n",
		       image, strerror ( rc ) );
		goto err;
	}
	
	rc = -ECANCELED; /* -EIMPOSSIBLE */
 err:
	unregister_int13_drive ( &int13_drive );
	return rc;
}
Ejemplo n.º 2
0
void restart() {
	/* Perform some initialization to restart a program */
#ifdef USE_RAMDISK
	/* Read the file with name `argv[1]' into ramdisk. */
	init_ramdisk();
#endif

	/* Read the entry code into memory. */
	load_entry();

	/* Set the initial instruction pointer. */
	cpu.eip = ENTRY_START;
	cpu.ebp = 0;
	cpu.esp = 0x80000000;
	cpu.eflags_cf = false; 
	cpu.eflags_pf = false;
	cpu.eflags_zf = false;
	cpu.eflags_sf = false;
	cpu.eflags_if = false;
	cpu.eflags_df = false;
	cpu.eflags_of = false;

	/* Initialize DRAM. */
	init_ddr3();
}
Ejemplo n.º 3
0
void init_driver() {
	init_hal();
	init_timer();
	init_tty();
	init_ide();
	init_ramdisk();

	hal_list();
}
Ejemplo n.º 4
0
void restart() {
	/* Perform some initialization to restart a program */
#ifdef USE_RAMDISK
	/* Read the file with name `argv[1]' into ramdisk. */
	init_ramdisk();
#endif

	/* Read the entry code into memory. */
	load_entry();

	/* Set the initial instruction pointer. */
	cpu.eip = ENTRY_START;
	
	/* Set the initial flag register */
	cpu.EFLAGS.val = 0x00000002;

	/* Initialize DRAM. */
	init_ddr3();
}
Ejemplo n.º 5
0
void test_initialize_filesystem(void)
{
  int rc=0;
  rc = mkdir (BASE_FOR_TEST,S_IRWXU|S_IRWXG|S_IRWXO);
  rtems_test_assert(rc==0);

  init_ramdisk();

  rc=msdos_format(RAMDISK_PATH,&rqdata);
  rtems_test_assert(rc==0);

  rtems_resource_snapshot_take(&before_mount);

  rc=mount(RAMDISK_PATH,
      BASE_FOR_TEST,
      "dosfs",
      RTEMS_FILESYSTEM_READ_WRITE,
      NULL);
  rtems_test_assert(rc==0);
}