* 1b) Search EBDA paragraphs (EBDa is required to be a minimum of 1_k length) 
* 1b) Search EBDA paragraphs (EBDa is required to be a minimum of *     1_k length) 
acpi_tb_find_rsdp (	struct acpi_table_desc          *table_info,	u32                             flags){	u8                              *table_ptr;	u8                              *mem_rover;	u32                             physical_address;	acpi_status                     status;	ACPI_FUNCTION_TRACE ("tb_find_rsdp");	/*	 * Scan supports either 1) Logical addressing or 2) Physical addressing	 */	if ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) {		/*		 * 1a) Get the location of the EBDA		 */		status = acpi_os_map_memory ((acpi_physical_address) ACPI_EBDA_PTR_LOCATION,				  ACPI_EBDA_PTR_LENGTH,				  (void *) &table_ptr);		if (ACPI_FAILURE (status)) {			ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,				"Could not map memory at %8.8X for length %X\n",				ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH));			return_ACPI_STATUS (status);		}		ACPI_MOVE_16_TO_32 (&physical_address, table_ptr);		physical_address <<= 4;                 /* Convert segment to physical address */		acpi_os_unmap_memory (table_ptr, ACPI_EBDA_PTR_LENGTH);		/* EBDA present? */		if (physical_address > 0x400) {			/*			 * 1b) Search EBDA paragraphs (EBDa is required to be a minimum of 1_k length)			 */			status = acpi_os_map_memory ((acpi_physical_address) physical_address,					  ACPI_EBDA_WINDOW_SIZE,					  (void *) &table_ptr);			if (ACPI_FAILURE (status)) {				ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,					"Could not map memory at %8.8X for length %X\n",					physical_address, ACPI_EBDA_WINDOW_SIZE));				return_ACPI_STATUS (status);			}			mem_rover = acpi_tb_scan_memory_for_rsdp (table_ptr, ACPI_EBDA_WINDOW_SIZE);			acpi_os_unmap_memory (table_ptr, ACPI_EBDA_WINDOW_SIZE);			if (mem_rover) {				/* Found it, return the physical address */				physical_address += ACPI_PTR_DIFF (mem_rover, table_ptr);				table_info->physical_address = (acpi_physical_address) physical_address;				return_ACPI_STATUS (AE_OK);			}		}		/*		 * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh		 */		status = acpi_os_map_memory ((acpi_physical_address) ACPI_HI_RSDP_WINDOW_BASE,				  ACPI_HI_RSDP_WINDOW_SIZE,				  (void *) &table_ptr);		if (ACPI_FAILURE (status)) {			ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,				"Could not map memory at %8.8X for length %X\n",				ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE));			return_ACPI_STATUS (status);		}		mem_rover = acpi_tb_scan_memory_for_rsdp (table_ptr, ACPI_HI_RSDP_WINDOW_SIZE);		acpi_os_unmap_memory (table_ptr, ACPI_HI_RSDP_WINDOW_SIZE);		if (mem_rover) {			/* Found it, return the physical address */			physical_address = ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF (mem_rover, table_ptr);			table_info->physical_address = (acpi_physical_address) physical_address;			return_ACPI_STATUS (AE_OK);		}	}	/*	 * Physical addressing	 */	else {		/*		 * 1a) Get the location of the EBDA		 */		ACPI_MOVE_16_TO_32 (&physical_address, ACPI_EBDA_PTR_LOCATION);		physical_address <<= 4;     /* Convert segment to physical address */		/* EBDA present? */		if (physical_address > 0x400) {			/*			 * 1b) Search EBDA paragraphs (EBDa is required to be a minimum of 1_k length)			 */			mem_rover = acpi_tb_scan_memory_for_rsdp (ACPI_PHYSADDR_TO_PTR (physical_address),					  ACPI_EBDA_WINDOW_SIZE);			if (mem_rover) {				/* Found it, return the physical address */				table_info->physical_address = ACPI_TO_INTEGER (mem_rover);				return_ACPI_STATUS (AE_OK);			}		}		/*		 * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh		 */		mem_rover = acpi_tb_scan_memory_for_rsdp (ACPI_PHYSADDR_TO_PTR (ACPI_HI_RSDP_WINDOW_BASE),				  ACPI_HI_RSDP_WINDOW_SIZE);		if (mem_rover) {			/* Found it, return the physical address */			table_info->physical_address = ACPI_TO_INTEGER (mem_rover);			return_ACPI_STATUS (AE_OK);		}	}	/* RSDP signature was not found */	return_ACPI_STATUS (AE_NOT_FOUND);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/tbxfroot.c/clean/drivers/acpi/tables/tbxfroot.c