Manage big endian/little endian

This commit is contained in:
Laurent Vivier 2006-05-29 20:18:19 +00:00
parent de2860a35c
commit 7cf0906477
12 changed files with 41 additions and 24 deletions

View File

@ -9,6 +9,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_get_bootinfo(emile_map_t *map, int* bootstart, int *bootsize, int emile_map_get_bootinfo(emile_map_t *map, int* bootstart, int *bootsize,
int *bootaddr, int *bootentry, int* checksum, int *bootaddr, int *bootentry, int* checksum,
@ -17,11 +18,11 @@ int emile_map_get_bootinfo(emile_map_t *map, int* bootstart, int *bootsize,
if (!emile_map_is_valid(map)) if (!emile_map_is_valid(map))
return -1; return -1;
*bootstart = map->partition.LgBootStart; *bootstart = read_long(&map->partition.LgBootStart);
*bootsize = map->partition.BootSize; *bootsize = read_long(&map->partition.BootSize);
*bootaddr = map->partition.BootAddr; *bootaddr = read_long(&map->partition.BootAddr);
*bootentry = map->partition.BootEntry; *bootentry = read_long(&map->partition.BootEntry);
*checksum = map->partition.BootCksum; *checksum = read_long(&map->partition.BootCksum);
strcpy(processor, map->partition.Processor); strcpy(processor, map->partition.Processor);
return 0; return 0;

View File

@ -10,8 +10,9 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_get_number(emile_map_t *map) int emile_map_get_number(emile_map_t *map)
{ {
return map->partition.MapBlkCnt; return read_long(&map->partition.MapBlkCnt);
} }

View File

@ -7,8 +7,9 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_partition_get_flags(emile_map_t *map) int emile_map_partition_get_flags(emile_map_t *map)
{ {
return map->partition.PartStatus; return read_long(&map->partition.PartStatus);
} }

View File

@ -10,5 +10,6 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
int emile_map_partition_is_bootable(emile_map_t *map) int emile_map_partition_is_bootable(emile_map_t *map)
{ {
return (map->partition.PartStatus & kPartitionAUXIsBootValid) == kPartitionAUXIsBootValid; return (emile_map_partition_get_flags(map) &
kPartitionAUXIsBootValid) == kPartitionAUXIsBootValid;
} }

View File

@ -10,5 +10,6 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
int emile_map_partition_is_startup(emile_map_t *map) int emile_map_partition_is_startup(emile_map_t *map)
{ {
return (map->partition.PartStatus & kPartitionIsStartup) == kPartitionIsStartup; return (emile_map_partition_get_flags(map)
& kPartitionIsStartup) == kPartitionIsStartup;
} }

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_partition_set_bootable(emile_map_t *map, int enable) int emile_map_partition_set_bootable(emile_map_t *map, int enable)
{ {
@ -14,9 +15,13 @@ int emile_map_partition_set_bootable(emile_map_t *map, int enable)
return -1; return -1;
if (enable) if (enable)
map->partition.PartStatus = kPartitionAUXIsValid | kPartitionAUXIsAllocated | kPartitionAUXIsInUse | kPartitionAUXIsReadable | kPartitionAUXIsWriteable | kPartitionIsMountedAtStartup | 0x80; emile_map_partition_set_flags(map,
kPartitionAUXIsValid | kPartitionAUXIsAllocated |
kPartitionAUXIsInUse | kPartitionAUXIsReadable |
kPartitionAUXIsWriteable | kPartitionIsMountedAtStartup | 0x80);
else else
map->partition.PartStatus &= ~kPartitionIsMountedAtStartup; emile_map_partition_set_flags(&map,
emile_map_partition_get_flags(map) & ~kPartitionIsMountedAtStartup);
return 0; return 0;
} }

View File

@ -7,10 +7,11 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_partition_set_flags(emile_map_t *map, int flags) int emile_map_partition_set_flags(emile_map_t *map, int flags)
{ {
map->partition.PartStatus = flags; write_long(&map->partition.PartStatus, flags);
return 0; return 0;
} }

View File

@ -14,9 +14,11 @@ int emile_map_partition_set_startup(emile_map_t *map, int enable)
return -1; return -1;
if (enable) if (enable)
map->partition.PartStatus |= kPartitionIsStartup; emile_map_partition_set_flags(map,
emile_map_partition_get_flags(map) | kPartitionIsStartup);
else else
map->partition.PartStatus &= ~kPartitionIsStartup; emile_map_partition_set_flags(map,
emile_map_partition_get_flags(map) & ~kPartitionIsStartup);
return 0; return 0;
} }

View File

@ -10,6 +10,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_read(emile_map_t *map, int part) int emile_map_read(emile_map_t *map, int part)
{ {
@ -19,7 +20,7 @@ int emile_map_read(emile_map_t *map, int part)
if (map->current == part) if (map->current == part)
return part; return part;
if (part > map->partition.MapBlkCnt) if (part > read_long(&map->partition.MapBlkCnt))
return -1; return -1;
offset = part * sizeof(struct Partition) + sizeof(struct DriverDescriptor); offset = part * sizeof(struct Partition) + sizeof(struct DriverDescriptor);

View File

@ -9,6 +9,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_set_bootinfo(emile_map_t *map, int bootstart, int bootsize, int emile_map_set_bootinfo(emile_map_t *map, int bootstart, int bootsize,
int bootaddr, int bootentry, int checksum, int bootaddr, int bootentry, int checksum,
@ -17,11 +18,11 @@ int emile_map_set_bootinfo(emile_map_t *map, int bootstart, int bootsize,
if (!emile_map_is_valid(map)) if (!emile_map_is_valid(map))
return -1; return -1;
map->partition.LgBootStart = bootstart; write_long(&map->partition.LgBootStart, bootstart);
map->partition.BootSize = bootsize; write_long(&map->partition.BootSize, bootsize);
map->partition.BootAddr = bootaddr; write_long(&map->partition.BootAddr, bootaddr);
map->partition.BootEntry = bootentry; write_long(&map->partition.BootEntry, bootentry);
map->partition.BootCksum = checksum; write_long(&map->partition.BootCksum, checksum);
memset(map->partition.Processor, 0, sizeof(map->partition.Processor)); memset(map->partition.Processor, 0, sizeof(map->partition.Processor));
strcpy(map->partition.Processor, processor); strcpy(map->partition.Processor, processor);

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_set_driver_info(emile_map_t *map, int number, int emile_map_set_driver_info(emile_map_t *map, int number,
int block, int size, int type) int block, int size, int type)
@ -17,9 +18,9 @@ int emile_map_set_driver_info(emile_map_t *map, int number,
if (number >= DD_MAX_DRIVER) if (number >= DD_MAX_DRIVER)
return -1; return -1;
map->drivers.DrvInfo[number].Block = block; write_long(&map->drivers.DrvInfo[number].Block, block);
map->drivers.DrvInfo[number].Size = size; write_short(&map->drivers.DrvInfo[number].Size, size);
map->drivers.DrvInfo[number].Type = type; write_short(&map->drivers.DrvInfo[number].Type, type);
return 0; return 0;
} }

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h" #include "partition.h"
#include "libemile.h" #include "libemile.h"
#include "emile.h"
int emile_map_set_driver_number(emile_map_t *map, int number) int emile_map_set_driver_number(emile_map_t *map, int number)
{ {
@ -16,7 +17,7 @@ int emile_map_set_driver_number(emile_map_t *map, int number)
if (number >= DD_MAX_DRIVER) if (number >= DD_MAX_DRIVER)
return -1; return -1;
map->drivers.DrvrCount = number; write_short(&map->drivers.DrvrCount, number);
return 0; return 0;
} }