]>
Commit | Line | Data |
---|---|---|
5c36a0eb KZ |
1 | #include <linux/types.h> /* for __u32 etc */ |
2 | /* | |
3 | * Copyright (C) Andreas Neuper, Sep 1998. | |
4 | * This file may be modified and redistributed under | |
5 | * the terms of the GNU Public License. | |
6 | */ | |
7 | ||
8 | struct device_parameter { /* 48 bytes */ | |
9 | unsigned char skew; | |
10 | unsigned char gap1; | |
11 | unsigned char gap2; | |
12 | unsigned char sparecyl; | |
13 | unsigned short pcylcount; | |
14 | unsigned short head_vol0; | |
15 | unsigned short ntrks; /* tracks in cyl 0 or vol 0 */ | |
16 | unsigned char cmd_tag_queue_depth; | |
17 | unsigned char unused0; | |
18 | unsigned short unused1; | |
19 | unsigned short nsect; /* sectors/tracks in cyl 0 or vol 0 */ | |
20 | unsigned short bytes; | |
21 | unsigned short ilfact; | |
22 | unsigned int flags; /* controller flags */ | |
23 | unsigned int datarate; | |
24 | unsigned int retries_on_error; | |
25 | unsigned int ms_per_word; | |
26 | unsigned short xylogics_gap1; | |
27 | unsigned short xylogics_syncdelay; | |
28 | unsigned short xylogics_readdelay; | |
29 | unsigned short xylogics_gap2; | |
30 | unsigned short xylogics_readgate; | |
31 | unsigned short xylogics_writecont; | |
32 | }; | |
33 | ||
c07ebfa1 KZ |
34 | #define SGI_VOLHDR 0x00 |
35 | /* 1 and 2 were used for drive types no longer supported by SGI */ | |
36 | #define SGI_SWAP 0x03 | |
37 | /* 4 and 5 were for filesystem types SGI haven't ever supported on MIPS CPUs */ | |
5c36a0eb KZ |
38 | #define SGI_VOLUME 0x06 |
39 | #define SGI_EFS 0x07 | |
c07ebfa1 KZ |
40 | #define SGI_LVOL 0x08 |
41 | #define SGI_RLVOL 0x09 | |
42 | #define SGI_XFS 0x0a | |
43 | #define SGI_XFSLOG 0x0b | |
44 | #define SGI_XLV 0x0c | |
45 | #define SGI_XVM 0x0d | |
5c36a0eb KZ |
46 | #define ENTIRE_DISK SGI_VOLUME |
47 | /* | |
48 | * controller flags | |
49 | */ | |
50 | #define SECTOR_SLIP 0x01 | |
51 | #define SECTOR_FWD 0x02 | |
52 | #define TRACK_FWD 0x04 | |
53 | #define TRACK_MULTIVOL 0x08 | |
54 | #define IGNORE_ERRORS 0x10 | |
55 | #define RESEEK 0x20 | |
56 | #define ENABLE_CMDTAGQ 0x40 | |
57 | ||
58 | typedef struct { | |
c07ebfa1 | 59 | unsigned int magic; /* expect SGI_LABEL_MAGIC */ |
5c36a0eb KZ |
60 | unsigned short boot_part; /* active boot partition */ |
61 | unsigned short swap_part; /* active swap partition */ | |
62 | unsigned char boot_file[16]; /* name of the bootfile */ | |
63 | struct device_parameter devparam; /* 1 * 48 bytes */ | |
64 | struct volume_directory { /* 15 * 16 bytes */ | |
c07ebfa1 | 65 | unsigned char vol_file_name[8]; /* a character array */ |
5c36a0eb KZ |
66 | unsigned int vol_file_start; /* number of logical block */ |
67 | unsigned int vol_file_size; /* number of bytes */ | |
68 | } directory[15]; | |
69 | struct sgi_partition { /* 16 * 12 bytes */ | |
70 | unsigned int num_sectors; /* number of blocks */ | |
c07ebfa1 | 71 | unsigned int start_sector; /* must be cylinder aligned */ |
5c36a0eb KZ |
72 | unsigned int id; |
73 | } partitions[16]; | |
74 | unsigned int csum; | |
75 | unsigned int fillbytes; | |
76 | } sgi_partition; | |
77 | ||
78 | typedef struct { | |
79 | unsigned int magic; /* looks like a magic number */ | |
80 | unsigned int a2; | |
81 | unsigned int a3; | |
82 | unsigned int a4; | |
83 | unsigned int b1; | |
84 | unsigned short b2; | |
85 | unsigned short b3; | |
86 | unsigned int c[16]; | |
87 | unsigned short d[3]; | |
88 | unsigned char scsi_string[50]; | |
89 | unsigned char serial[137]; | |
90 | unsigned short check1816; | |
91 | unsigned char installer[225]; | |
92 | } sgiinfo; | |
93 | ||
94 | #define SGI_LABEL_MAGIC 0x0be5a941 | |
95 | #define SGI_LABEL_MAGIC_SWAPPED 0x41a9e50b | |
96 | #define SGI_INFO_MAGIC 0x00072959 | |
97 | #define SGI_INFO_MAGIC_SWAPPED 0x59290700 | |
98 | #define SSWAP16(x) (other_endian ? __swap16(x) \ | |
99 | : (__u16)(x)) | |
100 | #define SSWAP32(x) (other_endian ? __swap32(x) \ | |
101 | : (__u32)(x)) | |
5c36a0eb KZ |
102 | |
103 | /* fdisk.c */ | |
22853e4a | 104 | #define sgilabel ((sgi_partition *)MBRbuffer) |
5c36a0eb | 105 | #define sgiparam (sgilabel->devparam) |
22853e4a | 106 | extern char MBRbuffer[MAX_SECTOR_SIZE]; |
5c36a0eb KZ |
107 | extern uint heads, sectors, cylinders; |
108 | extern int show_begin; | |
109 | extern int sgi_label; | |
110 | extern char *partition_type(unsigned char type); | |
111 | extern void update_units(void); | |
112 | extern char read_chars(char *mesg); | |
22853e4a | 113 | extern void set_changed(int); |
5c36a0eb KZ |
114 | |
115 | /* fdisksgilabel.c */ | |
116 | extern struct systypes sgi_sys_types[]; | |
117 | extern void sgi_nolabel( void ); | |
118 | extern int check_sgi_label( void ); | |
119 | extern void sgi_list_table( int xtra ); | |
120 | extern void sgi_change_sysid( int i, int sys ); | |
121 | extern int sgi_get_start_sector( int i ); | |
122 | extern int sgi_get_num_sectors( int i ); | |
123 | extern int sgi_get_sysid( int i ); | |
124 | extern void sgi_delete_partition( int i ); | |
125 | extern void sgi_add_partition( int n, int sys ); | |
126 | extern void create_sgilabel( void ); | |
127 | extern void create_sgiinfo( void ); | |
128 | extern int verify_sgi( int verbose ); | |
129 | extern void sgi_write_table( void ); | |
130 | extern void sgi_set_ilfact( void ); | |
131 | extern void sgi_set_rspeed( void ); | |
132 | extern void sgi_set_pcylcount( void ); | |
133 | extern void sgi_set_xcyl( void ); | |
134 | extern void sgi_set_ncyl( void ); | |
135 | extern void sgi_set_bootpartition( int i ); | |
136 | extern void sgi_set_swappartition( int i ); | |
137 | extern int sgi_get_bootpartition( void ); | |
138 | extern int sgi_get_swappartition( void ); | |
139 | extern void sgi_set_bootfile( const char* aFile ); | |
140 | extern const char *sgi_get_bootfile( void ); |