Modify SD driver for direct i/o (no rdisk).
This commit is contained in:
@@ -852,7 +852,6 @@ file /include/sys/proc.h
|
||||
file /include/sys/ptrace.h
|
||||
file /include/sys/pty.h
|
||||
file /include/sys/rd_flash.h
|
||||
file /include/sys/rdisk.h
|
||||
file /include/sys/rd_mrams.h
|
||||
file /include/sys/rd_sdramp.h
|
||||
file /include/sys/rd_sramc.h
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/disk.h>
|
||||
#include <ioctl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <string.h>
|
||||
@@ -73,7 +73,7 @@ int write_mbr(int fd)
|
||||
sync(fd);
|
||||
printf("Calling ioctl to reread the partition table\n");
|
||||
sleep(1);
|
||||
ioctl(fd,RDREINIT);
|
||||
ioctl(fd, DIOCREINIT);
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
@@ -296,7 +296,7 @@ int main(int argc, char *argv[])
|
||||
wipe = 1;
|
||||
}
|
||||
|
||||
ioctl(fd,RDGETMEDIASIZE,&blocks);
|
||||
ioctl(fd, DIOCGETMEDIASIZE, &blocks);
|
||||
|
||||
printf("%s: %d blocks of 1KB\n",device,blocks);
|
||||
|
||||
|
||||
@@ -8,5 +8,37 @@
|
||||
#define A_ACTIVE 4
|
||||
#define A_TYPE 5
|
||||
|
||||
struct chs {
|
||||
unsigned char head;
|
||||
struct {
|
||||
unsigned cylhigh : 2;
|
||||
unsigned sector : 6;
|
||||
} __attribute__((packed));
|
||||
unsigned char cyllow;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct partition {
|
||||
#define P_ACTIVE 0x80
|
||||
unsigned char status;
|
||||
struct chs start;
|
||||
unsigned char type;
|
||||
struct chs end;
|
||||
unsigned long lbastart;
|
||||
unsigned long lbalength;
|
||||
};
|
||||
|
||||
struct mbr {
|
||||
unsigned char bootstrap1[218];
|
||||
unsigned short pad0000;
|
||||
unsigned char biosdrive;
|
||||
unsigned char secs;
|
||||
unsigned char mins;
|
||||
unsigned char hours;
|
||||
unsigned char bootstrap2[216];
|
||||
unsigned int sig;
|
||||
unsigned short pad0001;
|
||||
struct partition partitions[4];
|
||||
unsigned short bootsig;
|
||||
}__attribute__((packed));
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/inode.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/disk.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#define UMASK 0755
|
||||
@@ -88,10 +88,9 @@ int get_disk_size(char *fn)
|
||||
printf("Getting disk size for %s\n",fn);
|
||||
|
||||
// Is it a /dev entry?
|
||||
if(strncmp(fn,"/dev/",5)==0)
|
||||
{
|
||||
if (strncmp(fn,"/dev/",5) == 0) {
|
||||
fd = open(fn,O_RDONLY);
|
||||
ioctl(fd,RDGETMEDIASIZE,&size);
|
||||
ioctl(fd, DIOCGETMEDIASIZE, &size);
|
||||
close(fd);
|
||||
} else {
|
||||
lstat(fn,&sb);
|
||||
|
||||
@@ -28,11 +28,10 @@ struct bdevsw
|
||||
int (*d_open) (dev_t, int, int);
|
||||
int (*d_close) (dev_t, int, int);
|
||||
void (*d_strategy) (struct buf*);
|
||||
void (*d_root) (caddr_t); /* root attach routine */
|
||||
daddr_t (*d_psize) (dev_t); /* query partition size */
|
||||
int (*d_ioctl) (dev_t, u_int, caddr_t, int);
|
||||
int d_flags; /* tape flag */
|
||||
const struct devspec *devs;
|
||||
int d_flags; /* tape flag */
|
||||
};
|
||||
|
||||
#define MEM_MAJOR 1
|
||||
|
||||
@@ -1,108 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* Ioctl definitions for skeleton driver.
|
||||
*
|
||||
* This software was developed by the Computer Systems Engineering group
|
||||
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
|
||||
* contributed to Berkeley.
|
||||
* Copyright (C) 2015 Serge Vakulenko
|
||||
*
|
||||
* All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Lawrence Berkeley Laboratory.
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* and its documentation for any purpose and without fee is hereby
|
||||
* granted, provided that the above copyright notice appear in all
|
||||
* copies and that both that the copyright notice and this
|
||||
* permission notice and warranty disclaimer appear in supporting
|
||||
* documentation, and that the name of the author not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* The author disclaim all warranties with regard to this
|
||||
* software, including all implied warranties of merchantability
|
||||
* and fitness. In no event shall the author be liable for any
|
||||
* special, indirect or consequential damages or any damages
|
||||
* whatsoever resulting from loss of use, data or profits, whether
|
||||
* in an action of contract, negligence or other tortious action,
|
||||
* arising out of or in connection with the use or performance of
|
||||
* this software.
|
||||
*/
|
||||
#ifndef _SYS_DISK_H_
|
||||
#define _SYS_DISK_H_
|
||||
#include <sys/disklabel.h>
|
||||
|
||||
/*
|
||||
* Disk device structures.
|
||||
*
|
||||
* Note that this is only a preliminary outline. The final disk structures
|
||||
* may be somewhat different.
|
||||
*
|
||||
* Note: the 2.11BSD version is very different. The 4.4 version served
|
||||
* as the inspiration. I needed something similar but for slightly
|
||||
* different purposes.
|
||||
* IBM PC compatible partition table.
|
||||
*/
|
||||
#define MAXPARTITIONS 4
|
||||
|
||||
/*
|
||||
* Disk device structures. Rather than replicate driver specific variations
|
||||
* of the following in each driver it was made common here.
|
||||
*
|
||||
* Some of the flags are specific to various drivers. For example ALIVE and
|
||||
* ONLINE apply to MSCP devices more than to SMD devices while the SEEK flag
|
||||
* applies to the SMD (xp) driver but not to the MSCP driver. The rest
|
||||
* of the flags as well as the open partition bitmaps are usable by any disk
|
||||
* driver. One 'dkdevice' structure is needed for each disk drive supported
|
||||
* by a driver.
|
||||
*
|
||||
* The entire disklabel is not resident in the kernel address space. Only
|
||||
* the partition table is directly accessible by the kernel. The MSCP driver
|
||||
* does not care (or know) about the geometry of the disk. Not holding
|
||||
* the entire label in the kernel saved quite a bit of D space. Other drivers
|
||||
* which need geometry information from the label will have to map in the
|
||||
* label and copy out the geometry data they require. This is unlikely to
|
||||
* cause much overhead since labels are read and written infrequently - when
|
||||
* mounting a drive, assigning a label, running newfs, etc.
|
||||
*/
|
||||
|
||||
struct dkdevice {
|
||||
int dk_bopenmask; /* block devices open */
|
||||
int dk_copenmask; /* character devices open */
|
||||
int dk_openmask; /* composite (bopen|copen) */
|
||||
int dk_flags; /* label state - see below */
|
||||
size_t dk_label; /* sector containing label */
|
||||
struct partition dk_parts[MAXPARTITIONS]; /* inkernel portion */
|
||||
struct diskpart { /* the partition table */
|
||||
u_char dp_status; /* active (bootable) flag */
|
||||
#define DP_ACTIVE 0x80
|
||||
u_char dp_start_chs[3]; /* ignored */
|
||||
u_char dp_type; /* type of partition */
|
||||
u_char dp_end_chs[3]; /* ignored */
|
||||
u_int dp_offset; /* starting sector */
|
||||
u_int dp_size; /* number of sectors in partition */
|
||||
};
|
||||
|
||||
#define DKF_OPENING 0x0001 /* drive is being opened */
|
||||
#define DKF_CLOSING 0x0002 /* drive is being closed */
|
||||
#define DKF_WANTED 0x0004 /* drive is being waited for */
|
||||
#define DKF_ALIVE 0x0008 /* drive is alive */
|
||||
#define DKF_ONLINE 0x0010 /* drive is online */
|
||||
#define DKF_WLABEL 0x0020 /* label area is being written */
|
||||
#define DKF_SEEK 0x0040 /* drive is seeking */
|
||||
#define DKF_SWAIT 0x0080 /* waiting for seek to complete */
|
||||
|
||||
/* encoding of disk minor numbers, should be elsewhere... but better
|
||||
* here than in ufs_disksubr.c
|
||||
*
|
||||
* Note: the controller number in bits 6 and 7 of the minor device are NOT
|
||||
* removed. It is the responsibility of the driver to extract or mask
|
||||
* these bits.
|
||||
/*
|
||||
* Partition types.
|
||||
*/
|
||||
#define PTYPE_UNUSED 0 /* unused */
|
||||
#define PTYPE_BSDFFS 0xb7 /* 4.2BSD fast file system */
|
||||
#define PTYPE_SWAP 0xb8 /* swap */
|
||||
|
||||
#define dkunit(dev) (minor(dev) >> 3)
|
||||
#define dkpart(dev) (minor(dev) & 07)
|
||||
#define dkminor(unit, part) (((unit) << 3) | (part))
|
||||
/*
|
||||
* Disk-specific ioctls.
|
||||
*/
|
||||
#define DIOCGETMEDIASIZE _IOR('d', 1, int) /* get size in kbytes */
|
||||
#define DIOCREINIT _IO ('d', 2) /* re-initialize device */
|
||||
#define DIOCGETPART _IOR('d', 3, struct diskpart) /* get partition */
|
||||
|
||||
#endif /* _SYS_DISK_H_ */
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
#ifndef _RDISK_H
|
||||
#define _RDISK_H
|
||||
|
||||
#include "conf.h"
|
||||
|
||||
#define RDISK_FS 0xB7
|
||||
#define RDISK_SWAP 0xB8
|
||||
|
||||
#define RD_DEFAULT 0x00000000UL
|
||||
#define RD_READONLY 0x00000001UL
|
||||
#define RD_PREPART 0x00000002UL
|
||||
|
||||
#define S_SILENT 0x8000
|
||||
|
||||
#define RAMDISK_PARTSPEC(n, t, s, l) \
|
||||
m->partitions[n].type = t; \
|
||||
m->partitions[n].lbastart = s; \
|
||||
m->partitions[n].lbalength = l;
|
||||
|
||||
struct diskentry {
|
||||
void (*pre_init)(int unit);
|
||||
int (*init)(int unit,int flag);
|
||||
int (*deinit)(int unit);
|
||||
int (*open)(int unit, int mode, int flags);
|
||||
int (*size)(int unit);
|
||||
int (*read)(int unit, unsigned int offset, char *data, unsigned int bcount);
|
||||
int (*write)(int unit, unsigned int offset, char *data, unsigned int bcount);
|
||||
unsigned char unit;
|
||||
unsigned int settings;
|
||||
};
|
||||
|
||||
struct diskflags {
|
||||
unsigned char opens;
|
||||
unsigned int start[4];
|
||||
unsigned int len[4];
|
||||
unsigned int blocks;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct chs {
|
||||
unsigned char head;
|
||||
struct {
|
||||
unsigned cylhigh : 2;
|
||||
unsigned sector : 6;
|
||||
} __attribute__((packed));
|
||||
unsigned char cyllow;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct partition {
|
||||
#define P_ACTIVE 0x80
|
||||
unsigned char status;
|
||||
struct chs start;
|
||||
unsigned char type;
|
||||
struct chs end;
|
||||
unsigned long lbastart;
|
||||
unsigned long lbalength;
|
||||
};
|
||||
|
||||
struct mbr {
|
||||
unsigned char bootstrap1[218];
|
||||
unsigned short pad0000;
|
||||
unsigned char biosdrive;
|
||||
unsigned char secs;
|
||||
unsigned char mins;
|
||||
unsigned char hours;
|
||||
unsigned char bootstrap2[216];
|
||||
unsigned int sig;
|
||||
unsigned short pad0001;
|
||||
struct partition partitions[4];
|
||||
unsigned short bootsig;
|
||||
}__attribute__((packed));
|
||||
|
||||
#ifdef KERNEL
|
||||
extern int rdopen(dev_t dev, int flag, int mode);
|
||||
extern int rdclose(dev_t dev, int flag, int mode);
|
||||
extern daddr_t rdsize(dev_t dev);
|
||||
extern void rdstrategy(register struct buf *bp);
|
||||
extern int partition_size(dev_t dev);
|
||||
extern int rdioctl (dev_t dev, register u_int cmd, caddr_t addr, int flag);
|
||||
extern void rdisk_init();
|
||||
extern void rdisk_list_partitions(unsigned char type);
|
||||
extern int rdisk_num_disks();
|
||||
|
||||
extern dev_t get_boot_device();
|
||||
extern dev_t get_swap_device();
|
||||
extern unsigned char partition_type(dev_t dev);
|
||||
extern struct buf *prepartition_device(char *devname);
|
||||
|
||||
extern const struct devspec rd0devs[];
|
||||
extern const struct devspec rd1devs[];
|
||||
extern const struct devspec rd2devs[];
|
||||
extern const struct devspec rd3devs[];
|
||||
#endif
|
||||
|
||||
#define RDGETMEDIASIZE _IOR('r', 1, int)
|
||||
#define RDREINIT _IO('r', 2)
|
||||
|
||||
#endif
|
||||
@@ -22,7 +22,6 @@
|
||||
#include <sys/namei.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/kconfig.h>
|
||||
#include <sys/rdisk.h>
|
||||
|
||||
u_int swapstart, nswap; /* start and size of swap space */
|
||||
size_t physmem; /* total amount of physical memory */
|
||||
@@ -104,8 +103,6 @@ main()
|
||||
register struct proc *p;
|
||||
register int i;
|
||||
register struct fs *fs = NULL;
|
||||
char inbuf[4];
|
||||
char inch;
|
||||
int s __attribute__((unused));
|
||||
|
||||
startup();
|
||||
@@ -149,97 +146,18 @@ main()
|
||||
nchinit();
|
||||
clkstart();
|
||||
|
||||
pipedev = rootdev;
|
||||
|
||||
/* Attach services. */
|
||||
struct conf_service *svc;
|
||||
for (svc = conf_service_init; svc->svc_attach != NULL; svc++)
|
||||
(*svc->svc_attach)();
|
||||
|
||||
s = spl0();
|
||||
rdisk_init();
|
||||
|
||||
if (rootdev == NODEV)
|
||||
rootdev = get_boot_device();
|
||||
if (swapdev == NODEV)
|
||||
swapdev = get_swap_device();
|
||||
pipedev = rootdev;
|
||||
|
||||
/* Mount a root filesystem. */
|
||||
for (;;) {
|
||||
if(rootdev!=-1)
|
||||
{
|
||||
fs = mountfs (rootdev, (boothowto & RB_RDONLY) ? MNT_RDONLY : 0,
|
||||
(struct inode*) 0);
|
||||
}
|
||||
if (fs)
|
||||
break;
|
||||
printf ("No root filesystem available!\n");
|
||||
// rdisk_list_partitions(RDISK_FS);
|
||||
retry:
|
||||
printf ("Please enter device to boot from (press ? to list): ");
|
||||
inch=0;
|
||||
inbuf[0] = inbuf[1] = inbuf[2] = inbuf[3] = 0;
|
||||
while((inch=cngetc()) != '\r')
|
||||
{
|
||||
switch(inch)
|
||||
{
|
||||
case '?':
|
||||
printf("?\n");
|
||||
rdisk_list_partitions(RDISK_FS);
|
||||
printf ("Please enter device to boot from (press ? to list): ");
|
||||
break;
|
||||
default:
|
||||
printf("%c",inch);
|
||||
inbuf[0] = inbuf[1];
|
||||
inbuf[1] = inbuf[2];
|
||||
inbuf[2] = inbuf[3];
|
||||
inbuf[3] = inch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
inch = 0;
|
||||
if(inbuf[0]=='r' && inbuf[1]=='d')
|
||||
{
|
||||
if(inbuf[2]>='0' && inbuf[2] < '0'+rdisk_num_disks())
|
||||
{
|
||||
if(inbuf[3]>='a' && inbuf[3]<='d')
|
||||
{
|
||||
rootdev=makedev(inbuf[2]-'0',inbuf[3]-'a'+1);
|
||||
inch = 1;
|
||||
}
|
||||
}
|
||||
} else if(inbuf[1]=='r' && inbuf[2]=='d') {
|
||||
if(inbuf[3]>='0' && inbuf[3] < '0'+rdisk_num_disks())
|
||||
{
|
||||
rootdev=makedev(inbuf[3]-'0',0);
|
||||
inch = 1;
|
||||
}
|
||||
} else if(inbuf[3] == 0) {
|
||||
inch = 1;
|
||||
}
|
||||
if(inch==0)
|
||||
{
|
||||
printf("\nUnknown device.\n\n");
|
||||
goto retry;
|
||||
}
|
||||
printf ("\n\n");
|
||||
}
|
||||
printf ("phys mem = %u kbytes\n", physmem / 1024);
|
||||
printf ("user mem = %u kbytes\n", MAXMEM / 1024);
|
||||
if(minor(rootdev)==0)
|
||||
{
|
||||
printf ("root dev = rd%d (%d,%d)\n",
|
||||
major(rootdev),
|
||||
major(rootdev), minor(rootdev)
|
||||
);
|
||||
} else {
|
||||
printf ("root dev = rd%d%c (%d,%d)\n",
|
||||
major(rootdev), 'a'+minor(rootdev)-1,
|
||||
major(rootdev), minor(rootdev)
|
||||
);
|
||||
}
|
||||
|
||||
printf ("root size = %u kbytes\n", fs->fs_fsize * DEV_BSIZE / 1024);
|
||||
s = spl0();
|
||||
fs = mountfs (rootdev, (boothowto & RB_RDONLY) ? MNT_RDONLY : 0, 0);
|
||||
if (! fs)
|
||||
panic ("No root filesystem found!");
|
||||
mount[0].m_inodp = (struct inode*) 1; /* XXX */
|
||||
mount_updname (fs, "/", "root", 1, 4);
|
||||
time.tv_sec = fs->fs_time;
|
||||
@@ -247,76 +165,19 @@ retry:
|
||||
|
||||
/* Find a swap file. */
|
||||
swapstart = 1;
|
||||
while(swapdev == -1)
|
||||
{
|
||||
printf("Please enter swap device (press ? to list): ");
|
||||
inbuf[0] = inbuf[1] = inbuf[2] = inbuf[3] = 0;
|
||||
while((inch = cngetc())!='\r')
|
||||
{
|
||||
switch(inch)
|
||||
{
|
||||
case '?':
|
||||
printf("?\n");
|
||||
rdisk_list_partitions(RDISK_SWAP);
|
||||
printf("Please enter swap device (press ? to list): ");
|
||||
break;
|
||||
default:
|
||||
printf("%c",inch);
|
||||
inbuf[0] = inbuf[1];
|
||||
inbuf[1] = inbuf[2];
|
||||
inbuf[2] = inbuf[3];
|
||||
inbuf[3] = inch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
inch = 0;
|
||||
if(inbuf[0]=='r' && inbuf[1]=='d')
|
||||
{
|
||||
if(inbuf[2]>='0' && inbuf[2] < '0'+rdisk_num_disks())
|
||||
{
|
||||
if(inbuf[3]>='a' && inbuf[3]<='d')
|
||||
{
|
||||
swapdev=makedev(inbuf[2]-'0',inbuf[3]-'a'+1);
|
||||
inch = 1;
|
||||
}
|
||||
}
|
||||
} else if(inbuf[1]=='r' && inbuf[2]=='d') {
|
||||
if(inbuf[3]>='0' && inbuf[3] < '0'+rdisk_num_disks())
|
||||
{
|
||||
swapdev=makedev(inbuf[3]-'0',0);
|
||||
inch = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(minor(swapdev)!=0)
|
||||
{
|
||||
if(partition_type(swapdev)!=RDISK_SWAP)
|
||||
{
|
||||
printf("\nNot a swap partition!\n\n");
|
||||
swapdev=-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
nswap = rdsize(swapdev);
|
||||
|
||||
if(minor(swapdev)==0)
|
||||
{
|
||||
printf ("swap dev = rd%d (%d,%d)\n",
|
||||
major(swapdev),
|
||||
major(swapdev), minor(swapdev)
|
||||
);
|
||||
} else {
|
||||
printf ("swap dev = rd%d%c (%d,%d)\n",
|
||||
major(swapdev), 'a'+minor(swapdev)-1,
|
||||
major(swapdev), minor(swapdev)
|
||||
);
|
||||
}
|
||||
(*bdevsw[major(swapdev)].d_open)(swapdev, FREAD|FWRITE, S_IFBLK);
|
||||
printf ("swap size = %u kbytes\n", nswap * DEV_BSIZE / 1024);
|
||||
nswap = (*bdevsw[major(swapdev)].d_psize)(swapdev);
|
||||
if (nswap <= 0)
|
||||
panic ("zero swap size"); /* don't want to panic, but what ? */
|
||||
mfree (swapmap, nswap, swapstart);
|
||||
|
||||
printf ("phys mem = %u kbytes\n", physmem / 1024);
|
||||
printf ("user mem = %u kbytes\n", MAXMEM / 1024);
|
||||
printf ("root dev = (%d,%d)\n", major(rootdev), minor(rootdev));
|
||||
printf ("swap dev = (%d,%d)\n", major(swapdev), minor(swapdev));
|
||||
printf ("root size = %u kbytes\n", fs->fs_fsize * DEV_BSIZE / 1024);
|
||||
printf ("swap size = %u kbytes\n", nswap * DEV_BSIZE / 1024);
|
||||
|
||||
/* Kick off timeout driven events by calling first time. */
|
||||
schedcpu (0);
|
||||
|
||||
|
||||
@@ -1,658 +0,0 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/buf.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/dk.h>
|
||||
#include <sys/debug.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/conf.h>
|
||||
|
||||
#define Q2(X) #X
|
||||
#define QUOTE(X) Q2((X))
|
||||
|
||||
extern struct buf *getnewbuf();
|
||||
|
||||
/*
|
||||
* Variable naming conventions
|
||||
*
|
||||
* root - this is the number of the device entry in the disks[] array
|
||||
* part - the minor number of a device entry, which represents the partition
|
||||
* number, or 0 for the whole disk
|
||||
* unit - the physical device number of a specific device type. Equates
|
||||
* to the .unit entry in the diskentry structure for a device.
|
||||
*/
|
||||
|
||||
extern int card_read(int unit, unsigned int offset, char *data, unsigned int bcount);
|
||||
extern int card_write(int unit, unsigned int offset, char *data, unsigned int bcount);
|
||||
extern int sdinit(int unit, int flag);
|
||||
extern int sddeinit(int unit);
|
||||
extern void sd_preinit(int unit);
|
||||
extern int sdopen(int unit, int flags, int mode);
|
||||
extern int sdsize(int unit);
|
||||
|
||||
#ifdef SRAMC_ENABLED
|
||||
#include <sys/rd_sramc.h>
|
||||
#endif
|
||||
#ifdef SDRAMP_ENABLED
|
||||
#include <sys/rd_sdramp.h>
|
||||
#endif
|
||||
#ifdef FLASH_ENABLED
|
||||
#include <sys/rd_flash.h>
|
||||
#endif
|
||||
#ifdef MRAMS_ENABLED
|
||||
#include <sys/rd_mrams.h>
|
||||
#endif
|
||||
#ifdef SPIRAMS_ENABLED
|
||||
#include <sys/rd_spirams.h>
|
||||
#endif
|
||||
|
||||
int no_deinit(int u) { return 0; }
|
||||
void no_preinit(int u) { return; }
|
||||
int no_init(int u, int v) { return 0; }
|
||||
int no_open(int u, int a, int b) { return 0; }
|
||||
int no_size(int u) { return 0; }
|
||||
int no_read(int u, unsigned int o, char *dat, unsigned int bs) { return 0; }
|
||||
int no_write(int u, unsigned int o, char *dat, unsigned int bs) { return 0; }
|
||||
|
||||
const struct devspec rd0devs[] = { { 0, "rd0" }, { 1, "rd0a" }, { 2, "rd0b" }, { 3, "rd0c" }, { 4, "rd0d" }, { 0, 0 } };
|
||||
const struct devspec rd1devs[] = { { 0, "rd1" }, { 1, "rd1a" }, { 2, "rd1b" }, { 3, "rd1c" }, { 4, "rd1d" }, { 0, 0 } };
|
||||
const struct devspec rd2devs[] = { { 0, "rd2" }, { 1, "rd2a" }, { 2, "rd2b" }, { 3, "rd2c" }, { 4, "rd2d" }, { 0, 0 } };
|
||||
const struct devspec rd3devs[] = { { 0, "rd3" }, { 1, "rd3a" }, { 2, "rd3b" }, { 3, "rd3c" }, { 4, "rd3d" }, { 0, 0 } };
|
||||
|
||||
// This is the list of physical storage devices on the system.
|
||||
// Uncomment the ones you want below. Maximum 4 at the moment.
|
||||
// They number, in the order of this list, rd0, rd1, rd2 and rd3.
|
||||
|
||||
const struct diskentry disks[] = {
|
||||
|
||||
{sd_preinit, sdinit, sddeinit, sdopen, sdsize, card_read, card_write, 0, RD_DEFAULT},
|
||||
|
||||
#ifdef SD1_PORT
|
||||
{sd_preinit, sdinit, sddeinit, sdopen, sdsize, card_read, card_write, 1, RD_DEFAULT},
|
||||
#endif
|
||||
|
||||
#ifdef SRAMC_ENABLED
|
||||
{sramc_init, no_init, no_deinit, sramc_open, sramc_size, sramc_read, sramc_write, 0, RD_PREPART},
|
||||
#endif
|
||||
|
||||
#ifdef SDRAMP_ENABLED
|
||||
{sdramp_preinit, no_init, no_deinit, sdramp_open, sdramp_size, sdramp_read, sdramp_write, 0, RD_PREPART},
|
||||
#endif
|
||||
|
||||
#ifdef FLASH_ENABLED
|
||||
{flash_init, no_init, no_deinit, flash_open, flash_size, flash_read, flash_write, 0, RD_READONLY},
|
||||
#endif
|
||||
|
||||
#ifdef MRAMS_ENABLED
|
||||
{mrams_preinit, no_init, no_deinit, no_open, mrams_size, mrams_read, mrams_write, 0, RD_DEFAULT},
|
||||
#endif
|
||||
|
||||
#ifdef SPIRAMS_ENABLED
|
||||
{spirams_preinit, no_init, no_deinit, no_open, spirams_size, spirams_read, spirams_write, 0, RD_DEFAULT},
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#define NRDSK sizeof(disks)/sizeof(struct diskentry)
|
||||
#define MAXDEV NRDSK-1
|
||||
|
||||
#ifdef UCB_METER
|
||||
int rddk = -1;
|
||||
#endif
|
||||
|
||||
struct diskflags dflags[NRDSK];
|
||||
|
||||
static inline struct buf *read_mbr(int root)
|
||||
{
|
||||
if (root > MAXDEV)
|
||||
return NULL;
|
||||
|
||||
int rv;
|
||||
int unit = disks[root].unit;
|
||||
|
||||
struct buf *bp = getnewbuf();
|
||||
|
||||
DEBUG8("rd%d: read mbr from device %d\n",root,unit);
|
||||
rv = disks[root].read(unit,0,bp->b_addr,512);
|
||||
if (rv == 0) {
|
||||
DEBUG8("rd%d: mbr read FAIL\n",root);
|
||||
brelse(buf);
|
||||
return NULL;
|
||||
}
|
||||
DEBUG8("rd%d: mbr read OK\n",root);
|
||||
|
||||
return bp;
|
||||
}
|
||||
|
||||
|
||||
static inline int init_device(int root,int flag)
|
||||
{
|
||||
int i, e, unit;
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
unit = disks[root].unit;
|
||||
|
||||
e = disks[root].init(unit, flag);
|
||||
if (e != 0)
|
||||
return e;
|
||||
|
||||
DEBUG8("rd%d: about to read mbr\n",root);
|
||||
bp = read_mbr(root);
|
||||
if (! bp)
|
||||
return ENXIO;
|
||||
DEBUG8("rd%d: mbr read\n", root);
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
|
||||
DEBUG5("rd%d: partition types: %02X %02X %02X %02X\n",root,
|
||||
mbr->partitions[0].type,
|
||||
mbr->partitions[1].type,
|
||||
mbr->partitions[2].type,
|
||||
mbr->partitions[3].type
|
||||
);
|
||||
DEBUG8("rd%d: partition 1 start: %p length: %p\n",root,
|
||||
mbr->partitions[0].lbastart, mbr->partitions[0].lbalength
|
||||
);
|
||||
DEBUG8("rd%d: partition 2 start: %p length: %p\n",root,
|
||||
mbr->partitions[1].lbastart, mbr->partitions[1].lbalength
|
||||
);
|
||||
DEBUG8("rd%d: partition 3 start: %p length: %p\n",root,
|
||||
mbr->partitions[2].lbastart, mbr->partitions[2].lbalength
|
||||
);
|
||||
DEBUG8("rd%d: partition 4 start: %p length: %p\n",root,
|
||||
mbr->partitions[3].lbastart, mbr->partitions[3].lbalength
|
||||
);
|
||||
|
||||
for (i=0; i<4; i++) {
|
||||
struct partition part = mbr->partitions[i];
|
||||
dflags[root].start[i] = part.lbastart >> 1;
|
||||
dflags[root].len[i] = part.lbalength >> 1;
|
||||
}
|
||||
dflags[root].blocks = disks[root].size(unit);
|
||||
brelse(bp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int deinit_device(int root)
|
||||
{
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
return disks[root].deinit(disks[root].unit);
|
||||
}
|
||||
|
||||
static inline int open_device(int root, int flag)
|
||||
{
|
||||
int e;
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
|
||||
DEBUG3("rd%d: opening\n",root);
|
||||
if (dflags[root].opens==0) {
|
||||
DEBUG3("rd%d: init device\n",root);
|
||||
e = init_device(root, flag);
|
||||
if (e != 0)
|
||||
return e;
|
||||
}
|
||||
dflags[root].opens++;
|
||||
|
||||
DEBUG3("rd%d: opened: %d\n",root,dflags[root].opens);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int close_device(int root)
|
||||
{
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
if (dflags[root].opens == 0)
|
||||
return ENXIO;
|
||||
dflags[root].opens--;
|
||||
if (dflags[root].opens == 0) {
|
||||
deinit_device(root);
|
||||
}
|
||||
DEBUG3("rd%d: closed: %d\n",root,dflags[root].opens);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rdopen(dev_t dev, int mode, int flag)
|
||||
{
|
||||
int root = major(dev);
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
|
||||
int unit = disks[root].unit;
|
||||
int e = open_device(root, flag);
|
||||
if (e != 0)
|
||||
return e;
|
||||
|
||||
e = disks[root].open(unit, mode, flag);
|
||||
if (e != 0)
|
||||
return e;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rdclose(dev_t dev, int mode, int flag)
|
||||
{
|
||||
int root = major(dev);
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
close_device(root);
|
||||
return 0;
|
||||
}
|
||||
|
||||
daddr_t rdsize(dev_t dev)
|
||||
{
|
||||
int root = major(dev);
|
||||
if (root > MAXDEV)
|
||||
return ENODEV;
|
||||
|
||||
int part = minor(dev);
|
||||
int unit = disks[root].unit;
|
||||
unsigned int blocks;
|
||||
|
||||
if (part == 0) {
|
||||
return disks[root].size(unit);
|
||||
}
|
||||
|
||||
if (rdopen(dev,0,S_SILENT) != 0)
|
||||
return 0;
|
||||
blocks = dflags[root].len[part-1];
|
||||
rdclose(dev, 0, 0);
|
||||
DEBUG3("rd%d%c: get partition size: %d\n",root,part+'a'-1,blocks);
|
||||
return blocks;
|
||||
}
|
||||
|
||||
void rdstrategy(register struct buf *bp)
|
||||
{
|
||||
int root = major(bp->b_dev);
|
||||
static int mutex = 0;
|
||||
if (root > MAXDEV)
|
||||
return;
|
||||
|
||||
mutex++;
|
||||
if (mutex > 1) {
|
||||
led_control(LED_SWAP, 1);
|
||||
} else {
|
||||
led_control(LED_DISK, 0);
|
||||
}
|
||||
|
||||
int part = minor(bp->b_dev);
|
||||
int unit = disks[root].unit;
|
||||
|
||||
int offset=0;
|
||||
int s;
|
||||
|
||||
if (part > 0)
|
||||
offset = dflags[root].start[part-1];
|
||||
|
||||
offset += (bp->b_blkno);
|
||||
|
||||
if (bp->b_dev == swapdev) {
|
||||
led_control(LED_SWAP, 1);
|
||||
} else {
|
||||
led_control(LED_DISK, 1);
|
||||
}
|
||||
|
||||
s = splbio();
|
||||
|
||||
#ifdef UCB_METER
|
||||
if (rddk >= 0) {
|
||||
dk_busy |= 1 << (rddk + root);
|
||||
dk_xfer[rddk + root]++;
|
||||
dk_bytes[rddk + root] += bp->b_bcount;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (bp->b_flags & B_READ) {
|
||||
disks[root].read(unit, offset, bp->b_addr, bp->b_bcount);
|
||||
} else {
|
||||
if (! (disks[root].settings & RD_READONLY))
|
||||
disks[root].write(unit, offset, bp->b_addr, bp->b_bcount);
|
||||
}
|
||||
|
||||
biodone(bp);
|
||||
if (bp->b_dev == swapdev) {
|
||||
led_control(LED_SWAP, 0);
|
||||
} else {
|
||||
led_control(LED_DISK, 0);
|
||||
}
|
||||
splx(s);
|
||||
mutex--;
|
||||
}
|
||||
|
||||
void update_mbr(int unit)
|
||||
{
|
||||
//TODO
|
||||
}
|
||||
|
||||
int rdioctl (dev_t dev, register u_int cmd, caddr_t addr, int flag)
|
||||
{
|
||||
int *val;
|
||||
|
||||
val = (int *)addr;
|
||||
|
||||
if (cmd == RDGETMEDIASIZE) {
|
||||
*val = rdsize(dev);
|
||||
}
|
||||
if (cmd == RDREINIT) {
|
||||
bflush(major(dev));
|
||||
init_device(major(dev), S_SILENT);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rdisk_init()
|
||||
{
|
||||
int i;
|
||||
|
||||
//printf("Prepartition Schema: %s\n",prepartition_schema);
|
||||
|
||||
#ifdef UCB_METER
|
||||
dk_alloc(&rddk, NRDSK, "rd");
|
||||
#endif
|
||||
|
||||
for (i=0; i<NRDSK; i++) {
|
||||
disks[i].pre_init(disks[i].unit);
|
||||
if (disks[i].settings & RD_PREPART) {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rdisk_list_partitions(unsigned char type)
|
||||
{
|
||||
int i,j;
|
||||
int e;
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
|
||||
for (i=0; i<NRDSK; i++) {
|
||||
e = init_device(i, S_SILENT);
|
||||
if (e != 0)
|
||||
continue;
|
||||
|
||||
printf("Disk: rd%d: %d KB\n", i, rdsize(makedev(i, 0)));
|
||||
bp = read_mbr(i);
|
||||
if (! bp)
|
||||
continue;
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
for (j=1; j<5; j++) {
|
||||
if (mbr->partitions[j-1].type == type) {
|
||||
printf(" rd%d%c: %d KB\n",i,'a'+j-1,rdsize(makedev(i,j)));
|
||||
}
|
||||
}
|
||||
brelse(bp);
|
||||
}
|
||||
}
|
||||
|
||||
int rdisk_num_disks()
|
||||
{
|
||||
return NRDSK;
|
||||
}
|
||||
|
||||
dev_t get_boot_device()
|
||||
{
|
||||
// If a root device has been specified, then we can short cut all this and just
|
||||
// use that device.
|
||||
#ifdef ROOT
|
||||
return ROOT;
|
||||
#else
|
||||
dev_t bd = -1;
|
||||
int i, j, e;
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
|
||||
for (i=0; i<NRDSK; i++) {
|
||||
e = rdopen(makedev(i, 0), 0, S_SILENT);
|
||||
if (e == 0) {
|
||||
bp = read_mbr(i);
|
||||
if (bp) {
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
|
||||
for (j=0; j<4; j++) {
|
||||
if (mbr->partitions[j].type == RDISK_FS) {
|
||||
if (mbr->partitions[j].status & P_ACTIVE) {
|
||||
brelse(bp);
|
||||
rdclose(makedev(i, 0), 0, 0);
|
||||
return makedev(i, j+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
brelse(bp);
|
||||
}
|
||||
rdclose(makedev(i, 0), 0, 0);
|
||||
}
|
||||
}
|
||||
return bd;
|
||||
#endif
|
||||
}
|
||||
|
||||
dev_t get_swap_device()
|
||||
{
|
||||
// If a swap device has been specified, then we can short cut all this and just
|
||||
// use that device.
|
||||
#ifdef SWAP
|
||||
return SWAP;
|
||||
#else
|
||||
|
||||
dev_t bd = -1;
|
||||
int i, j, e;
|
||||
unsigned int max_size = 0;
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
|
||||
// First we look for the first active swap device
|
||||
|
||||
for (i=0; i<NRDSK; i++) {
|
||||
e = rdopen(makedev(i, 0), 0, S_SILENT);
|
||||
if (e == 0) {
|
||||
bp = read_mbr(i);
|
||||
if (bp) {
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
|
||||
for (j=0; j<4; j++) {
|
||||
if (mbr->partitions[j].type == RDISK_SWAP) {
|
||||
// If this partition is the biggest so far
|
||||
// then store it. We'll use this if
|
||||
// there is no active partition.
|
||||
if (mbr->partitions[j].lbalength > max_size) {
|
||||
max_size = mbr->partitions[j].lbalength;
|
||||
bd = makedev(i, j+1);
|
||||
}
|
||||
|
||||
// If it is active, then use it.
|
||||
if (mbr->partitions[j].status & P_ACTIVE) {
|
||||
brelse(bp);
|
||||
rdclose(makedev(i, 0), 0, 0);
|
||||
return makedev(i, j+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
brelse(bp);
|
||||
}
|
||||
rdclose(makedev(i, 0), 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// There is no active partition, so we'll use the biggest one we found.
|
||||
return bd;
|
||||
#endif
|
||||
}
|
||||
|
||||
unsigned char partition_type(dev_t dev)
|
||||
{
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
unsigned char pt;
|
||||
|
||||
if (minor(dev)<1 || minor(dev)>4)
|
||||
return 0;
|
||||
|
||||
if (rdopen(dev,0,S_SILENT) == 0) {
|
||||
bp = read_mbr(major(dev));
|
||||
rdclose(dev, 0, 0);
|
||||
if (! bp) {
|
||||
brelse(bp);
|
||||
return 0;
|
||||
}
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
pt = mbr->partitions[minor(dev)-1].type;
|
||||
brelse(bp);
|
||||
return pt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int atoi(char *s)
|
||||
{
|
||||
int i = 0;
|
||||
char *q;
|
||||
|
||||
for (q=s; *q; q++) {
|
||||
if (*q < '0' || *q > '9') {
|
||||
return i;
|
||||
}
|
||||
i = i * 10;
|
||||
i += *q - '0';
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
int strcmp(char *s1, char *s2)
|
||||
{
|
||||
char *p1,*p2;
|
||||
p1 = s1;
|
||||
p2 = s2;
|
||||
|
||||
while (*p1 && *p2) {
|
||||
if (*p1 < *p2)
|
||||
return -1;
|
||||
if (*p1 > *p2)
|
||||
return 1;
|
||||
p1++;
|
||||
p2++;
|
||||
}
|
||||
if (*p1 < *p2)
|
||||
return -1;
|
||||
if (*p1 > *p2)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prepartition format:
|
||||
* mrams0:fs@1024,swap@2048,fs@1022 sdramp0:...
|
||||
*/
|
||||
struct buf *prepartition_device(char *devname)
|
||||
{
|
||||
|
||||
#ifndef PARTITION
|
||||
char *prepartition_schema = "";
|
||||
#else
|
||||
char *prepartition_schema = (char *)QUOTE(PARTITION);
|
||||
#endif
|
||||
char *p,*q;
|
||||
struct buf *bp;
|
||||
struct mbr *mbr;
|
||||
int pnum = 0;
|
||||
int start = 2;
|
||||
char dev[9];
|
||||
char size[9];
|
||||
char type[5];
|
||||
int pos = 0;
|
||||
|
||||
p = prepartition_schema+1;
|
||||
q = p;
|
||||
|
||||
printf("PP Schema: %s\n",prepartition_schema);
|
||||
|
||||
bp = getnewbuf();
|
||||
if (! bp) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
mbr = (struct mbr *)bp->b_addr;
|
||||
|
||||
while (*p) {
|
||||
while (*q && *q != ' ')
|
||||
q++;
|
||||
if (*q == ' ') {
|
||||
*q = 0;
|
||||
q++;
|
||||
}
|
||||
|
||||
pos = 0;
|
||||
while (*p && *p != ':') {
|
||||
dev[pos++] = *p;
|
||||
dev[pos] = 0;
|
||||
p++;
|
||||
}
|
||||
|
||||
if (*p == ':') {
|
||||
p++;
|
||||
} else {
|
||||
printf("Device Format Error (%c)\n",*p);
|
||||
brelse(bp);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
while (*p && *p != ' ') {
|
||||
pos = 0;
|
||||
while (*p && *p != '@') {
|
||||
type[pos++] = *p;
|
||||
type[pos] = 0;
|
||||
p++;
|
||||
}
|
||||
|
||||
if (*p == '@') {
|
||||
p++;
|
||||
} else {
|
||||
printf("Type Format Error\n");
|
||||
brelse(bp);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pos = 0;
|
||||
while (*p && *p != ',' && *p != ' ' && *p != ')') {
|
||||
size[pos++] = *p;
|
||||
size[pos] = 0;
|
||||
p++;
|
||||
}
|
||||
|
||||
printf("Found partition on %s of type %s and size %s\n",
|
||||
dev,type,size);
|
||||
|
||||
if (strcmp(dev, devname) == 0) {
|
||||
if (strcmp("sw", type) == 0)
|
||||
mbr->partitions[pnum].type = RDISK_SWAP;
|
||||
|
||||
if (strcmp("sa", type) == 0) {
|
||||
mbr->partitions[pnum].type = RDISK_SWAP;
|
||||
mbr->partitions[pnum].status = 0x80;
|
||||
}
|
||||
if (strcmp("fs", type) == 0)
|
||||
mbr->partitions[pnum].type = RDISK_FS;
|
||||
|
||||
mbr->partitions[pnum].lbastart = start;
|
||||
mbr->partitions[pnum].lbalength = atoi(size)<<1;
|
||||
start += mbr->partitions[pnum].lbalength;
|
||||
pnum++;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
if (pnum > 0) {
|
||||
mbr->bootsig = 0xAA55;
|
||||
mbr->biosdrive = 0x80;
|
||||
mbr->sig = 'R'<<24 | 'T'<<16 | 'E'<<8 | 'R';
|
||||
return bp;
|
||||
}
|
||||
|
||||
brelse(bp);
|
||||
return NULL;
|
||||
}
|
||||
@@ -59,15 +59,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o pwm.o rd_sd.o rd_sdramp.o sdram.o spi.o \
|
||||
spi_bus.o uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o pwm.o \
|
||||
sd.o rd_sdramp.o sdram.o spi.o spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -79,20 +78,20 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
$S/kernel/vm_swp.c $S/pic32/clock.c $S/pic32/cons.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/pwm.c $S/pic32/rd_sd.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/pwm.c $S/pic32/sd.c \
|
||||
$S/pic32/rd_sdramp.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c swapunix.c
|
||||
|
||||
@@ -224,9 +223,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -335,7 +331,7 @@ adc.o: $S/pic32/adc.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sdramp.o: $S/pic32/rd_sdramp.c
|
||||
|
||||
@@ -50,14 +50,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o rd_sd.o spi.o spi_bus.o uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o sd.o spi.o \
|
||||
spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -69,20 +69,20 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
$S/kernel/vm_swp.c $S/pic32/clock.c $S/pic32/cons.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/rd_sd.c $S/pic32/spi.c \
|
||||
$S/pic32/sysctl.c $S/pic32/sd.c $S/pic32/spi.c \
|
||||
$S/pic32/spi_bus.c $S/pic32/uart.c swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
@@ -213,9 +213,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -318,7 +315,7 @@ swap.o: $S/pic32/swap.c
|
||||
sysctl.o: $S/pic32/sysctl.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include <sys/clist.h>
|
||||
#include <sys/tty.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/uart.h>
|
||||
#include <sys/spi.h>
|
||||
@@ -24,6 +23,9 @@
|
||||
|
||||
extern int strcmp(char *s1, char *s2);
|
||||
|
||||
#ifdef SD_ENABLED
|
||||
# include <machine/sd.h>
|
||||
#endif
|
||||
#ifdef UARTUSB_ENABLED
|
||||
# include <sys/usb_uart.h>
|
||||
#endif
|
||||
@@ -53,27 +55,27 @@ extern int strcmp(char *s1, char *s2);
|
||||
* Null routine; placed in insignificant entries
|
||||
* in the bdevsw and cdevsw tables.
|
||||
*/
|
||||
static int nulldev ()
|
||||
int nulldev()
|
||||
{
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int noopen (dev, flag, mode)
|
||||
int noopen(dev, flag, mode)
|
||||
dev_t dev;
|
||||
int flag, mode;
|
||||
{
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
static int norw (dev, uio, flag)
|
||||
int norw(dev, uio, flag)
|
||||
dev_t dev;
|
||||
struct uio *uio;
|
||||
int flag;
|
||||
{
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int noioctl (dev, cmd, data, flag)
|
||||
int noioctl(dev, cmd, data, flag)
|
||||
dev_t dev;
|
||||
u_int cmd;
|
||||
caddr_t data;
|
||||
@@ -85,12 +87,16 @@ static int noioctl (dev, cmd, data, flag)
|
||||
/*
|
||||
* root attach routine
|
||||
*/
|
||||
static void noroot (csr)
|
||||
caddr_t csr;
|
||||
daddr_t nosize(dev)
|
||||
dev_t dev;
|
||||
{
|
||||
/* Empty. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define NOBDEV \
|
||||
noopen, noopen, nostrategy, \
|
||||
nosize, noioctl, 0
|
||||
|
||||
/*
|
||||
* The RetroDisks require the same master number as the disk entry in the
|
||||
* rdisk.c file. A bit of a bind, but it means that the RetroDisk
|
||||
@@ -98,24 +104,25 @@ static void noroot (csr)
|
||||
*/
|
||||
const struct bdevsw bdevsw[] = {
|
||||
{ /* 0 - rd0 */
|
||||
rdopen, rdclose, rdstrategy,
|
||||
noroot, rdsize, rdioctl, 0, rd0devs
|
||||
#ifdef SD_ENABLED
|
||||
sdopen, sdclose, sdstrategy,
|
||||
sdsize, sdioctl, sddevs
|
||||
#else
|
||||
NOBDEV
|
||||
#endif
|
||||
},
|
||||
{ /* 1 - rd1 */
|
||||
rdopen, rdclose, rdstrategy,
|
||||
noroot, rdsize, rdioctl, 0, rd1devs
|
||||
NOBDEV
|
||||
},
|
||||
{ /* 2 - rd2 */
|
||||
rdopen, rdclose, rdstrategy,
|
||||
noroot, rdsize, rdioctl, 0, rd2devs
|
||||
NOBDEV
|
||||
},
|
||||
{ /* 3 - rd3 */
|
||||
rdopen, rdclose, rdstrategy,
|
||||
noroot, rdsize, rdioctl, 0, rd3devs
|
||||
NOBDEV
|
||||
},
|
||||
{ /* 4 - swap */
|
||||
swopen, swclose, swstrategy,
|
||||
noroot, swsize, swcioctl, 0, swapbdevs
|
||||
swsize, swcioctl, swapbdevs
|
||||
},
|
||||
|
||||
{ 0 },
|
||||
@@ -311,8 +318,8 @@ iskmemdev(dev)
|
||||
register dev_t dev;
|
||||
{
|
||||
if (major(dev) == 1 && (minor(dev) == 0 || minor(dev) == 1))
|
||||
return (1);
|
||||
return (0);
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -334,9 +341,9 @@ isdisk(dev, type)
|
||||
case 2: /* rd2 */
|
||||
case 3: /* rd3 */
|
||||
case 4: /* sw */
|
||||
return (1);
|
||||
return 1;
|
||||
default:
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
/* NOTREACHED */
|
||||
}
|
||||
@@ -348,9 +355,10 @@ isdisk(dev, type)
|
||||
int
|
||||
chrtoblk(dev_t dev)
|
||||
{
|
||||
return (NODEV);
|
||||
return NODEV;
|
||||
}
|
||||
|
||||
#if 0
|
||||
char *cdevname(dev_t dev)
|
||||
{
|
||||
int maj = major(dev);
|
||||
@@ -367,3 +375,4 @@ char *cdevname(dev_t dev)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -59,15 +59,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -79,13 +79,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -93,7 +93,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -225,9 +225,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -339,7 +336,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,7 +92,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -60,15 +60,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -80,13 +79,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -94,8 +93,8 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -225,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -339,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -24,7 +24,7 @@ kernel/kern_subr.c standard
|
||||
kernel/kern_synch.c standard
|
||||
kernel/kern_sysctl.c standard
|
||||
kernel/kern_time.c standard
|
||||
kernel/rdisk.c standard
|
||||
#kernel/rdisk.c standard
|
||||
kernel/subr_log.c optional log
|
||||
kernel/subr_prf.c standard
|
||||
kernel/subr_rmap.c standard
|
||||
@@ -77,7 +77,7 @@ pic32/picga.c optional picga
|
||||
pic32/power_control.c optional power
|
||||
pic32/pwm.c optional pwm
|
||||
pic32/rd_mrams.c optional mrams
|
||||
pic32/rd_sd.c optional sd
|
||||
pic32/sd.c optional sd
|
||||
pic32/rd_sdramp.c optional sdramp
|
||||
pic32/rd_spirams.c optional spirams
|
||||
pic32/rd_sramc.c optional sramc
|
||||
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,9 +92,9 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c $S/pic32/usb_device.c \
|
||||
$S/pic32/usb_function_cdc.c $S/pic32/usb_uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -59,15 +59,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -79,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -93,8 +92,8 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -224,9 +223,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +334,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,7 +92,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,7 +92,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -62,15 +62,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -82,13 +82,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -96,9 +96,9 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c $S/pic32/usb_device.c \
|
||||
$S/pic32/usb_function_cdc.c $S/pic32/usb_uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -228,9 +228,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -342,7 +339,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -50,15 +50,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o hx8357.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
hx8357.o pwm.o sd.o spi.o spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -70,13 +69,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -84,8 +83,8 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/hx8357.c \
|
||||
$S/pic32/pwm.c $S/pic32/rd_sd.c $S/pic32/spi.c \
|
||||
$S/pic32/spi_bus.c $S/pic32/uart.c swapunix.c
|
||||
$S/pic32/pwm.c $S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -215,9 +214,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -329,7 +325,7 @@ hx8357.o: $S/pic32/hx8357.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -56,15 +56,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -76,13 +76,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -90,7 +90,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -222,9 +222,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -336,7 +333,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -34,10 +34,11 @@
|
||||
#include <sys/buf.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/dk.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/disk.h>
|
||||
#include <sys/spi.h>
|
||||
#include <sys/debug.h>
|
||||
#include <sys/kconfig.h>
|
||||
#include <machine/sd.h>
|
||||
|
||||
/*
|
||||
* Two SD/MMC disks on SPI.
|
||||
@@ -66,9 +67,38 @@
|
||||
#define TIMO_SEND_CSD 6000
|
||||
#define TIMO_WAIT_WSTOP 5000
|
||||
|
||||
int sd_type[NSD]; /* Card type */
|
||||
struct spiio sd_io[NSD]; /* Data for SPI driver */
|
||||
int sd_dkn = -1; /* Statistics slot number */
|
||||
#define sdunit(dev) ((minor(dev) & 8) >> 3)
|
||||
#define sdpart(dev) ((minor(dev) & 7))
|
||||
#define RAWPART 0 /* 'x' partition */
|
||||
|
||||
#define NPARTITIONS 4
|
||||
#define MBR_MAGIC 0xaa55
|
||||
|
||||
/*
|
||||
* Driver's data per disk drive.
|
||||
*/
|
||||
struct disk {
|
||||
/*
|
||||
* Partition table.
|
||||
*/
|
||||
struct diskpart part[NPARTITIONS+1];
|
||||
|
||||
/*
|
||||
* Card type.
|
||||
*/
|
||||
int card_type;
|
||||
#define TYPE_UNKNOWN 0
|
||||
#define TYPE_SD_LEGACY 1
|
||||
#define TYPE_SD_II 2
|
||||
#define TYPE_SDHC 3
|
||||
|
||||
struct spiio spiio; /* interface to SPI port */
|
||||
int label_writable; /* is sector 0 writable? */
|
||||
int dkindex; /* disk index for statistics */
|
||||
u_int openpart; /* all partitions open on this drive */
|
||||
};
|
||||
|
||||
struct disk sddrives[NSD]; /* Table of units */
|
||||
|
||||
int sd_timo_cmd; /* Max timeouts, for sysctl */
|
||||
int sd_timo_send_op;
|
||||
@@ -105,8 +135,17 @@ int sd_timo_wait_widle;
|
||||
#define STOP_TRAN_TOKEN 0xFD /* stop token for write multiple */
|
||||
#define WRITE_MULTIPLE_TOKEN 0xFC /* start data for write multiple */
|
||||
|
||||
// Add extra clocks after a deselect
|
||||
void sd_deselect(struct spiio *io)
|
||||
const struct devspec sddevs[] = {
|
||||
{ 0, "sd0" },
|
||||
{ 1, "sd0a" }, { 2, "sd0b" }, { 3, "sd0c" }, { 4, "sd0d" },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
/*
|
||||
* Release the card's /CS signal.
|
||||
* Add extra clocks after a deselect.
|
||||
*/
|
||||
static void card_release(struct spiio *io)
|
||||
{
|
||||
spi_deselect(io);
|
||||
spi_transfer(io, 0xFF);
|
||||
@@ -115,11 +154,10 @@ void sd_deselect(struct spiio *io)
|
||||
/*
|
||||
* Wait while busy, up to 300 msec.
|
||||
*/
|
||||
|
||||
static void spi_wait_ready (int unit, int limit, int *maxcount)
|
||||
static void card_wait_ready(int unit, int limit, int *maxcount)
|
||||
{
|
||||
int i;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
|
||||
spi_transfer(io, 0xFF);
|
||||
for (i=0; i<limit; i++)
|
||||
@@ -154,11 +192,11 @@ static void spi_wait_ready (int unit, int limit, int *maxcount)
|
||||
static int card_cmd(unsigned int unit, unsigned int cmd, unsigned int addr)
|
||||
{
|
||||
int i, reply;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
|
||||
/* Wait for not busy, up to 300 msec. */
|
||||
if (cmd != CMD_GO_IDLE)
|
||||
spi_wait_ready(unit, TIMO_WAIT_CMD, &sd_timo_wait_cmd);
|
||||
card_wait_ready(unit, TIMO_WAIT_CMD, &sd_timo_wait_cmd);
|
||||
|
||||
/* Send a comand packet (6 bytes). */
|
||||
spi_transfer(io, cmd | 0x40);
|
||||
@@ -199,21 +237,21 @@ static int card_cmd(unsigned int unit, unsigned int cmd, unsigned int addr)
|
||||
* Initialize a card.
|
||||
* Return nonzero if successful.
|
||||
*/
|
||||
int card_init(int unit)
|
||||
static int card_init(int unit)
|
||||
{
|
||||
int i, reply;
|
||||
unsigned char response[4];
|
||||
int timeout = 4;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
/* Slow speed: 250 kHz */
|
||||
spi_brg(io, 250);
|
||||
|
||||
sd_type[unit] = 0;
|
||||
|
||||
du->card_type = TYPE_UNKNOWN;
|
||||
do {
|
||||
/* Unselect the card. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
|
||||
/* Send 80 clock cycles for start up. */
|
||||
for (i=0; i<10; i++)
|
||||
@@ -224,9 +262,9 @@ int card_init(int unit)
|
||||
timeout--;
|
||||
reply = card_cmd(unit, CMD_GO_IDLE, 0);
|
||||
|
||||
} while ((reply != 0x01) && (timeout != 0));
|
||||
} while (reply != 1 && timeout != 0);
|
||||
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
if (reply != 1)
|
||||
{
|
||||
/* It must return Idle. */
|
||||
@@ -239,21 +277,21 @@ int card_init(int unit)
|
||||
if (reply & 4)
|
||||
{
|
||||
/* Illegal command: card type 1. */
|
||||
sd_deselect(io);
|
||||
sd_type[unit] = 1;
|
||||
card_release(io);
|
||||
du->card_type = TYPE_SD_LEGACY;
|
||||
} else {
|
||||
response[0] = spi_transfer(io, 0xFF);
|
||||
response[1] = spi_transfer(io, 0xFF);
|
||||
response[2] = spi_transfer(io, 0xFF);
|
||||
response[3] = spi_transfer(io, 0xFF);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
if (response[3] != 0xAA)
|
||||
{
|
||||
printf("sd%d: cannot detect card type, response=%02x-%02x-%02x-%02x\n",
|
||||
unit, response[0], response[1], response[2], response[3]);
|
||||
return 0;
|
||||
}
|
||||
sd_type[unit] = 2;
|
||||
du->card_type = TYPE_SD_II;
|
||||
}
|
||||
|
||||
/* Send repeatedly SEND_OP until Idle terminates. */
|
||||
@@ -262,7 +300,7 @@ int card_init(int unit)
|
||||
spi_select(io);
|
||||
card_cmd(unit, CMD_APP, 0);
|
||||
reply = card_cmd(unit, CMD_SEND_OP_SDC,
|
||||
(sd_type[unit] == 2) ? 0x40000000 : 0);
|
||||
(du->card_type == TYPE_SD_II) ? 0x40000000 : 0);
|
||||
spi_select(io);
|
||||
if (reply == 0)
|
||||
break;
|
||||
@@ -277,13 +315,13 @@ int card_init(int unit)
|
||||
sd_timo_send_op = i;
|
||||
|
||||
/* If SD2 read OCR register to check for SDHC card. */
|
||||
if (sd_type[unit] == 2)
|
||||
if (du->card_type == TYPE_SD_II)
|
||||
{
|
||||
spi_select(io);
|
||||
reply = card_cmd(unit, CMD_READ_OCR, 0);
|
||||
if (reply != 0)
|
||||
{
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
printf("sd%d: READ_OCR failed, reply=%02x\n", unit, reply);
|
||||
return 0;
|
||||
}
|
||||
@@ -291,10 +329,10 @@ int card_init(int unit)
|
||||
response[1] = spi_transfer(io, 0xFF);
|
||||
response[2] = spi_transfer(io, 0xFF);
|
||||
response[3] = spi_transfer(io, 0xFF);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
if ((response[0] & 0xC0) == 0xC0)
|
||||
{
|
||||
sd_type[unit] = 3;
|
||||
du->card_type = TYPE_SDHC;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,35 +342,33 @@ int card_init(int unit)
|
||||
}
|
||||
|
||||
/*
|
||||
* Get number of sectors on the disk.
|
||||
* Get disk size in kbytes.
|
||||
* Return nonzero if successful.
|
||||
*/
|
||||
int sdsize(int unit)
|
||||
static int card_size(int unit)
|
||||
{
|
||||
unsigned char csd [16];
|
||||
unsigned csize, n;
|
||||
int reply, i;
|
||||
int nsectors;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
|
||||
spi_select(io);
|
||||
reply = card_cmd(unit, CMD_SEND_CSD, 0);
|
||||
if (reply != 0)
|
||||
{
|
||||
if (reply != 0) {
|
||||
/* Command rejected. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wait for a response. */
|
||||
for (i=0; ; i++)
|
||||
{
|
||||
for (i=0; ; i++) {
|
||||
reply = spi_transfer(io, 0xFF);
|
||||
if (reply == DATA_START_BLOCK)
|
||||
break;
|
||||
if (i >= TIMO_SEND_CSD)
|
||||
{
|
||||
if (i >= TIMO_SEND_CSD) {
|
||||
/* Command timed out. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
printf("sd%d: card_size: SEND_CSD timed out, reply = %d\n",
|
||||
unit, reply);
|
||||
return 0;
|
||||
@@ -342,8 +378,7 @@ int sdsize(int unit)
|
||||
sd_timo_send_csd = i;
|
||||
|
||||
/* Read data. */
|
||||
for (i=0; i<sizeof(csd); i++)
|
||||
{
|
||||
for (i=0; i<sizeof(csd); i++) {
|
||||
csd [i] = spi_transfer(io, 0xFF);
|
||||
}
|
||||
/* Ignore CRC. */
|
||||
@@ -351,12 +386,11 @@ int sdsize(int unit)
|
||||
spi_transfer(io, 0xFF);
|
||||
|
||||
/* Disable the card. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
|
||||
/* CSD register has different structure
|
||||
* depending upon protocol version. */
|
||||
switch (csd[0] >> 6)
|
||||
{
|
||||
switch (csd[0] >> 6) {
|
||||
case 1: /* SDC ver 2.00 */
|
||||
csize = csd[9] + (csd[8] << 8) + 1;
|
||||
nsectors = csize << 10;
|
||||
@@ -376,14 +410,15 @@ int sdsize(int unit)
|
||||
* Read a block of data.
|
||||
* Return nonzero if successful.
|
||||
*/
|
||||
int card_read(int unit, unsigned int offset, char *data, unsigned int bcount)
|
||||
static int card_read(int unit, unsigned int offset, char *data, unsigned int bcount)
|
||||
{
|
||||
int reply, i;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
/* Send read-multiple command. */
|
||||
spi_select(io);
|
||||
if (sd_type[unit] != 3)
|
||||
if (du->card_type != TYPE_SDHC)
|
||||
offset <<= 9;
|
||||
reply = card_cmd(unit, CMD_READ_MULTIPLE, offset<<1);
|
||||
if (reply != 0)
|
||||
@@ -391,7 +426,7 @@ int card_read(int unit, unsigned int offset, char *data, unsigned int bcount)
|
||||
/* Command rejected. */
|
||||
printf("sd%d: card_read: bad READ_MULTIPLE reply = %d, offset = %08x\n",
|
||||
unit, reply, offset<<1);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -409,7 +444,7 @@ again:
|
||||
/* Command timed out. */
|
||||
printf("sd%d: card_read: READ_MULTIPLE timed out, reply = %d\n",
|
||||
unit, reply);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -440,7 +475,7 @@ again:
|
||||
|
||||
/* Stop a read-multiple sequence. */
|
||||
card_cmd(unit, CMD_STOP, 0);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -448,11 +483,11 @@ again:
|
||||
* Write a block of data.
|
||||
* Return nonzero if successful.
|
||||
*/
|
||||
int
|
||||
card_write (int unit, unsigned offset, char *data, unsigned bcount)
|
||||
static int card_write(int unit, unsigned offset, char *data, unsigned bcount)
|
||||
{
|
||||
unsigned reply, i;
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
/* Send pre-erase count. */
|
||||
spi_select(io);
|
||||
@@ -461,27 +496,28 @@ card_write (int unit, unsigned offset, char *data, unsigned bcount)
|
||||
if (reply != 0)
|
||||
{
|
||||
/* Command rejected. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
printf("sd%d: card_write: bad SET_WBECNT reply = %02x, count = %u\n",
|
||||
unit, reply, (bcount + SECTSIZE - 1) / SECTSIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Send write-multiple command. */
|
||||
if (sd_type[unit] != 3) offset <<= 9;
|
||||
if (du->card_type != TYPE_SDHC)
|
||||
offset <<= 9;
|
||||
reply = card_cmd(unit, CMD_WRITE_MULTIPLE, offset<<1);
|
||||
if (reply != 0)
|
||||
{
|
||||
/* Command rejected. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
printf("sd%d: card_write: bad WRITE_MULTIPLE reply = %02x\n", unit, reply);
|
||||
return 0;
|
||||
}
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
again:
|
||||
/* Select, wait while busy. */
|
||||
spi_select(io);
|
||||
spi_wait_ready(unit, TIMO_WAIT_WDATA, &sd_timo_wait_wdata);
|
||||
card_wait_ready(unit, TIMO_WAIT_WDATA, &sd_timo_wait_wdata);
|
||||
|
||||
/* Send data. */
|
||||
spi_transfer(io, WRITE_MULTIPLE_TOKEN);
|
||||
@@ -504,16 +540,16 @@ again:
|
||||
if ((reply & 0x1f) != 0x05)
|
||||
{
|
||||
/* Data rejected. */
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
printf("sd%d: card_write: data rejected, reply = %02x\n", unit, reply);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wait for write completion. */
|
||||
int x = spl0();
|
||||
spi_wait_ready(unit, TIMO_WAIT_WDONE, &sd_timo_wait_wdone);
|
||||
card_wait_ready(unit, TIMO_WAIT_WDONE, &sd_timo_wait_wdone);
|
||||
splx(x);
|
||||
sd_deselect(io);
|
||||
card_release(io);
|
||||
|
||||
if (bcount > SECTSIZE)
|
||||
{
|
||||
@@ -524,24 +560,21 @@ again:
|
||||
|
||||
/* Stop a write-multiple sequence. */
|
||||
spi_select(io);
|
||||
spi_wait_ready(unit, TIMO_WAIT_WSTOP, &sd_timo_wait_wstop);
|
||||
card_wait_ready(unit, TIMO_WAIT_WSTOP, &sd_timo_wait_wstop);
|
||||
spi_transfer(io, STOP_TRAN_TOKEN);
|
||||
spi_wait_ready(unit, TIMO_WAIT_WIDLE, &sd_timo_wait_widle);
|
||||
sd_deselect(io);
|
||||
card_wait_ready(unit, TIMO_WAIT_WIDLE, &sd_timo_wait_widle);
|
||||
card_release(io);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sd_preinit (int unit)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* Detect a card.
|
||||
*/
|
||||
int sdinit (int unit, int flag)
|
||||
static int sd_setup(int unit)
|
||||
{
|
||||
struct spiio *io = &sd_io[unit];
|
||||
unsigned nsectors;
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
struct disk *du = &sddrives[unit];
|
||||
u_short buf[256];
|
||||
|
||||
#ifdef SD0_ENA_PORT
|
||||
/* On Duinomite Mega board, pin B13 set low
|
||||
@@ -561,34 +594,64 @@ int sdinit (int unit, int flag)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!card_init(unit))
|
||||
{
|
||||
if (! card_init(unit)) {
|
||||
printf("sd%d: no SD/MMC card detected\n", unit);
|
||||
return ENODEV;
|
||||
}
|
||||
if ((nsectors=sdsize(unit))==0)
|
||||
{
|
||||
printf ("sd%d: cannot get card size\n", unit);
|
||||
return ENODEV;
|
||||
}
|
||||
if (! (flag & S_SILENT))
|
||||
{
|
||||
printf ("sd%d: type %s, size %u kbytes, speed %u Mbit/sec\n", unit,
|
||||
sd_type[unit]==3 ? "SDHC" :
|
||||
sd_type[unit]==2 ? "II" : "I",
|
||||
nsectors,
|
||||
spi_get_brg(io) / 1000);
|
||||
}
|
||||
DEBUG("sd%d: init done\n",unit);
|
||||
return 0;
|
||||
}
|
||||
/* Get the size of raw partition. */
|
||||
bzero(du->part, sizeof(du->part));
|
||||
du->part[RAWPART].dp_offset = 0;
|
||||
du->part[RAWPART].dp_size = card_size(unit);
|
||||
if (du->part[RAWPART].dp_size == 0) {
|
||||
printf("sd%d: cannot get card size\n", unit);
|
||||
return 0;
|
||||
}
|
||||
printf("sd%d: type %s, size %u kbytes, speed %u Mbit/sec\n", unit,
|
||||
(du->card_type == TYPE_SDHC) ? "SDHC" :
|
||||
(du->card_type == TYPE_SD_II) ? "II" : "I",
|
||||
du->part[RAWPART].dp_size / 2,
|
||||
spi_get_brg(io) / 1000);
|
||||
|
||||
int sddeinit(int unit)
|
||||
/* Read partition table. */
|
||||
int s = splbio();
|
||||
if (! card_read(unit, 0, (char*)buf, sizeof(buf))) {
|
||||
splx(s);
|
||||
printf("sd%d: cannot read partition table\n", unit);
|
||||
return 0;
|
||||
}
|
||||
splx(s);
|
||||
if (buf[255] == MBR_MAGIC) {
|
||||
bcopy(&buf[223], &du->part[1], 64);
|
||||
#if 1
|
||||
int i;
|
||||
for (i=1; i<=NPARTITIONS; i++) {
|
||||
if (du->part[i].dp_type != 0)
|
||||
printf("sd%d%c: partition type %02x, sector %u, size %u kbytes\n",
|
||||
unit, i+'a'-1, du->part[i].dp_type,
|
||||
du->part[i].dp_offset,
|
||||
du->part[i].dp_size / 2);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable power to the SD card.
|
||||
*/
|
||||
static void sd_release(int unit)
|
||||
{
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
/* Forget the partition table. */
|
||||
du->part[RAWPART].dp_size = 0;
|
||||
|
||||
#ifdef SD0_ENA_PORT
|
||||
/* On Duinomite Mega board, pin B13 set low
|
||||
* enables a +3.3V power to SD card. */
|
||||
if (unit == 0) {
|
||||
/* Enable SD0 phy - pin is assumed to be active low */
|
||||
TRIS_CLR(SD0_ENA_PORT) = 1 << SD0_ENA_PIN;
|
||||
LAT_SET(SD0_ENA_PORT) = 1 << SD0_ENA_PIN;
|
||||
udelay(1000);
|
||||
}
|
||||
@@ -598,30 +661,223 @@ int sddeinit(int unit)
|
||||
/* On Duinomite Mega board, pin B13 set low
|
||||
* enables a +3.3V power to SD card. */
|
||||
if (unit == 1) {
|
||||
/* Enable SD1 phy - pin is assumed to be active low */
|
||||
TRIS_CLR(SD1_ENA_PORT) = 1 << SD1_ENA_PIN;
|
||||
LAT_SET(SD1_ENA_PORT) = 1 << SD1_ENA_PIN;
|
||||
udelay(1000);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int sdopen(dev_t dev, int flags, int mode)
|
||||
{
|
||||
int unit = sdunit(dev);
|
||||
int part = sdpart(dev);
|
||||
struct disk *du = &sddrives[unit];
|
||||
unsigned mask, i;
|
||||
|
||||
if (unit >= NSD || part > NPARTITIONS)
|
||||
return ENXIO;
|
||||
|
||||
/*
|
||||
* Setup the SD card interface.
|
||||
*/
|
||||
if (du->part[RAWPART].dp_size == 0) {
|
||||
if (! sd_setup(unit)) {
|
||||
return ENODEV;
|
||||
}
|
||||
}
|
||||
mask = 1 << part;
|
||||
|
||||
/*
|
||||
* Warn if a partion is opened
|
||||
* that overlaps another partition which is open
|
||||
* unless one is the "raw" partition (whole disk).
|
||||
*/
|
||||
if (part != RAWPART && (du->openpart & mask) == 0) {
|
||||
unsigned start = du->part[part].dp_offset;
|
||||
unsigned end = start + du->part[part].dp_size;
|
||||
|
||||
/* Check for overlapped partitions. */
|
||||
for (i=0; i<=NPARTITIONS; i++) {
|
||||
struct diskpart *pp = &du->part[i];
|
||||
|
||||
if (i == part || i == RAWPART)
|
||||
continue;
|
||||
|
||||
if (pp->dp_offset + pp->dp_size <= start ||
|
||||
pp->dp_offset >= end)
|
||||
continue;
|
||||
|
||||
if (du->openpart & (1 << i))
|
||||
printf("sd%d%c: overlaps open partition (sd%d%c)\n",
|
||||
unit, part + 'a' - 1,
|
||||
unit, pp - du->part + 'a' - 1);
|
||||
}
|
||||
}
|
||||
du->openpart |= mask;
|
||||
//printf("--- %s: OK\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sdopen(int unit, int flags, int mode)
|
||||
int sdclose(dev_t dev, int mode, int flag)
|
||||
{
|
||||
DEBUG("sd%d: open\n",unit);
|
||||
int unit = sdunit(dev);
|
||||
int part = sdpart(dev);
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
if (unit >= NSD || part > NPARTITIONS)
|
||||
return ENODEV;
|
||||
|
||||
du->openpart &= ~(1 << part);
|
||||
if (du->openpart == 0) {
|
||||
/* All partitions closed.
|
||||
* Release the SD card. */
|
||||
sd_release(unit);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get disk size in kbytes.
|
||||
* Return nonzero if successful.
|
||||
*/
|
||||
daddr_t sdsize(dev_t dev)
|
||||
{
|
||||
int unit = sdunit(dev);
|
||||
int part = sdpart(dev);
|
||||
struct disk *du = &sddrives[unit];
|
||||
|
||||
if (unit >= NSD || part > NPARTITIONS || du->openpart == 0)
|
||||
return 0;
|
||||
|
||||
return du->part[part].dp_size;
|
||||
}
|
||||
|
||||
void sdstrategy(struct buf *bp)
|
||||
{
|
||||
int unit = sdunit(bp->b_dev);
|
||||
struct disk *du = &sddrives[unit];
|
||||
int offset = bp->b_blkno;
|
||||
int s;
|
||||
|
||||
/*
|
||||
* Determine the size of the transfer, and make sure it is
|
||||
* within the boundaries of the partition.
|
||||
*/
|
||||
struct diskpart *p = &du->part[sdpart(bp->b_dev)];
|
||||
long nblk = btod(bp->b_bcount);
|
||||
|
||||
offset += p->dp_offset >> 1;
|
||||
//printf("--- %s: sdpart=%u, offset=%u, psize=%u, nblk=%u\n", __func__, sdpart(bp->b_dev), offset, p->dp_size, nblk);
|
||||
if (offset == 0 &&
|
||||
! (bp->b_flags & B_READ) && ! du->label_writable)
|
||||
{
|
||||
/* Write to partition table not allowed. */
|
||||
bp->b_error = EROFS;
|
||||
bad: bp->b_flags |= B_ERROR;
|
||||
biodone(bp);
|
||||
//printf("--- %s: error\n", __func__);
|
||||
return;
|
||||
}
|
||||
if (bp->b_blkno + nblk > p->dp_size) {
|
||||
/* if exactly at end of disk, return an EOF */
|
||||
if (bp->b_blkno == p->dp_size) {
|
||||
bp->b_resid = bp->b_bcount;
|
||||
biodone(bp);
|
||||
//printf("--- %s: done EOF\n", __func__);
|
||||
return;
|
||||
}
|
||||
/* or truncate if part of it fits */
|
||||
nblk = p->dp_size - bp->b_blkno;
|
||||
if (nblk <= 0) {
|
||||
bp->b_error = EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
bp->b_bcount = nblk << DEV_BSHIFT;
|
||||
}
|
||||
|
||||
if (bp->b_dev == swapdev) {
|
||||
led_control(LED_SWAP, 1);
|
||||
} else {
|
||||
led_control(LED_DISK, 1);
|
||||
}
|
||||
|
||||
s = splbio();
|
||||
#ifdef UCB_METER
|
||||
if (du->dkindex >= 0) {
|
||||
dk_busy |= 1 << du->dkindex;
|
||||
dk_xfer[du->dkindex]++;
|
||||
dk_bytes[du->dkindex] += bp->b_bcount;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (bp->b_flags & B_READ) {
|
||||
card_read(unit, offset, bp->b_addr, bp->b_bcount);
|
||||
} else {
|
||||
card_write(unit, offset, bp->b_addr, bp->b_bcount);
|
||||
}
|
||||
|
||||
biodone(bp);
|
||||
if (bp->b_dev == swapdev) {
|
||||
led_control(LED_SWAP, 0);
|
||||
} else {
|
||||
led_control(LED_DISK, 0);
|
||||
}
|
||||
#ifdef UCB_METER
|
||||
if (du->dkindex >= 0)
|
||||
dk_busy &= ~(1 << du->dkindex);
|
||||
#endif
|
||||
splx(s);
|
||||
//printf("--- %s: OK\n", __func__);
|
||||
}
|
||||
|
||||
int sdioctl(dev_t dev, u_int cmd, caddr_t addr, int flag)
|
||||
{
|
||||
int unit = sdunit(dev);
|
||||
int part = sdpart(dev);
|
||||
struct diskpart *dp;
|
||||
int i, error = 0;
|
||||
|
||||
switch (cmd) {
|
||||
|
||||
case DIOCGETMEDIASIZE:
|
||||
/* Get disk size in kbytes. */
|
||||
dp = &sddrives[unit].part[part];
|
||||
*(int*) addr = dp->dp_size;
|
||||
break;
|
||||
|
||||
case DIOCREINIT:
|
||||
for (i=0; i<=NPARTITIONS; i++)
|
||||
bflush(makedev(major(dev), i));
|
||||
sd_setup(unit);
|
||||
break;
|
||||
|
||||
case DIOCGETPART:
|
||||
/* Get partition table entry. */
|
||||
dp = &sddrives[unit].part[part];
|
||||
//printf("--- %s: DIOCGETPART unit = %d, part = %d, type = %u, size = %u\n", __func__, unit, part, dp->dp_type, dp->dp_size);
|
||||
*(struct diskpart*) addr = *dp;
|
||||
break;
|
||||
|
||||
default:
|
||||
error = EINVAL;
|
||||
break;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Test to see if device is present.
|
||||
* Return true if found and initialized ok.
|
||||
*/
|
||||
static int
|
||||
sdprobe(config)
|
||||
sd_probe(config)
|
||||
struct conf_device *config;
|
||||
{
|
||||
int unit = config->dev_unit;
|
||||
int cs = config->dev_pins[0];
|
||||
struct spiio *io = &sd_io[unit];
|
||||
struct spiio *io = &sddrives[unit].spiio;
|
||||
|
||||
if (unit < 0 || unit >= NSD)
|
||||
return 0;
|
||||
@@ -637,29 +893,25 @@ sdprobe(config)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef SD0_ENA_PORT
|
||||
if (unit == 0) {
|
||||
/* Enable SD0 phy - pin is assumed to be active low */
|
||||
TRIS_CLR(SD0_ENA_PORT) = 1 << SD0_ENA_PIN;
|
||||
LAT_CLR(SD0_ENA_PORT) = 1 << SD0_ENA_PIN;
|
||||
udelay (1000);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SD1_ENA_PORT
|
||||
if (unit == 1) {
|
||||
/* Enable SD1 phy - pin is assumed to be active low */
|
||||
TRIS_CLR(SD1_ENA_PORT) = 1 << SD1_ENA_PIN;
|
||||
LAT_CLR(SD1_ENA_PORT) = 1 << SD1_ENA_PIN;
|
||||
udelay (1000);
|
||||
}
|
||||
#endif
|
||||
/* Disable power to the SD card. */
|
||||
sd_release(unit);
|
||||
|
||||
spi_brg(io, SD0_MHZ * 1000);
|
||||
spi_set(io, PIC32_SPICON_CKE);
|
||||
|
||||
#ifdef UCB_METER
|
||||
dk_alloc(&sddrives[unit].dkindex, 1, sddevs[unit].devname);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct driver sddriver = {
|
||||
"sd", sdprobe,
|
||||
"sd", sd_probe,
|
||||
};
|
||||
|
||||
#if 0
|
||||
//TODO:
|
||||
|
||||
sdclose,
|
||||
|
||||
#endif
|
||||
14
sys/pic32/sd.h
Normal file
14
sys/pic32/sd.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef _SD_H
|
||||
#define _SD_H
|
||||
|
||||
#ifdef KERNEL
|
||||
extern int sdopen(dev_t dev, int flag, int mode);
|
||||
extern int sdclose(dev_t dev, int flag, int mode);
|
||||
extern daddr_t sdsize(dev_t dev);
|
||||
extern void sdstrategy(register struct buf *bp);
|
||||
extern int sdioctl (dev_t dev, register u_int cmd, caddr_t addr, int flag);
|
||||
|
||||
extern const struct devspec sddevs[];
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,9 +92,9 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c $S/pic32/usb_device.c \
|
||||
$S/pic32/usb_function_cdc.c $S/pic32/usb_uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -58,15 +58,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -78,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -92,7 +92,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -224,9 +224,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +335,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/map.h>
|
||||
#include <sys/swap.h>
|
||||
#include <sys/rdisk.h>
|
||||
#include <sys/disk.h>
|
||||
|
||||
#ifndef NTMP
|
||||
#define NTMP 3
|
||||
@@ -210,7 +210,7 @@ int swcioctl (dev_t dev, register u_int cmd, caddr_t addr, int flag)
|
||||
}
|
||||
break;
|
||||
|
||||
case RDGETMEDIASIZE:
|
||||
case DIOCGETMEDIASIZE:
|
||||
*uival = swsize(dev);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -61,15 +61,15 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
usb_device.o usb_function_cdc.o usb_uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o usb_device.o \
|
||||
usb_function_cdc.o usb_uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -81,13 +81,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -95,7 +95,7 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/usb_device.c $S/pic32/usb_function_cdc.c \
|
||||
$S/pic32/usb_uart.c swapunix.c
|
||||
|
||||
@@ -227,9 +227,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -341,7 +338,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
@@ -59,15 +59,14 @@ OBJS = exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o \
|
||||
init_main.o init_sysent.o kern_clock.o kern_descrip.o \
|
||||
kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o \
|
||||
kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o \
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o rdisk.o \
|
||||
subr_prf.o subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o \
|
||||
sys_process.o syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o \
|
||||
ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o \
|
||||
ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o \
|
||||
ufs_syscalls2.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o \
|
||||
clock.o cons.o devsw.o exception.o machdep.o mem.o signal.o \
|
||||
swap.o sysctl.o adc.o gpio.o pwm.o rd_sd.o spi.o spi_bus.o \
|
||||
uart.o
|
||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o subr_prf.o \
|
||||
subr_rmap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o \
|
||||
syscalls.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||
ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o \
|
||||
ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o \
|
||||
vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o clock.o cons.o devsw.o \
|
||||
exception.o machdep.o mem.o signal.o swap.o sysctl.o adc.o \
|
||||
gpio.o pwm.o sd.o spi.o spi_bus.o uart.o
|
||||
|
||||
CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/exec_script.c $S/kernel/exec_subr.c \
|
||||
@@ -79,13 +78,13 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/kernel/kern_prot2.c $S/kernel/kern_resource.c \
|
||||
$S/kernel/kern_sig.c $S/kernel/kern_sig2.c $S/kernel/kern_subr.c \
|
||||
$S/kernel/kern_synch.c $S/kernel/kern_sysctl.c \
|
||||
$S/kernel/kern_time.c $S/kernel/rdisk.c $S/kernel/subr_prf.c \
|
||||
$S/kernel/subr_rmap.c $S/kernel/sys_generic.c \
|
||||
$S/kernel/sys_inode.c $S/kernel/sys_pipe.c \
|
||||
$S/kernel/sys_process.c $S/kernel/syscalls.c $S/kernel/tty.c \
|
||||
$S/kernel/tty_subr.c $S/kernel/tty_tty.c $S/kernel/ufs_alloc.c \
|
||||
$S/kernel/ufs_bio.c $S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c \
|
||||
$S/kernel/ufs_fio.c $S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/kern_time.c $S/kernel/subr_prf.c $S/kernel/subr_rmap.c \
|
||||
$S/kernel/sys_generic.c $S/kernel/sys_inode.c \
|
||||
$S/kernel/sys_pipe.c $S/kernel/sys_process.c \
|
||||
$S/kernel/syscalls.c $S/kernel/tty.c $S/kernel/tty_subr.c \
|
||||
$S/kernel/tty_tty.c $S/kernel/ufs_alloc.c $S/kernel/ufs_bio.c \
|
||||
$S/kernel/ufs_bmap.c $S/kernel/ufs_dsort.c $S/kernel/ufs_fio.c \
|
||||
$S/kernel/ufs_inode.c $S/kernel/ufs_mount.c \
|
||||
$S/kernel/ufs_namei.c $S/kernel/ufs_subr.c \
|
||||
$S/kernel/ufs_syscalls.c $S/kernel/ufs_syscalls2.c \
|
||||
$S/kernel/vfs_vnops.c $S/kernel/vm_sched.c $S/kernel/vm_swap.c \
|
||||
@@ -93,8 +92,8 @@ CFILES = $S/kernel/exec_aout.c $S/kernel/exec_conf.c $S/kernel/exec_elf.c \
|
||||
$S/pic32/devsw.c $S/pic32/exception.c $S/pic32/machdep.c \
|
||||
$S/pic32/mem.c $S/pic32/signal.c $S/pic32/swap.c \
|
||||
$S/pic32/sysctl.c $S/pic32/adc.c $S/pic32/gpio.c $S/pic32/pwm.c \
|
||||
$S/pic32/rd_sd.c $S/pic32/spi.c $S/pic32/spi_bus.c \
|
||||
$S/pic32/uart.c swapunix.c
|
||||
$S/pic32/sd.c $S/pic32/spi.c $S/pic32/spi_bus.c $S/pic32/uart.c \
|
||||
swapunix.c
|
||||
|
||||
# load lines for config "xxx" will be emitted as:
|
||||
# xxx: ${SYSTEM_DEP} swapxxx.o
|
||||
@@ -224,9 +223,6 @@ kern_sysctl.o: $S/kernel/kern_sysctl.c
|
||||
kern_time.o: $S/kernel/kern_time.c
|
||||
${COMPILE_C}
|
||||
|
||||
rdisk.o: $S/kernel/rdisk.c
|
||||
${COMPILE_C}
|
||||
|
||||
subr_prf.o: $S/kernel/subr_prf.c
|
||||
${COMPILE_C}
|
||||
|
||||
@@ -338,7 +334,7 @@ gpio.o: $S/pic32/gpio.c
|
||||
pwm.o: $S/pic32/pwm.c
|
||||
${COMPILE_C}
|
||||
|
||||
rd_sd.o: $S/pic32/rd_sd.c
|
||||
sd.o: $S/pic32/sd.c
|
||||
${COMPILE_C}
|
||||
|
||||
spi.o: $S/pic32/spi.c
|
||||
|
||||
Reference in New Issue
Block a user