+2010-02-13 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Merge grub_ieee1275_map_physical into grub_map and rename to
+ grub_ieee1275_map
+
+ * include/grub/ieee1275/ieee1275.h (grub_ieee1275_map): New proto.
+ * include/grub/sparc64/ieee1275/ieee1275.h (grub_ieee1275_map_physical):
+ Remove.
+ * kern/ieee1275/openfw.c (grub_map): Rename to ...
+ (grub_ieee1275_map): ... this. All users updated. Add phys_lo when
+ necessary.
+ * kern/sparc64/ieee1275/ieee1275.c (grub_ieee1275_map_physical): Remove.
+
2010-02-13 Vladimir Serbinenko <phcoder@gmail.com>
* disk/ieee1275/ofdisk.c (grub_ofdisk_open): Check device type before
(int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t, grub_uint32_t));
int EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
+int
+EXPORT_FUNC(grub_ieee1275_map) (grub_addr_t phys, grub_addr_t virt,
+ grub_size_t size, grub_uint32_t mode);
+
char *EXPORT_FUNC(grub_ieee1275_encode_devname) (const char *path);
char *EXPORT_FUNC(grub_ieee1275_get_filename) (const char *path);
#define IEEE1275_MAP_DEFAULT (IEEE1275_MAP_WRITE | IEEE1275_MAP_READ | \
IEEE1275_MAP_EXEC | IEEE1275_MAP_CACHED)
-extern int EXPORT_FUNC(grub_ieee1275_map_physical) (grub_addr_t paddr,
- grub_addr_t vaddr,
- grub_size_t size,
- grub_uint32_t mode);
extern int EXPORT_FUNC(grub_ieee1275_claim_vaddr) (grub_addr_t vaddr,
grub_size_t size);
extern int EXPORT_FUNC(grub_ieee1275_alloc_physmem) (grub_addr_t *paddr,
}
/* Call the "map" method of /chosen/mmu. */
-static int
-grub_map (grub_addr_t phys, grub_addr_t virt, grub_uint32_t size,
- grub_uint8_t mode)
+int
+grub_ieee1275_map (grub_addr_t phys, grub_addr_t virt, grub_size_t size,
+ grub_uint32_t mode)
{
struct map_args {
struct grub_ieee1275_common_hdr common;
grub_ieee1275_cell_t mode;
grub_ieee1275_cell_t size;
grub_ieee1275_cell_t virt;
- grub_ieee1275_cell_t phys;
+#ifdef GRUB_MACHINE_SPARC64
+ grub_ieee1275_cell_t phys_high;
+#endif
+ grub_ieee1275_cell_t phys_low;
grub_ieee1275_cell_t catch_result;
} args;
- INIT_IEEE1275_COMMON (&args.common, "call-method", 6, 1);
+ INIT_IEEE1275_COMMON (&args.common, "call-method",
+#ifdef GRUB_MACHINE_SPARC64
+ 7,
+#else
+ 6,
+#endif
+ 1);
args.method = (grub_ieee1275_cell_t) "map";
args.ihandle = grub_ieee1275_mmu;
- args.phys = phys;
+#ifdef GRUB_MACHINE_SPARC64
+ args.phys_high = 0;
+#endif
+ args.phys_low = phys;
args.virt = virt;
args.size = size;
args.mode = mode; /* Format is WIMG0PP. */
+ args.catch_result = (grub_ieee1275_cell_t) -1;
if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
return -1;
return -1;
if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_REAL_MODE)
- && grub_map (addr, addr, size, 0x00))
+ && grub_ieee1275_map (addr, addr, size, 0x00))
{
grub_printf ("map failed: address 0x%llx, size 0x%llx\n",
(long long) addr, (long long) size);
/* Sun specific ieee1275 interfaces used by GRUB. */
-int
-grub_ieee1275_map_physical (grub_addr_t paddr, grub_addr_t vaddr,
- grub_size_t size, grub_uint32_t mode)
-{
- struct map_physical_args
- {
- struct grub_ieee1275_common_hdr common;
- grub_ieee1275_cell_t method;
- grub_ieee1275_cell_t ihandle;
- grub_ieee1275_cell_t mode;
- grub_ieee1275_cell_t size;
- grub_ieee1275_cell_t virt;
- grub_ieee1275_cell_t phys_high;
- grub_ieee1275_cell_t phys_low;
- grub_ieee1275_cell_t catch_result;
- }
- args;
-
- INIT_IEEE1275_COMMON (&args.common, "call-method", 7, 1);
- args.method = (grub_ieee1275_cell_t) "map";
- args.ihandle = grub_ieee1275_mmu;
- args.mode = mode;
- args.size = size;
- args.virt = vaddr;
- args.phys_high = 0;
- args.phys_low = paddr;
- args.catch_result = (grub_ieee1275_cell_t) -1;
-
- if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
- return -1;
- return args.catch_result;
-}
-
int
grub_ieee1275_claim_vaddr (grub_addr_t vaddr, grub_size_t size)
{
if (paddr == (grub_addr_t) -1)
return grub_error (GRUB_ERR_OUT_OF_MEMORY,
"couldn't allocate physical memory");
- ret = grub_ieee1275_map_physical (paddr, linux_addr - off,
- linux_size + off, IEEE1275_MAP_DEFAULT);
+ ret = grub_ieee1275_map (paddr, linux_addr - off,
+ linux_size + off, IEEE1275_MAP_DEFAULT);
if (ret)
return grub_error (GRUB_ERR_OUT_OF_MEMORY,
"couldn't map physical memory");
"couldn't allocate physical memory");
goto fail;
}
- ret = grub_ieee1275_map_physical (paddr, addr, size, IEEE1275_MAP_DEFAULT);
+ ret = grub_ieee1275_map (paddr, addr, size, IEEE1275_MAP_DEFAULT);
if (ret)
{
grub_error (GRUB_ERR_OUT_OF_MEMORY,