Annotation of sys/arch/armish/stand/boot/dev_armish.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: dev_armish.c,v 1.1 2006/07/29 15:01:49 kettenis Exp $ */
2:
3: /*
4: * Copyright (c) 2006 Mark Kettenis
5: *
6: * Permission to use, copy, modify, and distribute this software for any
7: * purpose with or without fee is hereby granted, provided that the above
8: * copyright notice and this permission notice appear in all copies.
9: *
10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17: */
18:
19: #include <sys/param.h>
20: #include <dev/cons.h>
21:
22: #include "libsa.h"
23:
24: const char cdevs[][4] = {
25: "cn", "", "", "", "", "", "", "",
26: "", "", "", "", "com"
27: };
28: const int ncdevs = NENTS(cdevs);
29:
30: void
31: devboot(dev_t dev, char *p)
32: {
33: strlcpy(p, "wd0a", 5);
34: }
35:
36: int
37: cnspeed(dev_t dev, int sp)
38: {
39: return CONSPEED;
40: }
41:
42: int pch_pos;
43:
44: void
45: putchar(c)
46: int c;
47: {
48: switch(c) {
49: case '\177': /* DEL erases */
50: cnputc('\b');
51: cnputc(' ');
52: case '\b':
53: cnputc('\b');
54: if (pch_pos)
55: pch_pos--;
56: break;
57: case '\t':
58: do
59: cnputc(' ');
60: while(++pch_pos % 8);
61: break;
62: case '\n':
63: case '\r':
64: cnputc(c);
65: pch_pos=0;
66: break;
67: default:
68: cnputc(c);
69: pch_pos++;
70: break;
71: }
72: }
73:
74: int
75: getchar()
76: {
77: int c = cngetc();
78:
79: if (c == '\r')
80: c = '\n';
81:
82: if ((c < ' ' && c != '\n') || c == '\177')
83: return(c);
84:
85: putchar(c);
86:
87: return(c);
88: }
89:
90: char ttyname_buf[8];
91:
92: char *
93: ttyname(int fd)
94: {
95: snprintf(ttyname_buf, sizeof ttyname_buf, "%s%d",
96: cdevs[major(cn_tab->cn_dev)], minor(cn_tab->cn_dev));
97:
98: return ttyname_buf;
99: }
100:
101: dev_t
102: ttydev(char *name)
103: {
104: int i, unit = -1;
105: char *no = name + strlen(name) - 1;
106:
107: while (no >= name && *no >= '0' && *no <= '9')
108: unit = (unit < 0 ? 0 : (unit * 10)) + *no-- - '0';
109: if (no < name || unit < 0)
110: return NODEV;
111: for (i = 0; i < ncdevs; i++)
112: if (strncmp(name, cdevs[i], no - name + 1) == 0)
113: return (makedev(i, unit));
114: return NODEV;
115: }
CVSweb