viridis.git
5 months agoFix high interrupt ISRs master
Jack Miller [Thu, 11 Apr 2019 22:57:21 +0000 (17:57 -0500)]
Fix high interrupt ISRs

Backport from DREX. We rely on base ISRs all being the same size but
since we push the interrupt vector, pushing a constant >= 128 is a
longer instruction. So bump ISR_SIZE to 12 and nop pad the lower ISRs.

5 months agoDetect ACPI 2.0 RSDP as well
Jack Miller [Thu, 11 Apr 2019 22:53:43 +0000 (17:53 -0500)]
Detect ACPI 2.0 RSDP as well

Newer versions share a separate GUID from previous ones. Fortunately it
looks like the table parsing hasn't changed. This gets CPUs detected on
modern hardware.

5 months agoFix compilation with newer GCC
Jack Miller [Thu, 11 Apr 2019 22:52:40 +0000 (17:52 -0500)]
Fix compilation with newer GCC

Looks like -fPIC and -fstack-protector became default and are
incompatible here. Explicitly disable these features.

5 months agoapic: Minor cleanup
Jack Miller [Fri, 7 Apr 2017 17:56:05 +0000 (12:56 -0500)]
apic: Minor cleanup

5 months agoFix reversed interrupt vector name
Jack Miller [Fri, 7 Apr 2017 17:40:47 +0000 (12:40 -0500)]
Fix reversed interrupt vector name

5 months agoobjcache: Fix free(NULL) and realloc()
Jack Miller [Sat, 18 Feb 2017 02:24:19 +0000 (20:24 -0600)]
objcache: Fix free(NULL) and realloc()

5 months agotsc: Downgrade failed calibration to a warning
Jack Miller [Sat, 18 Feb 2017 01:06:48 +0000 (19:06 -0600)]
tsc: Downgrade failed calibration to a warning

My Carrizo based APU fails this quick calibrate 90% of the time, Linux
falls back on HPET but since nothing really *requires* the TSC to be
calibrated yet and I don't have a desire to touch HPET (yet), just print
a warning.

5 months agoirq: Fix prints, ignore spurious irq 15
Jack Miller [Sat, 18 Feb 2017 01:01:17 +0000 (19:01 -0600)]
irq: Fix prints, ignore spurious irq 15

5 months agomm: Fix alloc to physical bad page retry
Jack Miller [Fri, 17 Feb 2017 23:30:27 +0000 (17:30 -0600)]
mm: Fix alloc to physical bad page retry

5 months agomm: Correct page_alloc test
Jack Miller [Fri, 17 Feb 2017 23:11:06 +0000 (17:11 -0600)]
mm: Correct page_alloc test

Since we reversed the order of the various lists, all of these rigid
assumptions broke.

2 years agovua: Remove vua =P
Jack Miller [Sat, 17 Dec 2016 23:45:22 +0000 (17:45 -0600)]
vua: Remove vua =P

I imagine some of this code will return in some form, but for now I'm
wiping the slate clean to start with a torn up, assimilated TCC codebase
that can generate assembly in memory before I spend a lot of time
customizing it.

2 years agotmp
Jack Miller [Sat, 17 Dec 2016 23:42:10 +0000 (17:42 -0600)]
tmp

3 years agovua: parser_state_t -> parser_t
Jack Miller [Wed, 21 Sep 2016 01:10:41 +0000 (20:10 -0500)]
vua: parser_state_t -> parser_t

More concise, but also less confusing around vua_state_t

3 years agoEmbed ISRs at known address
Jack Miller [Tue, 20 Sep 2016 20:25:04 +0000 (15:25 -0500)]
Embed ISRs at known address

Rather than fixing up the IDT entries at runtime, put the ISRs into
their own section at a known address and generate the IDT entries at
compile time.

This also tightens the "early" part of the kernel (grub sig, .text_early
section) to 2k although it's currently less than half of that.

The price of this change is that we don't have a working IDT until we're
in long mode, but we haven't ever had valid 32-bit ISRs outside of the
realmode stub, so no loss there.

3 years agoSimplify EFI stub generation
Jack Miller [Tue, 20 Sep 2016 05:42:30 +0000 (00:42 -0500)]
Simplify EFI stub generation

TIL about ld -R with which another binary can be used as a symbol
reference. This lets us directly embed the proper information in the
header and directly reference kernel memory addresses in the EFI stub,
which completely obviates the need for the fixup_stub* shenanigans.

Also migrates the stub code to gettin processed by cpp.

3 years agoFix fixup_stub.sh leaving trash
Jack Miller [Mon, 19 Sep 2016 23:44:44 +0000 (18:44 -0500)]
Fix fixup_stub.sh leaving trash

3 years agoFix interrupts
Jack Miller [Mon, 19 Sep 2016 23:31:18 +0000 (18:31 -0500)]
Fix interrupts

Some of this is NASM -> as breakage, but I broke the IDT entries at some
point.

3 years agoMass convert NASM -> GNU as
Jack Miller [Mon, 19 Sep 2016 20:41:52 +0000 (15:41 -0500)]
Mass convert NASM -> GNU as

I made the choice to use NASM back when this was a toy project, but now
I'm a bit more concerned with portability, and the amount of work it
would take to self-host. Having one consistent assembler across
platforms is desirable... even if the assembly is platform specific.

This is a bit prospective since the kernel only supports x64 anyway, but
I'm about to start writing a bunch of assembly for the Vua VM, so I
figured if I'm going to shuffle assemblers, now is a better time than a
few years down the road when it's even more of an ordeal.

For the record, I'm still not a fan of AT&T syntax for assembly, but I
decided to go with it. Partially because of consistency with Linux, and
therefore a swath of developers that touch x64 assembly regularly,
partially because of consistency with the inline assembly in Viridis
already, and partially because some of the conventions have grown on me
(like movq instead of mov qword)

In fact, to my surprise, the thing that pissed me off the most in this
port was as' weirdness a tool, rather than its conventions.

I couldn't, for example, get the ISR macro to properly generate named
labels correctly when called with a counter variable instead of a plain
number because (I'm assuming) the labels don't get further expanded
after they're emitted.

Or how I don't think there's a symbol for the top of the file's position
(like NASM's $$) which forces you to use .org instead of .fill like
TIMES.

Or how as can't generate binaries directly, like NASM can, which forces
you to pass object files through ld which, for some reason, still cares
about finding a _start symbol even though that's completely useless
information for binary output.

tl;dr NASM is a much better human facing assembler than as, it's too bad
it only supports a single platform and isn't integrated tightly with my
C compiler =/

3 years agovua: Improve bcstack windowing
Jack Miller [Sun, 18 Sep 2016 02:43:27 +0000 (21:43 -0500)]
vua: Improve bcstack windowing

This is not only better memory use, but also properly separates the
bytecode of nested function declarations which is more correct and
simplifies dumping the resulting prototypes.

3 years agovua: Primitive function call support
Jack Miller [Sat, 17 Sep 2016 21:03:06 +0000 (16:03 -0500)]
vua: Primitive function call support

Mostly untested, but can generate a call instruction.

3 years agovua: Update some text artifacts
Jack Miller [Sat, 17 Sep 2016 19:20:01 +0000 (14:20 -0500)]
vua: Update some text artifacts

- TODO: Note table needs some work still

- LUADIFF: A bit of text describing how Vua differs (or will differ)
from Lua / LuaJIT.

3 years agovua: Actually resolve upvalues to registers + flags
Jack Miller [Sat, 17 Sep 2016 18:33:15 +0000 (13:33 -0500)]
vua: Actually resolve upvalues to registers + flags

3 years agovua: Add A part hints, and UV hints to bc_dump
Jack Miller [Sat, 17 Sep 2016 18:32:55 +0000 (13:32 -0500)]
vua: Add A part hints, and UV hints to bc_dump

3 years agovua: Track variable writes
Jack Miller [Sat, 17 Sep 2016 18:31:47 +0000 (13:31 -0500)]
vua: Track variable writes

3 years agovua: Expand USET generation for all types
Jack Miller [Sat, 17 Sep 2016 17:33:35 +0000 (12:33 -0500)]
vua: Expand USET generation for all types

3 years agovua: Fix bc_dump for nested prototypes
Jack Miller [Fri, 16 Sep 2016 22:25:39 +0000 (17:25 -0500)]
vua: Fix bc_dump for nested prototypes

Only print top level instructions and recurse for top-level function
definitions. This keeps us from double printing nested functions.

3 years agovua: WIP: More UCLO handling, return fixups
Jack Miller [Fri, 16 Sep 2016 20:04:30 +0000 (15:04 -0500)]
vua: WIP: More UCLO handling, return fixups

- Now ensure that there's a return instruction
- Scopes with upvalues properly marked
- UCLO on ending scopes with upvalues
- UCLO on all returns from functions with upvalues

3 years agovua: Implement return
Jack Miller [Thu, 15 Sep 2016 21:06:25 +0000 (16:06 -0500)]
vua: Implement return

This will generate all of the various return instructions.

Still need to enforce that returns exist, and deal with stuff like tail
calls, but since we don't even have normal function calls, that's future
stuff.

3 years agovua: More complete prototype generation
Jack Miller [Thu, 15 Sep 2016 19:43:18 +0000 (14:43 -0500)]
vua: More complete prototype generation

- Prototype is dynamically sized
- Most fields filled in
- BC copied
- Constant lookup tables now filled in
- Upvalues are copied, but not fixed up yet

3 years agovua: Allow arbitrary ptrs as tab keys
Jack Miller [Thu, 15 Sep 2016 19:17:52 +0000 (14:17 -0500)]
vua: Allow arbitrary ptrs as tab keys

This lets us store prototypes

3 years agovua: WIP better uvmap / uvtmp handling
Jack Miller [Mon, 5 Sep 2016 22:44:03 +0000 (17:44 -0500)]
vua: WIP better uvmap / uvtmp handling

This has been compile tested at most.

3 years agovua: WIP basic function machinery
Jack Miller [Mon, 5 Sep 2016 01:32:50 +0000 (20:32 -0500)]
vua: WIP basic function machinery

Create proto TV type, parse function and parameter list, actually
generate FUNCV, FNEW prototype and assignment.

Still need to actually fill in prototype and do various fixups (like
making sure there's a RET) but overall a good start.

3 years agovua: Drop redundant arg to newconst
Jack Miller [Sun, 4 Sep 2016 23:29:00 +0000 (18:29 -0500)]
vua: Drop redundant arg to newconst

3 years agovua: Bias keywords in global function constant table
Jack Miller [Sun, 4 Sep 2016 21:04:16 +0000 (16:04 -0500)]
vua: Bias keywords in global function constant table

This removes the requirement to have an explicit function scope above
the program global scope.

3 years agovua: Export new const, reg reserve
Jack Miller [Sun, 4 Sep 2016 21:03:13 +0000 (16:03 -0500)]
vua: Export new const, reg reserve

These are useful to call from the parser for function and parameter list
parsing.

3 years agovua: End scopes
Jack Miller [Fri, 2 Sep 2016 02:14:40 +0000 (21:14 -0500)]
vua: End scopes

Still need to close upvalues among other things, but for now we can at
least detect when local variables have fallen out of scope and reuse
their registers.

3 years agovua: Implement register free
Jack Miller [Thu, 1 Sep 2016 22:45:14 +0000 (17:45 -0500)]
vua: Implement register free

Still doesn't actually *work* because scopes never end, but that's
coming up next.

3 years agovua: Local variables, first pass
Jack Miller [Sat, 27 Aug 2016 22:03:02 +0000 (17:03 -0500)]
vua: Local variables, first pass

Upvalues need work, and obviously the register allocator doesn't ever
free regs yet, but this gets the basic machinery for looking up
variables and dealing with VLOCAL.

3 years agovua lexer: Don't increment line until next token lexed
Jack Miller [Sat, 27 Aug 2016 18:47:55 +0000 (13:47 -0500)]
vua lexer: Don't increment line until next token lexed

Line should be the line number of the previous token lexed, not the
next. This clears up line numbers when we parse to the end of the line
before we generate bytecode.

3 years agoobjcache: Actually bump allocate
Jack Miller [Sat, 27 Aug 2016 17:00:38 +0000 (12:00 -0500)]
objcache: Actually bump allocate

The intention of this data structure was always to be high performance,
but of course early on stability is more important so it's been acting
as a glorified bitmap. However, now that we're using objcache in our
interpreter/compiler, it's rather important to be quick.

I added the TSC support to get a better idea on the performance, and
still need to characterize non-sequential, and freeing BUT preliminary
numbers:

bitmap objcache: 100000 sequential allocs in 145 seconds
bump objcache:   100000 sequential allocs in 92 milliseconds

Which isn't too surprising considering the bitmap objcache is worse than
the worst case of the bump objcache implementation, but nonetheless a
1500x speedup is nice.

3 years agokernel: Primitive TSC support
Jack Miller [Thu, 25 Aug 2016 01:59:53 +0000 (20:59 -0500)]
kernel: Primitive TSC support

Divine the kHz rate of the TSC thanks to the same quick PIT based logic
Linux uses.

I didn't really want to spend much time poking the PIT, in favor of the
APIC timer, but it's pretty much the only device short of full HPET
support to have a constant, known period to base wall time calculations
on.

Remains to be seen how accurate this is (perhaps I'll port the "slow"
logic later) but it passes the eye test for now.

3 years agoboot: Port accessors and beep... which is more like tone.
Jack Miller [Thu, 25 Aug 2016 00:47:47 +0000 (19:47 -0500)]
boot: Port accessors and beep... which is more like tone.

Had this patch lying around for awhile to debug booting on real
hardware, particularly before Viridis could do EFI console. Never had a
reason to commit it, but it includes cribbed port helpers that are
useful to manipulate the PIT for TSC calibration... which incidentally
will help fixing beep to not be so annoying too.

3 years agovua: Multi-assignment, first pass
Jack Miller [Mon, 22 Aug 2016 06:11:45 +0000 (01:11 -0500)]
vua: Multi-assignment, first pass

3 years agovua: Window func->bcbase into overall parser->bcstack
Jack Miller [Sun, 21 Aug 2016 22:27:40 +0000 (17:27 -0500)]
vua: Window func->bcbase into overall parser->bcstack

In prep for function calls and eventually turning this output into
something resembling a compact binary, group the bytecode in a single
contiguous allocation.

3 years agovua: Properly record instruction line #s, use in BC dump
Jack Miller [Sun, 21 Aug 2016 21:20:35 +0000 (16:20 -0500)]
vua: Properly record instruction line #s, use in BC dump

3 years agovua: Make vua_parse.c adhere to __ naming convention
Jack Miller [Sun, 21 Aug 2016 20:55:45 +0000 (15:55 -0500)]
vua: Make vua_parse.c adhere to __ naming convention

3 years agovua: Make vua_lex.c adhere to __ naming convention
Jack Miller [Sun, 21 Aug 2016 20:29:24 +0000 (15:29 -0500)]
vua: Make vua_lex.c adhere to __ naming convention

3 years agovua: Make vua_bc.c adhere to __ naming convention
Jack Miller [Sun, 21 Aug 2016 20:12:24 +0000 (15:12 -0500)]
vua: Make vua_bc.c adhere to __ naming convention

i.e. for internal functions: static, no file prefix, __ leader

3 years agovua: Parser now passed to bytecode functions
Jack Miller [Sun, 21 Aug 2016 19:12:59 +0000 (14:12 -0500)]
vua: Parser now passed to bytecode functions

This is a rather invasive change as I wanted to keep func_t as the
bridge between parser and bytecode generation (along with expr_t) but
there are too many cases that require information outside of the
function's scope.

In particular, some local variable information makes sense to store
above function level because multiple nested functions may change the
variable stack and lower functions/scopes can make upvalues to previous
variables. Storing this info at the function level just complicates
lookups (having to iterate through nested function objects) and forces
us to store function information along with an index for every upvalue.

This also solves some other annoyances, like the BC dump couldn't access
lexer information to split the output based on input line number

3 years agovua: Actually check consumed tokens
Jack Miller [Sun, 21 Aug 2016 17:33:13 +0000 (12:33 -0500)]
vua: Actually check consumed tokens

3 years agovua: Re-insert LJ STATIC_ASSERTS for bytecode relationships
Jack Miller [Sun, 21 Aug 2016 04:20:47 +0000 (23:20 -0500)]
vua: Re-insert LJ STATIC_ASSERTS for bytecode relationships

3 years agovua: Handle comparison ops, VJMP expressions
Jack Miller [Sat, 20 Aug 2016 22:12:10 +0000 (17:12 -0500)]
vua: Handle comparison ops, VJMP expressions

3 years agovua: Add better jmp hints to BC dump
Jack Miller [Sat, 20 Aug 2016 16:52:23 +0000 (11:52 -0500)]
vua: Add better jmp hints to BC dump

Not as good as luajit's, which will actually create an arrow at the
target, but still clearer than just printing the biased D part of the
instruction.

3 years agovua: and, or, concat and setup for comparison
Jack Miller [Sun, 14 Aug 2016 22:35:44 +0000 (17:35 -0500)]
vua: and, or, concat and setup for comparison

I was intending to handle every binop in this commit just to be done
with it, but comparison is a little more complex thanks to the need to
emit specific comparison operations based on types, and register
constants, etc., where and / or are just manipulating jump lists, and
concat is a single instruction.

3 years agovua: Correct bcptr macro
Jack Miller [Sun, 14 Aug 2016 22:00:13 +0000 (17:00 -0500)]
vua: Correct bcptr macro

Technically this was working, but this corrects the type info on
dereference.

3 years agovua: Minor whitespace cleanup
Jack Miller [Sun, 14 Aug 2016 21:03:24 +0000 (16:03 -0500)]
vua: Minor whitespace cleanup

3 years agovua: Fix resolving full jump / test list
Jack Miller [Sun, 14 Aug 2016 20:59:31 +0000 (15:59 -0500)]
vua: Fix resolving full jump / test list

Have to return the head of the false_list, not the last entry.

3 years agovua: Implement branch if false
Jack Miller [Sun, 14 Aug 2016 20:19:23 +0000 (15:19 -0500)]
vua: Implement branch if false

3 years agovua: Fix jmp_append uninitialized value
Jack Miller [Sun, 14 Aug 2016 20:15:55 +0000 (15:15 -0500)]
vua: Fix jmp_append uninitialized value

3 years agovua: Booleans need to be discharged for math too
Jack Miller [Sun, 14 Aug 2016 20:10:57 +0000 (15:10 -0500)]
vua: Booleans need to be discharged for math too

If we don't discharge jump expressions here then logic like

(a or b) + (c or d)

Doesn't work. Toval should be used wherever operands can be complex
(including jumps) which is basically everywhere except while parsing the
complex expression itself.

3 years agovua: *Very* simple conditionals
Jack Miller [Sat, 13 Aug 2016 18:06:54 +0000 (13:06 -0500)]
vua: *Very* simple conditionals

This is the basic machinery for dealing with chains of JMPs and updating
their targets and corresponding test instructions.

We have some caveats

- Only simple if (no elseif/else) works

- Must be followed by another statement for the jmp to actually get
  resolved to it. In real code this will be handled by having a ret
  statement that bookends the chunk, but we're not there yet.

3 years agovua: Parse chunk stops on block closing tokens
Jack Miller [Fri, 12 Aug 2016 19:36:40 +0000 (14:36 -0500)]
vua: Parse chunk stops on block closing tokens

3 years agovua: Split out parse_{block,body,chunk}
Jack Miller [Fri, 12 Aug 2016 18:39:33 +0000 (13:39 -0500)]
vua: Split out parse_{block,body,chunk}

Block starts a new scope, body starts a new function, chunk does the
actual statement parsing generically.

3 years agovua: Correct bytecode space allocation logic
Jack Miller [Fri, 12 Aug 2016 18:05:56 +0000 (13:05 -0500)]
vua: Correct bytecode space allocation logic

Typo, add not multiply

3 years agovua: Add __expr_init
Jack Miller [Thu, 11 Aug 2016 17:37:09 +0000 (12:37 -0500)]
vua: Add __expr_init

Now that we also have the true / false jump list, we need to init more
than just the expression type.

3 years agovua: Convert top level binop parse calls to parse_expr
Jack Miller [Wed, 10 Aug 2016 18:15:56 +0000 (13:15 -0500)]
vua: Convert top level binop parse calls to parse_expr

3 years agovua: Honor grouping parens
Jack Miller [Wed, 10 Aug 2016 17:27:33 +0000 (12:27 -0500)]
vua: Honor grouping parens

3 years agovua: Don't emit constant binop LHS
Jack Miller [Tue, 9 Aug 2016 17:56:07 +0000 (12:56 -0500)]
vua: Don't emit constant binop LHS

Fixes actually getting *NV ops generating (i.e. a = 1 + b)

3 years agovua: vua_bc_const return is now unsigned, out of range on error
Jack Miller [Mon, 8 Aug 2016 02:50:22 +0000 (21:50 -0500)]
vua: vua_bc_const return is now unsigned, out of range on error

3 years agovua: More TODO notes
Jack Miller [Mon, 8 Aug 2016 02:26:35 +0000 (21:26 -0500)]
vua: More TODO notes

3 years agovua: First pass simple non-constant arithmetic
Jack Miller [Mon, 8 Aug 2016 02:22:16 +0000 (21:22 -0500)]
vua: First pass simple non-constant arithmetic

3 years agovua: Fix empty hash init on set w/ int key
Jack Miller [Sat, 6 Aug 2016 22:29:35 +0000 (17:29 -0500)]
vua: Fix empty hash init on set w/ int key

3 years agovua: Force string header down to 16 bytes
Jack Miller [Thu, 4 Aug 2016 02:09:20 +0000 (21:09 -0500)]
vua: Force string header down to 16 bytes

This means that strings are limited to 131kb (16 bit len), but we'll see
if that's a real problem.

3 years agovua: Handle simple RHS variables
Jack Miller [Thu, 4 Aug 2016 00:45:00 +0000 (19:45 -0500)]
vua: Handle simple RHS variables

3 years agovua: More consistency with advancing lexer
Jack Miller [Thu, 4 Aug 2016 00:43:25 +0000 (19:43 -0500)]
vua: More consistency with advancing lexer

3 years agoUpdate TODO
Jack Miller [Wed, 3 Aug 2016 23:42:15 +0000 (18:42 -0500)]
Update TODO

3 years agovua: Verbose lexer debug
Jack Miller [Wed, 3 Aug 2016 21:35:15 +0000 (16:35 -0500)]
vua: Verbose lexer debug

3 years agovua: Tab delimit BC dump output
Jack Miller [Wed, 3 Aug 2016 19:50:13 +0000 (14:50 -0500)]
vua: Tab delimit BC dump output

Makes it a bit cleaner and eases up on the fieldwidths.

3 years agobios: Add tab support
Jack Miller [Wed, 3 Aug 2016 19:49:21 +0000 (14:49 -0500)]
bios: Add tab support

Kept the TABSTOP definitions separate.

3 years agoefi: Add tab support
Jack Miller [Wed, 3 Aug 2016 19:45:04 +0000 (14:45 -0500)]
efi: Add tab support

3 years agostring: Simplify fieldwidth, fix overflow
Jack Miller [Wed, 3 Aug 2016 19:33:38 +0000 (14:33 -0500)]
string: Simplify fieldwidth, fix overflow

Fieldwidth is a minimum, not a maximum, and is now ignored for strings.
Also fixes an overflow in convert when digits > remaining buffer.

3 years agovua: Add primitive constant hints to BC dump
Jack Miller [Wed, 3 Aug 2016 19:00:34 +0000 (14:00 -0500)]
vua: Add primitive constant hints to BC dump

3 years agovua: Handle primitive constants (KPRI)
Jack Miller [Wed, 3 Aug 2016 18:57:39 +0000 (13:57 -0500)]
vua: Handle primitive constants (KPRI)

3 years agovua: Cleanup compiler warnings for incomplete functions
Jack Miller [Wed, 3 Aug 2016 18:40:59 +0000 (13:40 -0500)]
vua: Cleanup compiler warnings for incomplete functions

3 years agoefi: Fix reversed parens in font
Jack Miller [Wed, 3 Aug 2016 18:34:03 +0000 (13:34 -0500)]
efi: Fix reversed parens in font

3 years agovua: Add ROADMAP, update README
Jack Miller [Tue, 2 Aug 2016 22:31:17 +0000 (17:31 -0500)]
vua: Add ROADMAP, update README

Added a bit more rationale, clarify a bit of LuaJIT deviance, plot a
course for completing basic interpreter functionality.

3 years agovua: Add basic hints to BC dump output
Jack Miller [Tue, 2 Aug 2016 18:14:11 +0000 (13:14 -0500)]
vua: Add basic hints to BC dump output

Makes it so we can see what constants an instruction is referring to,
similar to LuaJIT's dump output.

3 years agovua: Properly handle lexer stringbuf
Jack Miller [Tue, 2 Aug 2016 18:12:31 +0000 (13:12 -0500)]
vua: Properly handle lexer stringbuf

When we want to keep the string (constant or name), just grab the
stringbuf and set the lexer slot to NULL. The lexer will create a new
one on lex(), or reset an unclaimed one if it wasn't needed (i.e.
numeric constants, reserved words, etc.)

3 years agovua: Add vua_str_reset
Jack Miller [Tue, 2 Aug 2016 18:11:41 +0000 (13:11 -0500)]
vua: Add vua_str_reset

Like it says, discard any data and set len back to 0

3 years agostring: Add %S to directly print Vua string object
Jack Miller [Tue, 2 Aug 2016 17:25:44 +0000 (12:25 -0500)]
string: Add %S to directly print Vua string object

Object is passed as a tracked value, like other Vua objects should be.

3 years agovua: Export vua_obj.h through <vua/vua.h>
Jack Miller [Tue, 2 Aug 2016 17:22:55 +0000 (12:22 -0500)]
vua: Export vua_obj.h through <vua/vua.h>

We shouldn't rely on Vua objects in the kernel, of course, but having
access to structs and #defines is useful. Eventually we'll have to
create mem buf objects in the kernel too.

3 years agostring: Shrink convert stack buffer
Jack Miller [Tue, 2 Aug 2016 16:49:15 +0000 (11:49 -0500)]
string: Shrink convert stack buffer

Longest decimal representation of 8 bytes is 18446744073709551615, which
is 20 digits long.

3 years agovua: Don't need sub scopes on init
Jack Miller [Mon, 1 Aug 2016 23:57:09 +0000 (18:57 -0500)]
vua: Don't need sub scopes on init

Inserted this to test the create function, but it's only for new scopes
opened inside functions.

3 years agomm: Fix page_alloc_free_phys return type + improper prev
Jack Miller [Mon, 1 Aug 2016 16:21:17 +0000 (11:21 -0500)]
mm: Fix page_alloc_free_phys return type + improper prev

3 years agomm: Fix objcache_destroy iteration
Jack Miller [Mon, 1 Aug 2016 15:29:59 +0000 (10:29 -0500)]
mm: Fix objcache_destroy iteration

3 years agotest: Make assert print information
Jack Miller [Mon, 1 Aug 2016 15:26:20 +0000 (10:26 -0500)]
test: Make assert print information

3 years agoefi: Fix vertical scroll
Jack Miller [Mon, 1 Aug 2016 05:32:22 +0000 (00:32 -0500)]
efi: Fix vertical scroll

3 years agoconsole: Discard printk too early
Jack Miller [Mon, 1 Aug 2016 05:29:29 +0000 (00:29 -0500)]
console: Discard printk too early

Mostly so we can naively printk from early places for debug.

3 years agomm: Fix objcache with inexact sizes
Jack Miller [Sun, 31 Jul 2016 21:04:58 +0000 (16:04 -0500)]
mm: Fix objcache with inexact sizes

3 years agovua: Expand dump to print ABCD parts
Jack Miller [Sun, 31 Jul 2016 19:43:59 +0000 (14:43 -0500)]
vua: Expand dump to print ABCD parts